使用Wix,如果本地计算机的操作系统与多个有效操作系统之一匹配,我将发布一个警告对话框。我可以通过在发布标记的条件部分中放置VersionNT = 601
来执行此检查。
因为我需要检查多个操作系统和类型(服务器,域控制器等),我想在属性中存储其中一些条件,并在多个发布条件中使用这些自定义属性。
类似的东西:
<Property Id="WinServer08R2" Value="VersionNT = 601 AND MsiNTProductType = 3" />
然后使用此属性,如下所示:
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="WarningDlg">
WinServer08R2 AND Not Installed
</Publish>
...
到目前为止,这种方法或其略有变化都没有对我有用。有没有其他人尝试过这个并让它发挥作用?有人可能会建议我只是使用括号并使其工作,但这是一个简化的例子,条件很快就会失控。
提前致谢。
答案 0 :(得分:3)
Property/@Value
(以及该问题的内部文本)不是条件,它们是属性的实际值。所以你现在拥有的是一个名为WinServer08R2
的属性,其文字值为VersionNT = 601 AND MsiNTProductType = 3
。所以WinServer08R2
总是求值为true,因为它有一个值。
您应该可以通过使用Orca打开生成的MSI并查看Property
表来验证这一点。
您想要的是根据条件设置您的财产。
<SetProperty Id="WinServer08R2" Value="1">
VersionNT = 601 AND MsiNTProductType = 3
</SetProperty>
然后您只需使用WinServer08R2 = 1
或WinServer08R2
来测试该属性。
不要忘记使用Before
,After
或Sequence
属性对自定义操作进行排序。