インストールの終了コードを設定したいのですが、こうすることで、インストールが中止された理由がわかります。InnoSetupを使用しています。
2 に答える
Inno Setup ヘルプ ドキュメントから (記事「Setup Exit Codes」から):
Inno Setup 3.0.3 以降、セットアップ プログラムは次の終了コードのいずれかを返す場合があります。
0セットアップは完了まで正常に実行されました。
1セットアップの初期化に失敗しました。
2ユーザーは、実際のインストールが開始される前にウィザードで [キャンセル] をクリックしたか、最初の [これによりインストールされます...] メッセージ ボックスで [いいえ] を選択しました。
3次のインストール フェーズに移行する準備中に致命的なエラーが発生しました (たとえば、インストール前のウィザード ページの表示から実際のインストール プロセスまで)。これは、メモリ不足や Windows リソース不足など、最も異常な状況以外では決して発生しません。
4実際のインストール プロセス中に致命的なエラーが発生しました。
注: Abort-Retry-Ignore ボックスが表示される原因となるエラーは、致命的なエラーではありません。ユーザーがこのようなメッセージ ボックスで [中止] を選択すると、終了コード
5
が返されます。5ユーザーが実際のインストール プロセス中に [キャンセル] をクリックしたか、[中止-再試行-無視] ボックスで [中止] を選択しました。
6セットアップ プロセスがデバッガーによって強制的に終了されました (IDE で実行 | 終了が使用されました)。
終了コードが であることを確認することで、セットアップが正常に実行されたかどうかを簡単に確認できます0
。さらに:
ゼロ以外の終了コードは、セットアップが完了まで実行されなかったことを示します。
より具体的に質問に答えるには、終了コード2
または5
.
Inno が を返すときにカスタムの終了コードを返したい場合0
は、次のイベント関数を定義できます。
function GetCustomSetupExitCode: Integer;
ヘルプ ドキュメントから (記事「Pascal Scripting: Event Functions」から):
function GetCustomSetupExitCode: Integer;
カスタム終了コードを返すようにセットアップに指示するには、0 以外の数値を返します。この関数は、セットアップが完了まで正常に実行され、終了コードが である場合にのみ呼び出されます
0
。
使用する:
[Code]
procedure ExitProcess(exitCode:integer);
external 'ExitProcess@kernel32.dll stdcall';
procedure SomeEventHere();
begin
if someerror then begin
ExitProcess(9); //Your custom exit code
end;
end;