使用WiX 3.6我正在尝试创建一个MSI来静音安装内部产品。
一台机器,我的安装程序工作正常,但在其他机器上,安装程序失败并显示一条错误消息,指出属性值尚未从UI阶段传递到流程的安装阶段:
此错误来自我的WiX源中的保护条款:
<Condition Message="The property SERVER must be defined on the commandline. Installation will abort.">
<![CDATA[Installed or SERVER]]>
</Condition>
为什么我的Guard子句会触发,即使我在命令行上提供了属性SERVER?
安装命令行:
msiexec /i 'C:\work\Excel.2010(x86).msi' SERVER=fsis-app-server ENVIRONMENT=Production SKIN=Black
根据我与谷歌教授协商后找到的所有内容,我所需要的只是将我的财产公开(通过使用所有大写字母)并标记Secure="yes"
:
<Property Id="SERVER"
Secure="yes"/>
我已经做到了这一点,但它仍然没有用 - 任何想法我错过了什么?
其他细节......
...我的安装程序配置为每次都作为MajorUpgrade运行。
...我正专门部署到Windows 7.在我的机器上(确实有这个问题),我有Windows Installer。 V 5.0.7601.17514
...大多数机器升级都很好,但少数(<200中的10个)因此错误而失败。我的机器是一台(有助于排除故障)。此计算机上的程序和功能下未列出以前的版本。
更新#1
非常有趣,阅读日志。在安装过程中,我的属性(例如SERVER)不会丢失其值。
如果我正在阅读正确的日志,那么之前的 MSI显示我的错误,而不是我当前正在运行的那个:
MSI(D8:D0)[13:20:19:213]:产品:Excel 2010的FSIS插件(32位)v4.7.1047.0 - 必须在命令行上定义属性SERVER。安装将中止。
我正在使用的安装程序是v4.8.9999.0,所以旧的版本号是我发生了什么的线索......虽然这与我原来的截图中的v4.5.0不匹配。
看起来我有两份工作......
...凝固这个机器的旧安装人员 ...更改安装程序以防止再次发生。
更新#2
我已经确认我的失败发生在卸载安装上。
<Condition Message="The property SERVER must be defined on the commandline. Installation will abort.">
<![CDATA[Installed or SERVER]]>
</Condition>
为什么这个保护条款会触发并中止卸载?
我认为“安装或”的目的是让它在移除产品时能够正常工作。