inno setupで作成したインストーラの[code]セクションの関数からインストールを終了することはできますか?Inno Setupからの終了[code]
私は、終了コードの設定に興味はありません。私がやりたいことは、要件のカスタムチェックを実行し、その要件が以前にインストールされていない場合はインストールを終了することです。
inno setupで作成したインストーラの[code]セクションの関数からインストールを終了することはできますか?Inno Setupからの終了[code]
私は、終了コードの設定に興味はありません。私がやりたいことは、要件のカスタムチェックを実行し、その要件が以前にインストールされていない場合はインストールを終了することです。
InnoSetupヘルプのInitializeSetupとAbortを見てください。コーディが言ったように、それは可能です。あなたが問題を抱えているなら、あなたがやったこととあなたが持っている問題を投稿してください。
コードセクションのどこかでチェックを行います。右? このチェックの結果、インストールを終了します。終了を実行するに はラインを入れて:
PostMessage (WizardForm.Handle, $0010, 0, 0); { quit setup, $0010=WM_CLOSE }
うまくいけば、これは
これはサイレントモード( '/silent') –
を助け、私はそれを行う方法がある:
procedure ExitProcess(exitCode:integer);
external '[email protected] stdcall';
そして、それを使用する方法は次のとおりです。
[Code]
if .... then begin
ExitProcess(0);
end;
これはユーザーの観点からはうまくいくと思われますが、一時ファイルが残っています。 – gogowitsch
この回答は、この問題を回避すると思われるWizard.Closeを使用しています。 http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101
ここで、ユーザーが終了したい場合にのみプロンプトを抑制することができます。 –
Abort()あなたがこれらにいる場合は、イベント:
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']セクションの下にすでにあるコードを投稿することはできますか? –
質問はここで答えられました:http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101