Wix: как удалить ранее установленное приложение, которое установлено с помощью другого установщика

Предположим, что у вас есть установщик (не установщик wix), который вы скачали откуда-то. Как узнать код UpgradeCode для этого установщика, чтобы его можно было заполнить в разделе UpgradeCode в новом подготовленном вами установщике?

Можно ли как-нибудь узнать это из реестра? Таким образом, вопрос в основном, как узнать UpgradeCode программы, которая установлена ​​на компьютере.

На самом деле моя проблема в том, что мой продукт был установлен с другим установщиком, и сейчас я пытаюсь переместить его в установщик wix. Тем не менее, я не могу найти код обновления в предыдущем установщике, и я хочу найти его из установленного программного обеспечения.

Благодарю.

3 ответа

Решение

Как я написал для пользователей WiX:

Я видел, как это произошло, когда обновление получило строку удаления из реестра, где должна быть команда, которую вы можете использовать, поскольку она не основана на MSI. Нужно ли вызывать его в последовательности пользовательского интерфейса или в последовательности выполнения, или в обоих случаях, зависит от ваших требований для установки без вывода сообщений, а это означает, что вам нужно выполнить это в последовательности выполнения без вывода сообщений, и, возможно, потребуется изменить команду удаления, чтобы отключить его.,

Та же самая общая идея должна работать, если у этой установки есть стандартный ярлык удаления, из которого можно получить команду. В любом случае, вы просто используете CA для запуска внешней программы или, возможно, Util CAQuietExec.

Запустите PowerShell (запустите от имени администратора) и выполните эту команду, чтобы получить список установленных продуктов с кодом продукта:

Get-WmiObject Win32_Product | Format-Table Name, LocalPackage

Вы получите список всех установленных продуктов MSI и странный путь к локальной кэшированной базе данных MSI. Обычно это выглядит примерно так:

C:\Windows\Installer\235bbf8.msi

Имя файла 235bbf8.msi является случайным и будет отличаться для каждого установленного продукта. Это кэшированная копия файла MSI, который вы изначально установили. Он не содержит cab-файлов (или, по крайней мере, в старых версиях Windows).

Вы можете открыть этот файл со случайным именем из Orca. Для этого выберите "Файл" -> "Открыть", затем вставьте полный путь к диалоговому окну открытия файла и нажмите "Открыть". Не вносите никаких изменений, но проверьте код обновления в таблице свойств. Вы также можете использовать другие инструменты MSI, такие как Installshield.

Обратите внимание, что путь C:\Windows\Installer является "сверхзащищенным" и даже не отображается в проводнике Windows до того, как вы включите показ скрытых папок И отключите опцию защиты файлов операционной системы. Я все еще верю, что вы можете открыть файл напрямую, если вставите весь путь в Orca - не нужно идти через Windows Explorer.

Предполагая, что это установщик на основе установщика Windows ( WiX, InstallShield и др.), Вы можете отредактировать его с помощью ORCA и посмотреть таблицу свойств, чтобы увидеть его UpgradeCode. Возможно, вам придется сначала извлечь его, если он был упакован как самораспаковывающийся установщик.

Вы также можете запросить MSI API или посмотреть в реестре (HKCR\Installer) эту информацию. Если вы идете по пути реестра, вероятно, проще всего взглянуть на ключ Products/GUID/Sourcelist и отследить его до кэшированного MSI и посмотреть его в ORCA. В противном случае вы должны научиться объединять разные наборы данных и преобразовывать преобразованные в Дарвин GUIDS обратно в их исходный формат GUID.

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