2015-12-14 1 views
1

У меня проблема с компонентом в wix, когда я делаю обновление без ui.Состояние компонента не работает без UI

<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 устанавливаются в пользовательском интерфейсе, который они сохраняются где-то для последующего использования. Они не сохраняются, если вы не сохраните их, поэтому они возвращаются к значениям по умолчанию. WiX имеет «помните свойство» шаблон можно использовать для сохранения значений, так что значения первоначально введенные будут сохранены и восстановлены на другие виды деятельности по обслуживанию как патчи, обновления и т.д.

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 добавить на следующие ' ' и я получаю folowing
' ложь ' – Oleh

+0

" Bef руда InstallInitilize "предположительно означает пользовательское действие, но нет никаких доказательств того, что этот ЦС вызывается или что он устанавливает значения, и, по-видимому, это не так! , Вы должны выполнить обновление, создав подробный журнал, и посмотреть, что вызывается, и когда, и когда вы устанавливаете значение valus. – PhilDW

Смежные вопросы