Inno Setupを使用してアプリケーション用のインストーラを作成しています。インストーラは非常に基本的なもので、ファイルをコピーするだけです。これは非常にうまく動作し、私はそれに満足しています。インストール中にInno Setup起動ファイルを実行する(ドライバをインストールする)
私は最近、USBサポートを実装しており、そのためにIVIファンデーションからUSBドライバをインストールする必要があります。これは基本的にセットアップ処理中にどこかで起動されなければならないexeファイルです。これまでは、ユーザーはドライバを個別にインストールする必要がありましたが、それほどエレガントではありません。私の最初のアプローチはこれでした:
[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; Description: "Install USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; Description: "Install 64bit USB driver (IVI Foundation)"; Flags: postinstall skipifsilent
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: postinstall skipifsilent
これは機能しますが、ユーザーは正しいビット数を選択する必要があります。ここでの利点は、彼がそれをインストールしないことを選択できることです(この場合、アプリケーションはちょうど良いUSB機能を無視します)。私が実際に望むのは、システムのビット数を自動的に検出し、セットアッププロセスを実行することです。これは、ユーザーがインストールしないことを選択できるため、私はそれに対して何もしませんが、[Run]
セクションにある必要はありません。
私はまた、いくつかのコードを発見し、このようにそれを実行しようとした:
[Code]
procedure CurStepChanged (CurStep: TSetupStep);
var
WorkingDir: String;
ReturnCode: Integer;
begin
if (ssInstall = CurStep) then
Log('Starting driver installation');
WorkingDir := ExpandConstant ('{app}\driver');
Exec ('IviSharedComponents_2.2.1.exe', '', WorkingDir, SW_SHOW, ewWaitUntilTerminated, ReturnCode);
end;
しかし、(私は「ドライバのインストールを開始する」ログエントリを見ることができますが)これは、インストールを開始しません。私の道に何か問題がありますか?私は間違って何をしているのですか?このスクリプトを変更してビット数に応じて自動的に適切な実行ファイルを選択する方法はありますか?
EDIT:[Tasks]
エントリで提案されたソリューションを使用しました。実装は次のようになります(参考のため):
[Tasks]
Name: "install_usb"; Description: "Install USB drivers (IVI Foundation)"; GroupDescription: "External drivers:";
[Run]
Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Tasks: install_usb; Flags: skipifsilent
Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent
これは非常にうまく動作します。この場合
非常に良い、ありがとう、それは私が欲しかったものです! :) – brimborium
私の質問の最後に私の最終的な解決策( '[Tasks]'エントリを追加)も追加しました。 – brimborium
Thx、本当にタイプミス。 ;) – brimborium