我正在使用 wix3.8 为我的应用程序编写安装程序。
在安装之前,我需要检查一些机器要求,如果当前机器没有这些要求,请不要安装我的应用程序。
要求是: 1. 操作系统 - win 8.1 及更高版本。 2. CPU-HSW GT2 及更高版本。
如何在 wix 中添加对这些要求的检查? 有人可以帮我吗?
我认为你需要编写一个自定义操作来检查 CPU,但对于操作系统,你可以像这样进行检查
<Condition Message="This application is only supported on Windows 8.1, or higher.">
<![CDATA[Installed OR (VersionNT >= 603)]]>
</Condition>
要开发自定义操作,您可以参考以下文章。基本上,您需要创建执行您想要的所有检查的函数并将其公开在您的自定义操作库中。然后您可以从安装程序脚本中调用此函数。
参考:
使用内置的 Windows Installer LaunchCondition 功能:
语句以条件语句语法编写:
以下是操作系统属性值:
以下是一些示例(未经测试):
我认为您也可以使用CPU的LaunchCondition功能,检查硬件属性:http://msdn.microsoft.com/en-us/library/aa370905(v=vs.85).aspx#hardware_properties
在更现代的 Windows 版本中,由于 Microsoft 推送功能更新的频率,
VersionNT
的重要性和精确度较低。此外, WindowsBuild
属性似乎并不代表 Windows 的当前版本。在我使用 Windows 11 内部版本 22631 进行测试时,WindowsBuild
仍然是 9600,这是 是 Windows 8.1 的内部版本号。
无论这是错误还是有意为之,这里有一个可行的解决方案,可以通过从注册表读取当前 Windows 功能更新的内部版本号来进行控制:
<Property Id="OS_BUILD_NUMBER">
<RegistrySearch Id="BuildNumberSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Name="CurrentBuild" Type="raw" />
</Property>
<Launch Condition="(OS_BUILD_NUMBER >= 17134) OR Installed" Message="Your Windows version is too old for this software." />