В настоящее время у нас есть MSI (скажем, Broker.msi). В рамках установки MSI (определенный в Wix) создает новый раздел реестра (Брокер) и добавляет к нему 2 подраздела. После установки, когда пользователь регистрирует наш продукт, в разделе «Брокер» добавлен еще один ключ реестра «Key3». Обратите внимание, что «Key3» содержит регистрационный ключ, который чрезвычайно важен &, доступ к которому осуществляется другими слоями продукта.Как предотвратить удаление реестра как часть уже установленного MSI удаления?
[Registry Структура после установки & регистр]
HKLM \ Software \ Microsoft \ Broker
Key1 (добавленные установщиком)
Key2 (добавленные установщиком)
Key3 (добавляется, когда пользователь регистрирует продукт UCT)
[Wix фрагмент кода]
<Component Id="RegistryEntries" Guid="*" Win64="$(var.WIN64_COMPONENT)">
<RegistryKey Root="HKLM" Key="Software\Microsoft\Broker" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="Key1" Value="1rp1users" KeyPath="yes"/>
<RegistryValue Type="string" Name="Key2" Value="http://windowsbackup/m1" />
</RegistryKey>
</Component>
....
<ComponentRef Id="RegistryEntries" />
Проблема: До сих пор, так как мы использовали заплаток, мы сталкиваемся вмятина никаких проблем с обновлением. Из следующего выпуска мы хотим перейти на крупные обновления, но самая большая проблема заключается в следующем: во время основного обновления старый продукт будет удален. Согласно фрагменту wix, элементом действия для элемента реестра «Брокер» является «CreateAndRemoveOnUninstall», поэтому весь узел «Брокер» удаляется вместе с подразделением «Key3».
Если я обновляю действие до «Создать», проблема будет исправлена с новыми установками, но так как msi уже находится в процессе производства, как я могу предотвратить его удаление из реестра в рамках основного обновления для существующих продуктов?
Отлично. Это сделал трюк. Спасибо, Кристофер! – Ramya