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

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

Могу ли я узнать его из реестра? Таким образом, вопрос в основном заключается в том, как узнать UpgradeCode программы, установленной на компьютере.

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

Спасибо.

Ответ 1

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

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

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

Ответ 2

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

Get-WmiObject Win32_Product | Format-Table Name, LocalPackage

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

C:\Windows\Installer\235bbf8.msi

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

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

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

Ответ 3

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

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