Когда разработчик создает приложение, он обычно выбирает способ его установки. Одним из популярных вариантов является использование установщика Windows и, следовательно, создание MSI. MSI-файл - это, по сути, база данных, которая сообщает установщику Windows, как устанавливать программное обеспечение, т.е. файлы, которые нужно удалить, reg-ключи для создания, службы для создания и т. Д. Популярные инструменты для создания файлов MSI - WiX или InstallShield .
В рамках разработки MSI продукту должен быть присвоен уникальный GUID, называемый ProductCode. Именно этот код продукта вы видите под ключом удаления. Значение UninstallString использует код продукта, поскольку установщик Windows может использовать его для удаления приложения с помощью ключа / X.
Разработчик может отказаться от использования установщика Windows и написать собственный установщик. Чтобы он отображался в разделе «Программы и компоненты», разработчику необходимо вручную создать ключи удаления для приложения. Как минимум им нужно будет установить DisplayName и UninstallString ( ref ). Маловероятно, что они создали бы GUID для идентификации приложения, но могли бы.
Если разработчик создал пользовательский установщик, он также должен предоставить какой-либо метод для удаления приложения. В результате большинство разработчиков создают отдельное приложение для удаления, на которое указывает UninstallString. Это приложение также может быть использовано для предоставления возможности изменить, восстановить или удалить приложение.
Это действительно предпочтение разработчика.