bri*_*ium 8 64-bit inno-setup driver windows-7
我必须在安装过程中安装驱动程序InnoSetup
.为此我有32位/ 64位的两个.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
Run Code Online (Sandbox Code Playgroud)
因此,用户可以选择是否要安装驱动程序.如果他选择这样做,那么正确的驱动程序就会运行.这很好用.现在我想选择在> = Win7运行时不安装驱动程序.我读到了,OnlyBelowVersion: 6.1
但我似乎无法在这一[Run]
节做这样的事情:
[Run]
... Check: IsWin64() and OnlyBelowVersion:6.1; ...
Run Code Online (Sandbox Code Playgroud)
我如何OnlyBelowVersion
在该[Run]
部分中使用(或类似的东西)?
此外,我想确保.msi以正确的模式运行(64位系统的64位模式).因为我认为,现在情况并非如此.有可能强制执行吗?我发现了ArchitecturesInstallIn64BitMode=x64
,我该把它放在哪里?
TLa*_*ama 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
Run Code Online (Sandbox Code Playgroud)
对于第二个问题,该IsWin64
函数在所有64位版本的Windows上都返回True,这就是你所说的正确.来自参考:
此函数将始终在x64版本的Windows上返回True.
要以64位模式运行InnoSetup安装,您已经正确地提到,您需要至少指定该ArchitecturesInstallIn64BitMode
指令.如果您指定此指令至少包含一个可用值,则您的设置将在具有您指定的处理器体系结构的计算机上以64位模式运行,如果您在具有x86处理器的计算机上运行设置,则以32位模式运行.