Как удалить другую программу в установщике 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 установщика.

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

Кроме того, недавно был один связанный вопрос:

WiX - позволяет * вручную * удалить одну MSI для удаления другой MSI, которая использует тот же код UpgradeCode (и не только во время MajorUpgrade)

-Другой подход заключается в обновлении старого пакета MSI с использованием нового пакета MSI.

http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html

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

Другим способом будет чтение ключа удаления (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall) из реестра и найдите имя вашего приложения / издателя и, если совпадение найдено, выполните UninstallString команда.

Другие вопросы по тегам