我可以这样做吗?
<?if ISTEST="0"?>
<?define SkyLibFolder = "Prod"?>
<?else ?>
<?define SkyLibFolder = "Test"?>
<?endif ?>
我需要一个变量FolderPath,然后在WIX中使用。
答案 0 :(得分:2)
您需要创建一个51类自定义操作来设置属性,您应该使用SetProperty Element。
<SetProperty Action="SetSkyLibFolderA" Id="SkyLibFolder" Before="InstallFiles" Value="Prod"><![CDATA[ISTEST=0]]></SetProperty>
<SetProperty Action="SetSkyLibFolderB" Id="SkyLibFolder" Before="InstallFiles" Value="Test"><![CDATA[ISTEST=1]]></SetProperty>
内部文字(xs:字符串) 确定是否已设置属性的条件。如果条件的计算结果为false,则跳过Set。
编辑:Type 51 Custom Action从格式化的文本字符串中设置属性。简单来说,51类自定义操作基本上只是赋值语句(abc =“xyz”) 在设置时 。例如,考虑您要根据目标计算机上的注册表项更改安装位置。我们需要赋值语句,因为在我们开始安装之前,安装位置是未知的。
<!-- Find install path from registry -->
<Property Id="XYZFOLDER">
<RegistrySearch Id="XyzRegistry"
Root="HKLM"
Key="SOFTWARE\MyXYZ\XyzProduct"
Name="InstallDir"
Type="raw" />
</Property>
<!-- Set the property -->
<CustomAction Id="SetXYZLocation"
Property="XyzLocation"
Value="[XYZFOLDER]xyz.exe" />
现在应该在InstallExecuteSequence中正确安排CustomAction(SetXYZLocation)。
使用SetProperty元素,自定义操作和自定义操作的计划由内部的Wix代码处理。
答案 1 :(得分:0)
是的,适用于WiX预处理器变量。 是的,对于Windows Installer属性。
目前尚不清楚应该使用哪种。
WiX产品设置生成Windows Installer程序包(MSI)。除了提供您可能选择使用的一些自定义操作(一种Windows Installer扩展)之外,WiX不参与实际安装。因此,如果您希望在安装时更改某些内容,则必须使用Windows Installer构造。