2

我正在使用 Burn 来安装我的先决条件。其中一个先决条件要求我检查当前操作系统是否是 Windows 7 的家庭基本版。我尝试使用 MsiNTSuitePersonal 进行检查,如下所示。

<ExePackage Id="someId"
            Cache="no"
            Compressed="no"
            PerMachine="yes"
            Permanent="yes"
            Vital="yes"
            InstallCommand="/q"
            SourceFile="Redist\some.exe"
            DisplayName="Display something"
            InstallCondition="(MsiNTSuitePersonal = 1)"/>

以下是来自 WiX Burn Setup 的日志。

[093C:02E0][2013-04-01T17:14:21]i052:条件“(MsiNTSuitePersonal = 1)”评估为假。

以上条件适用于 Wix 3.7 Burn。它在 Windows 7 Home Basic 上总是给我错误的结果,而在 MSI 中使用相同的东西它可以完美地工作。请参阅以下日志。

属性(S):MsiSystemRebootPending = 1 属性(S):VersionMsi = 5.00 属性(S):VersionNT = 601 属性(S):WindowsBuild = 7600 属性(S):ServicePackLevel = 0 属性(S):ServicePackLevelMinor = 0 属性( S):MsiNTProductType = 1 属性(S):MsiNTSuitePersonal = 1

另外,我尝试使用注册表检查相同的条件,但是如何比较 InstallCondition 中的字符串?

我想做如下的事情。

<ExePackage Id="UWSOptionfor7Home"
            Cache="no"
            Compressed="no"
            PerMachine="yes"
            Permanent="yes"
            Vital="yes"
            InstallCommand="/q"
            SourceFile="Redist\UltiDev\UltiDev Web Server Setup.exe"
            DisplayName="UltiDev Web Server"
            InstallCondition="(IsWin7PersonalEdition = 'Terminal Server Personal')">
4

1 回答 1

3

我相信问题在于您指的MsiNTSuitePersonalWindows Installer内置属性。您正在寻找的 Burn 中的变量是NTSuitePersonal(注意:它没有前缀Msi,因为它不是由 Windows Installer 提供的)。

有关完整列表,请参阅刻录内置变量

于 2013-04-01T13:30:07.027 回答