开发者

best approch among EXE and MSI

开发者 https://www.devze.com 2023-03-10 07:32 出处:网络
I have an app开发者_C百科lication that needs to be delivered as a package. What are the best among EXE and MSI Installers, and why?

I have an app开发者_C百科lication that needs to be delivered as a package.

  1. What are the best among EXE and MSI Installers, and why?
  2. Is there any open source tool to decompile the EXE or MSI?


It depends on what kind of EXE you are talking about.

MSI is setup package that is run by Windows Installer. If you make setup project with Visual Studio it will provide both MSI and EXE for you. EXE in this case just a bootstrapper (MSI or EXE). It will run MSI after checks that Windows Installer is in place.

If you use other tools like InnoSetup, this EXE is a setup package itself, not a bootstrapper.

Regarding to your question about MSI editor: Orca MSI Editor.

If don't need need very complicated installer, I suggest using Visual Studio setup project as it is simple, yet powerful enough.


Many installers these days use MSI internally although they're distributed as EXE. You need an EXE to ensure all the prerequisites are installed: .NET framework, for example; and it installs the prerequisites if they're not. Then it extracts the MSI package which handles the rest of the installation.

MSI provides some advanced install features:

  • rollback support: if something failed during installation, it returns the system to the state before installation started.
  • repair: if your application stopped functioning correctly, users can use this feature to reinstall the application. It restores missing files, registry entries.
  • updates/upgrades: MSI handles application updates/upgrades. MSI package can be configured to automatically the previous version of the application when user starts installation of a newer version. This happens transparently to user: it looks as if only the new version is installed.
  • patches: MSI supports patches. When only several files of your application are modified, you can update them using a patch package (MSP). The patch will be smaller than the full package.
  • advertised shortcuts: you can allow users to not install some features of your application unless they're used. When users access such a feature, MSI installs the necessary files.

Though it takes some time to learn the technology.


You can do anything from an EXE file, while MSI is for installation only. Inno Setup and NSIS installation packages are distributed as exe files. They have a scripting language which describes installation steps.


WiX toolset has MSI decompiler called dark.


check Difference between EXE and MSI


I posted a summary of some MSI benefits (and problems) on serverfault.com:

https://serverfault.com/questions/11670/advantages-of-using-msi-files


MSI is a Microsoft Installer, it is newer than the older EXE , Wise Installer and many others support it. It allows for a smarter install with what needs to be deployed (like CAB files, and registry settings etc...) and it can check for previous installs etc..

MSI are ONLY installations, while EXE can do other things like run.

I would use InstallShield and build an MSI

I'm unsure about #2


You can just tell Visual Studio to make your application into an MSI/EXE. If that works and does what you want, just do that. It much effort on your part creating an installer.

MSI means you are using Microsoft's Installer. Microsoft has legitimate reasons for recommending (i.e., not giving your application Certification) MSI. However, a good MSI is tough to produce, so I don't recommend it unless you need your application to be certified.

If you don't require certification, I recommend Inno Setup, along with a front-end like ISTool. It's easy to use and gives you simple interfaces to perform most common installer tasks. In a pinch, it supports scripting to allow you to do anything it doesn't support.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号