Windows 7 在InnoSetup配置文件的[Run]段中检查Windows版本

Windows 7 在InnoSetup配置文件的[Run]段中检查Windows版本,windows-7,64-bit,driver,inno-setup,Windows 7,64 Bit,Driver,Inno Setup,在安装过程中,我必须在InnoSetup中安装驱动程序。为此,我有两个32位/64位的.msi安装文件。现在在Win7中,这个驱动程序已经包含在内了,所以我不需要再安装它。到目前为止,我做到了: [Tasks] Name: "install_usb"; Description: "Install USB driver"; GroupDescription: "Drivers:"; [Files] Source: "xy\driver\*"; DestDir: "

在安装过程中,我必须在
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
因此,用户可以选择是否要安装驱动程序。如果他选择这样做,那么正确的驾驶员会运行。这个很好用。现在,如果>=Win7正在运行,我想选择不安装驱动程序。我只在以下版本阅读了
:6.1
,但我似乎无法在
[Run]
部分执行类似操作:

[Run]    
... Check: IsWin64() and OnlyBelowVersion:6.1; ...
如何在
[Run]
部分中仅使用
版本
(或类似版本)?

另外,我想确保.msi以正确的模式运行(64位系统为64位模式)。因为我认为,目前情况并非如此。有可能强制执行吗?我发现了关于
体系结构安装64bit mode=x64
,我必须把它放在哪里?

这个参数不能在语句中使用,而是作为一个单独的参数

[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
对于第二个问题,该函数在所有64位版本的Windows上都返回True,因此这就是您的正确答案。参考文献:

在x64版本的Windows上,此函数将始终返回True


要以您正确提到的64位模式运行InnoSetup安装,您至少需要指定指令。如果您使用至少一个可用值指定此指令,您的安装程序将在具有您指定的处理器体系结构的计算机上以64位模式运行,如果您在具有x86处理器的计算机上运行安装程序,则将以32位模式运行。

很酷,这很好。对于第二个问题:是的,这在x64版本中返回true,但它是否也保证可执行文件和安装程序在64位模式下运行?哦,我想您只希望
驱动程序\u 64bit.msi
安装程序在64位系统上运行,而不是InnoSetup安装程序本身。然后我会更新答案…嗯,司机是重要的部分。但是如果在这种情况下也包括安装程序本身并不困难,那么这是一件好事。我已经更新了我的答案,即使在这种情况下你是对的。如果要在64位处理器体系结构上以64位模式运行InnoSetup安装程序,请在
体系结构安装64位模式
指令中指定处理器体系结构。在x86体系结构上,安装程序将以32位模式运行。如果实际应用程序为64位,则只应使用
体系结构安装64位模式。如果只有一个组件(如驱动程序)是64位的,则应使用64位路径/注册表常量和/或
64位
标志代替特定条目。