Дублирующиеся, но разные удаления Windows в реестре

Дублирующиеся, но разные удаления Windows в реестре

Я пытаюсь понять разницу между ключами GUID и не-GUID в HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall.

Некоторые вещи имеют ключ GUID и не-GUID ключ, с очень разными UninstallStrings. Например, Autodesk Revit имеет хорошую UninstallString в ключе GUID

MsiExec.exe /X{7346B4A0-1900-0510-0000-705C0D862004})

Но я думаю, что в ключе, отличном от GUID, UninstallString на самом деле является строкой исправления.

C:\Program Files\Autodesk\Revit 2019\Setup\Setup.exe /P {7346B4A0-1900-0510-0000-705C0D862004} /M RVT /LANG en-US)

Но другие, такие как Autodesk Desktop App, не имеют ключа GUID, и UninstallString в ключе без GUID работает хорошо.

C:\Program Files (x86)\Autodesk\Autodesk Desktop App\removeAdAppMgr.exe

Мне интересно, это нормально или, может быть, это какая-то глупость, присущая только Autodesk? И есть ли хороший ресурс Microsoft, подробно описывающий, какая информация ожидается в различных папках Uninstall? Пока что я не могу найти ничего подробного.

EDIT: Подобным образом я обнаружил, что Microsoft тоже делает дубликаты, но не GUID против нет. Вот три разных Uninstall с одинаковым DisplayName, но ссылаются на три разных GUID. Кроме того, все это x64-установки, но они находятся в WOW6432Node. Разочаровывает.

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {8CCEA24C-51AE-3B71-9092-7D0C44DDA2DF} /qb+ REBOOTPROMPT=""

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {C3A57BB3-9AA6-3F6F-9395-6C062BDD5FC4} /qb+ REBOOTPROMPT=""

Visual C++ 2008 - x64 (KB958357) - v9.0.30729.177
C:\Windows\SysWOW64\msiexec.exe /x {F6F09DD8-F39B-3A16-ADB9-C9E6B56903F9} /qb+ REBOOTPROMPT=""

решение1

Хороший ответ уже опубликован, я все равно опубликую то, что начал писать до того, как ваш вопрос был удален.

TheGUIDключи обычноWindows Installer setups(файлы с*.MSIрасширение) — устаревший стандарт развертывания Microsoft, активно используемый в корпорациях.

Существует множество различных видов установщиков, но они, как правило, упакованы в setup.exeфайлы или MSI filesболее новые виды форматов установщиков, такие как APPX(уже устаревшие), MSIX(новообразующие) и т. д. На самом деле возможностей много.

АвтоДескпохоже, что используется устаревший setup.exустановщик e, который не основан на Windows Installer, хотя все еще возможно, что setup.exeуказанный файл является оболочкой, которая запускает пакет установщика Windows.

Ниже я добавлю несколько ссылок на информацию о различных типах настроек и задачах, связанных с настройками (например, извлечение файлов).


Некоторые ссылки:

В этих ответах есть много других ссылок на похожие материалы.

решение2

Когда разработчик создает приложение, он обычно выбирает метод его установки. Одним из популярных вариантов является использование установщика Windows и, следовательно, создание MSI-файла. Файл MSI по сути является базой данных, которая сообщает установщику Windows, как устанавливать программное обеспечение, т. е. файлы для удаления, ключи реестра для создания, службы для создания и т. д. Популярные инструменты для создания файлов MSI:WiXилиУстановить Щит.

В рамках создания MSI продукту должен быть назначен уникальный GUID, называемый ProductCode. Именно этот код продукта вы видите под ключом Uninstall. Значение UninstallString использует ProductCode, поскольку установщик Windows может использовать его для удаления приложения с помощью ключа /X.

Разработчик может не использовать Windows Installer и написать свой собственный установщик. Однако, чтобы он появился в Programs and Features, разработчику нужно будет вручную создать ключи Uninstall для приложения. Как минимум, ему нужно будет задать DisplayName и UninstallString (ссылка). Маловероятно, что они создадут GUID для идентификации приложения, но они могли бы это сделать.

Если разработчик создал пользовательский установщик, то разработчику также необходимо предоставить некоторый метод для удаления приложения. В результате большинство разработчиков создают отдельное приложение для удаления, на которое указывает UninstallString. Это приложение также может быть использовано для предоставления возможности изменить, восстановить или удалить приложение.

На самом деле это предпочтение разработчика.

Связанный контент