Ich habe andere Beiträge gesehen, die beschreiben, dass Komponentenbedingungen basierend auf dem Funktionszustand nicht ausgewertet werden, aber meine Frage ist viel einfacher.Wix-Komponentenbedingungen funktionieren nicht wie erwartet
Angesichts der folgenden:
<Property Id="WORDISINSTALLED" Secure="yes">
<RegistrySearch Id="FindWordIsInstalled" Root="HKCR" Key="Word.Application" Type="raw" Win64="$(var.Win64)"/>
</Property>
<Property Id="WORDVERSION" Secure="yes">
<RegistrySearch Id="WordVersion" Root="HKCR" Key="Word.Application\CurVer" Type="raw"/>
</Property>
<SetProperty Id="MIN_WORD_VERSION_INSTALLED" After ="AppSearch" Value="1">
<![CDATA[WORDVERSION <> "Word.Application.11" AND WORDVERSION <> "Word.Application.12" AND WORDISINSTALLED]]>
</SetProperty>
Ich hätte dies tun können:
<Component Id="$(var.SOFFWordAddinReg_Id)" DiskId="1" Guid="$(var.SOFFWordAddinReg_Guid)" Win64="$(var.Win64)">
<Condition>MIN_WORD_VERSION_INSTALLED</Condition>
<RegistryValue Root="HKLM" Key="Software\Microsoft\Office\Word\AddIns" Name="Description" Value="yada" Type="string" Action="write"/>
</Component>
Mit der Erwartung, dass Komponente var.SOFFWordAddinReg_Id nur installiert werden, wenn MIN_WORD_VERSION_INSTALLED nicht null ist und TRUE .
Ich sehe aus den Protokollen, die WORDISINSTALLED zu "Microsoft Word-Anwendung" gesetzt ist und WORDVERSION wird auf "Word.Application.14" (in AppSearch), aber MIN_WORD_VERSION_INSTALLED nicht gesetzt:
Skipping Aktion: SetMIN_WORD_VERSION_INSTALLED .FA651678_2CA2_423F_9FE0_FE10237B33F6 (Bedingung falsch)
die Protokolle auch die Komponente Komponente zeigen: SOFFWordAddinReg.7D199B30_06E3_488C_9EDF_4B8188026E9C; Installiert: Abwesend; Anfrage: Lokal; Aktion: Null; Client-Status: Unbekannt
aber sagen Sie nicht warum. (Ich vermute wegen der Bedingung?)
Ich muss etwas tun sehr einfach falsch. Jede Hilfe sehr geschätzt.