2015-12-14 102 views
1

当我在没有用户界面的情况下进行更新时,组件在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更新其工作正常

回答

0

假设这些值在用户界面中设置,“更新没有用户界面”意味着功能的变化或补丁(或类似的东西)然后:

你可能假设一旦亲perty值在UI中设置,它们保存在某处供以后使用。除非您保存它们,否则它们不会被保存,因此它们会恢复为默认值。维克斯有一个“记住物业”模式,您可以使用保存的值,使最初输入的值将被保存和恢复上的其他服务活动,如补丁,升级等

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

即使他们正在设置在某个地方,他们需要被标记为安全,以确保他们正确地进入执行顺序。

+0

InstallInitialize之前,我从老config.xml中值,并设定他们USE_PRINTER_VAL和USE_PRINTER_0_VAL 为了确保这些属性等于1我添加了如下因素 '' ,我得到如下因素
' ' – Oleh

+0

“Bef矿石InstallInitilize“大概意味着一个自定义操作,但没有证据表明这个CA正在被调用,或者它是设置值,显然它不是! 。您应该执行更新,生成详细日志并查看正在调用的内容,何时以及何时设置了值。 – PhilDW