组件条件在没有UI的情况下不起作用

时间:2015-12-14 20:18:24

标签: wix

当我在没有ui的情况下进行更新时,我在wix中遇到了组件问题。

<Component Id="PrinterConfEnable" Guid="911F0032-A217-4B1F-B973-29DB6DC06952">

    <util:XmlFile Id="PrinterEnabled" Action="setValue" Permanent="yes" File="[INSTALLFOLDER]\config.xml" ElementPath="/printer/enabled" Value="true" />

    <Condition>
        <![CDATA[ USE_PRINTER_VAL = "1" and USE_PRINTER_0_VAL = "1" ]]>
    </Condition>

</Component>

<Component Id="PrinterConfDisable" Guid="56AD5D4B-3700-44E1-9A0F-03E3A2A5D88F">

    <util:XmlFile Id="PrinterDisabled" Action="setValue" Permanent="yes" File="[INSTALLFOLDER]\config.xml" ElementPath="/printer/enabled" Value="false" />

    <Condition>
        <![CDATA[ USE_PRINTER_VAL <> "1" or USE_PRINTER_0_VAL <> "1" ]]>
    </Condition>

</Component>

在更新属性期间,USE_PRINTER_VAL和USE_PRINTER_0_VAL等于1但在config.xml中已写入

<printer> 
    <enabled>false</enabled>
</printer>

然而,当我使用UI更新时,它可以正常工作

1 个答案:

答案 0 :(得分:0)

假设这些值是在UI中设置的,并且&#34;更新时没有UI&#34;表示功能更改或补丁(或类似的东西)然后:

您可能假设一旦在UI中设置了属性值,就会将它们保存在某个地方供以后使用。除非您保存它们,否则它们不会保存,因此它们将恢复为默认值。 WiX有一个'#34;记得属性&#34;您可以使用模式保存值,以便最初输入的值将保存并恢复到其他服务活动,如补丁,更新等。

http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

即使将它们设置在某处,也需要将它们标记为安全,以确保它们正确地传递到执行序列中。