首页 > 解决方案 > Wix 条件错误 - 无法解析条件

问题描述

我正在尝试使用我从自定义 UI 设置的变量。我在日志中看到它设置值的位置,但我尝试过的所有条件都失败了。

这是有问题的代码:

<MsiPackage SourceFile="$(var.Recorder.Installer.TargetPath)" InstallCondition="[InstallRecorder]"
              Visible="no" EnableFeatureSelection="yes" Name="Recorder.Installer" Id="Recorder.Installer"
              />

[InstallRecorder]将字符串“1”设置为真,将“0”设置为假。

话虽如此,这就是我尝试过的:

[InstallRecorder]=1 [InstallRecorder]='1' InstallRecorder=1 'InstallRecorder'='1'

如果有人可以告诉我我做错了什么,或者提供一个很好的链接,这将非常有帮助。

此外,如果这有帮助,这是我看到的确切日志。

[1194:0AC0][2020-08-13T05:39:46]i000: Setting string variable 'InstallRecorder' to value '1'
[1194:0AC0][2020-08-13T05:39:46]i000: Starting Installation
[1194:0F64][2020-08-13T05:39:46]i200: Plan begin, 1 packages, action: Install
[1194:0F64][2020-08-13T05:39:46]e000: Error 0x8007000d: Failed to parse condition "[InstallRecorder]". Unexpected character at position 0.

标签: variableswix3.11

解决方案


在拔掉头发一天之后,我终于弄清楚我的问题是什么。

我改变了这个:

  <Variable Name="InstallRecorder" Value="0" />
  <Variable Name="InstallDataTransport" Value="0"/>

对此:

<Variable Name="InstallRecorder" bal:Overridable="yes" Type="numeric" Value="0" />
<Variable Name="InstallDataTransport" bal:Overridable="yes" Type="numeric" Value="0"/>

然后像这样访问它:

InstallCondition="InstallDataTransport = 1"

推荐阅读