Как удалить другую программу в установщике wix?
Я потерял GUID для моего старого установщика. Мне удалось получить идентификатор обновления с помощью Orca, но он все еще не удаляет старую версию из списка программ и функций. Как я могу удалить старый msi/bootstrapper с совершенно новым?
3 ответа
Если у вас есть MSI для удаления (т.е. не загрузчик), вы сможете удалить его с помощью WIX <Upgrade>
элемент, указав его там так:
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is installed." />
<Upgrade Id="{YOUR-OTHER-STUFF-GUID-HERE}">
<UpgradeVersion OnlyDetect="no" Property="OTHER_STUFF_FOUND" Minimum="0.0.0" />
</Upgrade>
Если у вас есть какой-нибудь EXE-файл для удаления, а не MSI, тогда AFAIK - это только настраиваемое действие (просто выполните команду удаления с помощью настраиваемого действия).
-Используйте API установщика Windows: MsiEnumRelatedProducts(), чтобы получить список всех продуктов с одинаковым кодом UpgradeCode.
https://msdn.microsoft.com/en-us/library/aa370103(v=vs.85).aspx
Этот API возвращает код продукта всех продуктов, установленных в системе, которые используют один и тот же код UpgradeCode.
Вероятно, вы можете увидеть примеры использования этого через Интернет или Windows SDK установщика.
Надеюсь это поможет.
Кроме того, недавно был один связанный вопрос:
-Другой подход заключается в обновлении старого пакета MSI с использованием нового пакета MSI.
http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html
Надеюсь это поможет.
Другим способом будет чтение ключа удаления (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
из реестра и найдите имя вашего приложения / издателя и, если совпадение найдено, выполните UninstallString
команда.