2015-12-14 69 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