Ошибка условия Wix — Не удалось проанализировать условие

#variables #wix3.11

#переменные #wix3.11

Вопрос:

Я пытаюсь использовать переменную, которую я устанавливаю из своего пользовательского интерфейса. Я вижу в журналах, где оно устанавливает значение, но все, что я пробовал, условие не выполняется.

Вот код, о котором идет речь:

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

Я устанавливаю [InstallRecorder] для строки ‘1’ значение true, а для ‘0’ значение false.

С учетом сказанного, это то, что я пробовал:

[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.
  

Ответ №1:

После дня, когда я рвал на себе волосы, я наконец понял, в чем была моя проблема.

Я изменил это:

   <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"