退出Inno Setup安裝是否可以從安裝程序創建的安裝程序的[code]部分的函數中退出安裝?從[code]
我對設置退出代碼並不感興趣,我想要執行的是對需求的自定義檢查,如果以前未安裝該需求,則退出安裝。
退出Inno Setup安裝是否可以從安裝程序創建的安裝程序的[code]部分的函數中退出安裝?從[code]
我對設置退出代碼並不感興趣,我想要執行的是對需求的自定義檢查,如果以前未安裝該需求,則退出安裝。
查看InnoSetup幫助中的InitializeSetup和Abort。正如科迪所說,這是可能的。如果您遇到問題,請發佈您所做的和您遇到的問題。
您的代碼部分中的某處執行檢查。對? 由於檢查結果您要退出安裝。 要執行的退出放線:
PostMessage (WizardForm.Handle, $0010, 0, 0); { quit setup, $0010=WM_CLOSE }
希望這有助於
這可以很容易地繞過使用靜音模式('/silent') – 2016-09-30 10:09:59
我做到這一點的方法是:
procedure ExitProcess(exitCode:integer);
external '[email protected] stdcall';
並使用它的方法是:
[Code]
if .... then begin
ExitProcess(0);
end;
雖然這似乎從用戶的角度來看,它留下了臨時文件。 – gogowitsch 2012-07-09 07:13:48
這個答案使用了Wizard.Close,它似乎可以避免這個問題。 http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101 2013-05-06 20:22:48
現在,如果只有我可以抑制提示,如果用戶希望退出... – 2014-02-12 17:55:07
您可以使用中止()如果您在這些事件:
InitializeSetup
InitializeWizard
CurStepChanged(ssInstall)
InitializeUninstall
CurUninstallStepChanged(usAppMutexCheck)
CurUninstallStepChanged(usUninstall)
爲了防止安裝程序運行時,當先決條件測試失敗,剛剛從InitializeSetup
返回False
。甚至在嚮導顯示之前,這將退出安裝程序。
function InitializeSetup(): Boolean;
begin
Result := True;
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
Result := False;
end;
end;
如果你需要測試的先決條件安裝啓動權之前只(即InitializeSetup
太早),您可以從CurStepChanged(ssInstall)
撥打Abort
function:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
Abort;
end;
end;
end;
雖然在這種情況下,請考慮使用PrepareToInstall
event function機制,而不是退出設置。
function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
Result := '';
if not PrerequisitesTest then
begin
Result := 'Prerequisites test failed';
end;
end;
如果你需要強制終止安裝其他任何時間,使用ExitProcess
WinAPI的呼叫:
procedure ExitProcess(uExitCode: Integer);
external '[email protected] stdcall';
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpReady then
begin
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
ExitProcess(1);
end;
end;
Result := True;
end;
雖然這是相當不安全的退出,所以用它只作爲最後的手段方法。
**是的,這是可能的。**你希望有人會寫的代碼嗎?你至少可以發佈''code''部分下已有的代碼嗎? – 2010-12-14 11:21:40
這個問題是在這裏回答的:http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101 2013-05-06 20:21:18