WiX не удаляет ключ реестра при удалении - PullRequest
8 голосов
/ 23 июля 2010

Я создал компонент с условием DISABLEMSIUPGRADE, который устанавливается, когда я устанавливаю MSI с помощью нашего ExternalUI.Однако MSI не удаляет запись об удалении.Я думаю, что проблема вызвана Условием, но я не могу это исправить.

<Component Id="compMSI" Guid="5f18af6a-b839-4b4d-9d4f-79cf7826f749">
  <Condition>DISABLEMSIUPGRADE</Condition>

  <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(var.PGuid)" Action="createAndRemoveOnUninstall">
    <RegistryValue Name="DisplayName" Type="string" Value="$(var.ProductTitle)" />
    <!-- ... -->
  </RegistryKey>
</Component>

Я даже поместил RemoveRegistryKey Elements в другие компоненты, чтобы гарантировать удаление ключей, но это также не сделало работу...

Я также пытался сохранить и прочитать свойство DISABLEMSIUPGRADE в Key.

// edit: Я немного поэкспериментировал и обнаружил, что СОСТОЯНИЕЭлемент не причина.Похоже, если у меня установлена ​​другая версия моей установки, ключ реестра не удаляется.Что может вызвать это?

Ответы [ 2 ]

17 голосов
/ 24 июля 2010

Ссылка установщика Windows считает компоненты по их компонентам / @ Guid.Если у вас есть общий компонент (т. Е. Компоненты, имеющие одинаковый @Guid) в файлах MSI, то содержимое компонента будет удалено только после удаления обоих MSI.

Я настоятельно рекомендую прочитать о Правилах для компонентов.Они контролируют все это: http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101

2 голосов
/ 27 июля 2010

Если у вас есть Компонент (помните, что Компоненты идентифицируются по их @Guid вне файла MSI), совместно используемый Продуктами, тогда Компонент будет удален только после последней деинсталляции MSI. И снова, запись в блоге Component Rules , на которую я ссылался выше, объясняет почему.

Наконец, подробный файл журнала покажет вам состояние установки для всех ваших Компонентов.

...