Я создал Компонент с Условием DISABLEMSIUPGRADE, который набор get, когда я устанавливаю MSI с помощью нашего ExternalUI. Однако MSI не удаляет запись на UnInstall. Я думаю, что проблема вызывается Условием, но я не могу зафиксировать его.
<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 в другие компоненты, чтобы гарантировать, что ключи удалены, но это также не сделало задания...
Я также пытался сохранить и считать свойство DISABLEMSIUPGRADE в Ключе.
//редактирование: я экспериментировал немного и узнал, что Элемент УСЛОВИЯ не является причиной. Я похож, если у меня есть другая версия моей установленной установки, ключ реестра не становится удаленным. Что могло вызвать это?
В справочнике установщика Windows компоненты подсчитываются по их Component / @ Guid. Если у вас есть общий компонент (то есть компоненты с одинаковым @Guid) в файлах MSI, то содержимое компонента будет удалено только при удалении обоих MSI.
Я настоятельно рекомендую прочитать Правила для компонентов. Все это они контролируют: http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101