.Net Installer - Разница между .exe и .msi

Я развертываю свое приложение с помощью установщика, который я создаю, используя проект "Установка и развертывание" в visual studio. Когда я создаю проект установки, я получаю файл .exe и .msi.

Я хотел бы узнать разницу между ними.

Я заметил, что .exe не может работать без .msi, но обратное не так.

Ответ 2

Файл exe представляет собой bootstrapper, который устанавливает любые необходимые предварительные условия, а затем вызывает вашу настройку, которая является файлом msi.

Вы можете запустить настройку самостоятельно, запустив файл msi, но он не сработает, если необходимые предварительные условия не установлены (возможные примеры:.Net framework, VС++, распространяемая версия, более новая версия MSI и т.д.)

Сбой при попытке запустить настройку с помощью загрузочного файла (exe файла) и вашего msi отсутствует, потому что в основном он установит все необходимые условия, а затем попытается запустить ваш установщик (файл msi). Если файл не существует, ему нечего запускать.

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

Ответ 3

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