2

在我的 WIX 安装包中,我有一个包含合并模块的功能,必须有条件地安装。应使用自定义操作设置的属性来评估条件。这是我的 WXS 中的外观:

<Directory Id="INSTALLLOCATION" Name="testSetup">
    <Merge Id="mergeA" Language="1033" SourceFile="test.msm" DiskId="1" />
</Directory>

<InstallExecuteSequence>
  <Custom Action="find" Before="CostInitialize">Not Installed</Custom>
</InstallExecuteSequence>

<CustomAction Id="find" Return="check" BinaryKey="script" VBScriptCall="findA" />
<Binary Id="script" SourceFile="script.vbs" />

由于 level=0 禁用了我设置的 NOT 仅在路径存在时才安装的功能。

<Feature Id="productFeatA" Title="featA" Level="1">
  <Condition Level="0"><![CDATA[NOT pathA]]></Condition>
  <MergeRef Id="mergeA" />
</Feature>

以及简单的测试 VBS 脚本:

Function findA
     Session.Property("pathA") = "test"
End Function

因此,使用通过自定义操作设置的属性我无法使功能条件起作用。知道我在这里做错了什么吗?

4

1 回答 1

2

您的自定义操作目前仅计划在InstallExecuteSequence. 如果您的安装运行通过,InstallUISequence那么Feature仍然会启用。InstallUISequence除非您明确指定“安静地”运行安装。

幸运的是,修复很容易。添加以下内容作为 的对等体InstallExecuteSequence

<InstallUISequence>
  <Custom Action="find" Before="CostInitialize">Not Installed</Custom>
</InstallUISequence>
于 2013-05-08T14:57:16.830 回答