2015-07-09 1 views
0

У меня есть следующий отрывок WiX, который отлично работает во время установки, но не во время удаления. Я довольно новичок в WiX, так что извиняюсь, если это вопиющая ошибка. Может ли кто-нибудь увидеть проблему?WiX Установить свойство из реестра во время удаления

<Property Id="APPFOLDER" > 

    <RegistrySearch Id="APPInstalledFolderReg" 
        Root="HKLM" 
        Key="SOFTWARE\$(var.MANUFACTURER)\One Of My Web Services" 
        Name="Folder" 
        Type="raw" 
        Win64="yes" /> 
</Property> 

<CustomAction Id="SetAPPFolderProperty" 
       Property="APPInstalledFolder" 
       Value="[APPFOLDER]" 
       Execute="immediate" 
      /> 

<InstallExecuteSequence> 
    <Custom Action="SetAPPFolderProperty" 
      After="AppSearch" 
      >APPFOLDER</Custom> 
    <Custom Action='MyUnregisterAction' 
      After='InstallInitialize' 
      >REMOVE="ALL"</Custom> 
</InstallExecuteSequence> 

Во время "MyUnregisterAction", то APPInstalledFolder не установлен. MSIexec Установите отчеты Log:

Skipping action: SetAPPFolderProperty (condition is false) 

Я понимаю, это означает, что CustomAction не выполняет, потому что APPFOLDER свойство не установлено. Не выполняется ли RegistrySearch во время удаления?

ответ

0

Поиск реестра определенно выполняется во время удаления. На самом деле, я попробовал один и тот же фрагмент и мог заставить его работать.

Выполняется ли установка в полном режиме пользовательского интерфейса? В этом случае поиск в реестре будет выполняться в режиме пользовательского интерфейса. Вероятно, здесь происходит то, что значение свойства APPFOLDER не передается в последовательность Execute. Для значения свойства, которое должно быть передано последовательности выполнения, необходимо обеспечить свойство ie. добавьте свойство APPFOLDER в SecureCustomProperties в таблице свойств.

Как только вы это сделаете, фрагмент кода должен начать работать.

В обычных условиях значения общедоступных свойств передаются из последовательности пользовательского интерфейса в последовательность выполнения. Тем не менее, могут быть ситуации блокировки, когда свойство должно быть явно добавлено в список SecureCustomProperties в таблице свойств для значения, которое будет использоваться для последовательности Execute.

Надеюсь, это поможет.

С уважением, Киран Хедж

+0

Здравствуйте @KiranHedge, инсталлятор имеет очень простой пользовательский интерфейс (''), я не уверен, если это означает, что «режим полного UI ». Свойство, пользовательское действие и последовательность установки также объявляются unde '' узел. Однако я следил за вашим предложением и пометил мое свойство как Secure ('<Идентификатор свойства = "APPFOLDER" Secure = "yes">'). Это сделал трюк! Бесконечно благодарен! – Patelos