Які конкретні відмінності між .msi та файлом setup.exe?


193

Я багато шукав, але всі вгадали відповіді. Допоможіть мені знайти точну відповідь.




Я хотів встановити програму, яка постачалася разом із установкою EXE та MSI. Я спершу встановив з MSI, який встановлював лише програмні файли (без будь-яких передумов і залежностей і не створював піктограми меню "Пуск"). Коли я вручну запустив програму, не вдалося сказати, що деякі DLL-файли відсутні. Встановлюючи з EXE, також встановлені інші речі, і виріб працював просто чудово. Я б сказав, якщо виробник програмного забезпечення надає опцію EXE та MSI для встановлення, використовуйте EXE.
Джеймс Л.

Відповіді:


232

MSI - це база даних Windows Installer. Windows Installer (служба, встановлена ​​в Windows) використовує це для встановлення програмного забезпечення у вашій системі (тобто копіювання файлів, встановлення значень реєстру тощо).

Setup.exe може бути завантажувачем або інсталятором, який не є MSI. Інсталятор, який не є MSI, буде витягувати ресурси інсталяції з себе та безпосередньо керувати їх установкою. Завантажувальний пристрій міститиме MSI замість окремих файлів. У цьому випадку setup.exe зателефонує інсталятору Windows для встановлення MSI.

З деяких причин ви можете використовувати setup.exe :

  • Windows Installer дозволяє одночасно встановлювати лише один MSI. Це означає, що складно встановити MSI для встановлення інших MSI (наприклад, залежностей, таких як .NET Framework або C ++ під час виконання). Оскільки setup.exe не є MSI, його можна використовувати для установки декількох MSI послідовно.
  • Вам може знадобитися більш точний контроль над тим, як керується встановленням. MSI має дуже специфічні правила щодо керування установками, включаючи встановлення, модернізацію та видалення. Setup.exe забезпечує повний контроль над процесом налаштування програмного забезпечення. Це слід робити лише в тому випадку, якщо вам дійсно потрібен додатковий контроль, оскільки це багато роботи, і це може бути складним, щоб виправити це правильно.

7
Я збирався набрати це - це, мабуть, те, що він шукає
Мангуст

1
З мого досвіду створення інсталятора MSI - це велика робота порівняно зі створенням інсталятора на базі EXE. Це значною мірою залежить від інструментів, якими ви користуєтесь для створення інсталятора. На жаль, усі інструменти для встановлення на основі MSI, які я бачив, були або комерційними інструментами графічного інтерфейсу, або складними інструментами на основі WiX. Жоден з них не відповідає моїм потребам особливо добре (тобто автоматично будує інсталяторів із сценарієм).
craftworkgames

Тож мені все ще цікаво, чому існує MSI. Яку проблему намагалися вирішити, коли здається, що exe працює нормально?
Людина-булочка

14

Файли .msi - це файли інсталятора Windows без виконання програми інсталятора Windows, setup.exe може бути будь-якою виконуваною програмою (можливо, такою, яка встановлює речі на комп'ютер)


9

MSI - це файл інсталятора, який встановлює вашу програму у виконавчій системі.

Setup.exe - це програма (виконуваний файл), яка має один з ресурсів файлів msi. Виконання Setup.exe у свою чергу виконає msi (інсталятор), який записує вашу програму в систему.

Редагування (як запропоновано в коментарі): Налаштування виконуваних файлів не обов'язково має ресурс MSI всередині країни


Налаштування виконуваних файлів не обов'язково має внутрішній ресурс MSI.
jkmartindale

-10

MSI - це в основному інсталятор від Microsoft, який вбудований у windows. Він пов'язує компоненти з функціями та містить інформацію про контроль установки. Не обов'язково, щоб цей файл містив фактичні необхідні користувачеві файли, тобто програми, які очікує користувач. MSI може містити інший setup.exe всередині нього, який MSI обгортає, що фактично містить необхідні користувачеві файли.

Сподіваюся, це очистить вас від сумнівів.


13
Це заплутано і, як правило, невірно - в тому, що MSIфайли зазвичай НЕ переносять setup.exeфайли, а навпаки.
Flak DiNenno

"MSI може містити інший setup.exe всередині нього, який MSI обгортає" невірно! Скоріше зворотне: a .exe має в собі .msi.
ОДИН
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.