Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix工具集-一个属性中的复合属性_Wix_Windows Installer_Wix3.7 - Fatal编程技术网

Wix工具集-一个属性中的复合属性

Wix工具集-一个属性中的复合属性,wix,windows-installer,wix3.7,Wix,Windows Installer,Wix3.7,使用Wix,如果本地计算机的操作系统与几个有效操作系统之一匹配,我将发布一个警告对话框。例如,我可以通过将VersionNT=601放入publish标记的条件部分来执行此检查 因为我需要检查多个操作系统和类型(服务器、域控制器等),所以我希望将其中一些条件存储在属性中,并在多个发布条件中使用这些自定义属性 比如: <Property Id="WinServer08R2" Value="VersionNT = 601 AND MsiNTProductType = 3" /> 然

使用Wix,如果本地计算机的操作系统与几个有效操作系统之一匹配,我将发布一个警告对话框。例如,我可以通过将
VersionNT=601
放入publish标记的条件部分来执行此检查

因为我需要检查多个操作系统和类型(服务器、域控制器等),所以我希望将其中一些条件存储在属性中,并在多个发布条件中使用这些自定义属性

比如:

<Property Id="WinServer08R2" Value="VersionNT = 601 AND MsiNTProductType = 3" />

然后使用类似以下内容的属性:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="WarningDlg">
    WinServer08R2 AND Not Installed
</Publish>
...

WinServer08R2未安装
...
到目前为止,这种方法和它的细微变化对我都不起作用。有没有其他人试过这个并让它起作用?有人可能会建议我简单地使用括号并使其工作,但这是一个简化的示例,条件很快就会失控


提前感谢。

属性/@Value
(以及相关的内部文本)不是条件,而是属性的实际值。因此,您现在拥有一个名为
WinServer08R2
的属性,其文本值为
VersionNT=601和MsiNTProductType=3
。因此
WinServer08R2
的计算结果始终为true,因为它有一个值

您应该能够通过使用Orca打开生成的MSI并查看
属性
表来验证这一点

您需要的是根据条件设置属性

<SetProperty Id="WinServer08R2" Value="1">
    VersionNT = 601 AND MsiNTProductType = 3
</SetProperty>

VersionNT=601和MsiNTProductType=3
然后您只需使用
WinServer08R2=1
WinServer08R2
测试该属性


不要忘了使用
Before
After
sequence
属性对自定义操作排序。

属性/@Value
(以及相关的内部文本)不是条件,它们是属性的实际值。因此,您现在拥有一个名为
WinServer08R2
的属性,其文本值为
VersionNT=601和MsiNTProductType=3
。因此
WinServer08R2
的计算结果始终为true,因为它有一个值

您应该能够通过使用Orca打开生成的MSI并查看
属性
表来验证这一点

您需要的是根据条件设置属性

<SetProperty Id="WinServer08R2" Value="1">
    VersionNT = 601 AND MsiNTProductType = 3
</SetProperty>

VersionNT=601和MsiNTProductType=3
然后您只需使用
WinServer08R2=1
WinServer08R2
测试该属性

不要忘记使用
序列
属性对自定义操作排序。

可能重复的