2012-10-31 9 views
8

インストールプロセス中にドライバをインストールする必要があります。InnoSetupです。そのためには、私は2つの.msi 32ビット/ 64ビットのインストールファイルがあります。今Win7では、このドライバは既に組み込まれているので、もう一度インストールする必要はありません。これまでのところ、私はこれをしました:InnoSetup設定ファイルの[実行]セグメントのWindowsバージョンを確認してください

[Tasks]     
Name: "install_usb"; Description: "Install USB driver"; GroupDescription: "Drivers:"; 

[Files] 
Source: "xy\driver\*"; DestDir: "{tmp}" 

[Run]  
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_32bit.msi"""; StatusMsg: "Installing 32bit USB driver"; Check: not IsWin64(); Tasks: install_usb; Flags: skipifsilent 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_64bit.msi"""; StatusMsg: "Installing 64bit USB driver"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent 

したがって、ユーザーはドライバをインストールするかどうかを選択できます。彼がそうすることに決めたなら、正しいドライバーが走ります。これは正常に動作します。今度はWin7が動作している場合にドライバをインストールしないことを選択します。私は約OnlyBelowVersion: 6.1を読んで、私は[Run]セクションでは、このような何かをすることができないように見える:

[Run]  
... Check: IsWin64() and OnlyBelowVersion:6.1; ... 

どのように私は[Run]セクションでOnlyBelowVersion(または類似したもの)を使用できますか?

また、私はの.msiが適切なモード(64ビットシステム用の64ビットモード)で実行されていることを確認します。私は思うので、今はそうではありません。それを強制することは可能ですか? ArchitecturesInstallIn64BitMode=x64について知りましたが、どこに入れなければなりませんか?

答えて

10

パラメータはCheckステートメントでは使用できませんが、別のパラメータとして使用できます。それはあなたが正しい持っているものですので、

[Run]  
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_32bit.msi"""; OnlyBelowVersion: 6.1; StatusMsg: "Installing 32bit USB driver"; Check: not IsWin64(); Tasks: install_usb; Flags: skipifsilent 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_64bit.msi"""; OnlyBelowVersion: 6.1; StatusMsg: "Installing 64bit USB driver"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent 

はあなたの2番目の質問に、IsWin64機能は、Windowsのすべての64ビット版にTrueを返します。参照から:

この関数は、x64版のWindowsでは常にTrueを返します。

64ビットモードでInnoSetupをインストールするには、少なくともArchitecturesInstallIn64BitModeというディレクティブを指定する必要があります。使用可能な値の少なくとも1つを指定してこのディレクティブを指定すると、x86プロセッサ搭載のマシンでセットアップを実行する場合、32ビットモードで、指定したプロセッサアーキテクチャを持つマシンで64ビットモードでセットアップが実行されます。

+0

涼しい、それは完全に動作します。 2番目の質問:はい、これはx64版で真ですが、実行可能ファイルとインストーラが64ビットモードで動作することも保証されていますか? – brimborium

+0

ああ、InnoSetupインストーラ自体ではなく、64ビットシステムで 'driver_64bit.msi'インストーラだけを実行したいと思っていました。それから私は答えを更新します... – TLama

+0

まあ、ドライバは重要な部分です。しかし、この状態でインストーラ自体を含めることも難しくない場合、それは良いことです。 – brimborium

関連する問題