8

でのインストール プロセス中にドライバをインストールする必要がありますInnoSetup。そのために、32 ビット/64 ビット用の 2 つの.msiインストール ファイルがあります。現在、Win7 にはこのドライバーが既に含まれているため、再度インストールする必要はありません。これまでのところ、私はこれをしました:

[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; ...

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

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

4

1 に答える 1

10

ステートメントでOnlyBelowVersionは使用できないパラメーターですが、別のパラメーターとして使用します。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 を返すので、それが正解です。参照から:

この関数は、Windows の x64 エディションでは常に True を返します。

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

于 2012-10-31T16:12:56.250 に答える