私は Inno セットアップを使用してゲームの作成とインストーラーを作成しています。ユーザーにプロンプトを表示し、DirectX9 をインストールするかどうかを尋ねて (サブフォルダーに完全なインストールの directx ファイルが既にあります)、ユーザーが言う場合はそれをインストールします。はいまたはいいえ...これを行う方法がわからず、プログラミングの知識が限られています。助けてください!
2 に答える
このコードを使用して、質問と [はい/いいえ] ボタンを含むメッセージ ボックスを表示します。
// Ask the user a Yes/No question
if MsgBox('Are you sure?', mbConfirmation, MB_YESNO) = IDYES then
begin
// User clicked Yes
// Install the DirectX now... (see below)
end;
そして、DXSETUP.exeを実行(起動)するこのコード
var
ResultCode: Integer;
// Launch DXSETUP and wait for it to terminate
Exec('DXSETUP.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
DirectX ファイルをインストーラーにパックし、{tmp} ディレクトリに抽出する必要があると思います。または、CD/DVD から実行することもできます (例のように)。
高度な DXSETUP については、この質問を参照してください: Inno-setup から再配布可能な DirectX をインストールする方法は?
DX のバージョンを検出する必要がある場合は、http://www.vincenzo.net/isxkb/index.php?title=DirectX_-_How_to_detect_DirectX_version を確認してください。
エントリを使用して、[Tasks]
DX をインストール/アップグレードするかどうかを尋ねるウィザード ページの 1 つにチェックボックスを表示できます (デフォルトでチェックを入れるかどうかを選択できます)。
実際のインストールでは、最も簡単なオプションは、作成したエントリにリンクされたパラメータを持つ[Run]
エントリを使用することです。ただし、これはゲームの後にインストールされるため、発生する可能性のあるエラーをキャッチできないことに注意してください. (ただし、これは通常、この種の問題ではありません。)Tasks:
[Tasks]
もう 1 つのオプションは、でPrepareToInstall
イベント関数を使用すること[Code]
です。このためには、 と を使用する必要がありExtractTemporaryFile
ますExec
。これにより、ゲームの前にインストールされ、終了コードをチェックしてエラーを処理し、必要に応じて再起動要求を行うことができます。詳細については、Inno に含まれているサンプル スクリプトを参照してください。ただし、これはおそらく DX インストールに必要なよりも複雑です。
また、DX の Web インストーラーとフル インストーラーのどちらをバンドルするかを決定する必要があります。前者はサイズが小さいですが、インストール時にインターネット アクセスが必要です。後者の場合、インストーラーは大きくなりますが、インターネット アクセスは必要ありません。DVD からインストールする場合は、後者が最適なオプションです (その場合{src}
は、バンドルする代わりにDVD から直接実行できます[Files]
)。