EXE和MSI中的最佳方法

时间:2011-06-02 04:56:08

标签: winforms installer windows-installer exe

我有一个需要作为一个包提供的应用程序。

  1. EXE和MSI安装人员中最好的是什么?为什么?
  2. 是否有任何开源工具可以反编译EXE或MSI?

6 个答案:

答案 0 :(得分:5)

这取决于你在说什么类型的EXE。

MSI是由Windows Installer运行的安装程序包。如果使用Visual Studio进行安装项目,它将为您提供MSI和EXE。在这种情况下,EXE只是一个引导程序(MSI or EXE)。在检查Windows Installer到位后,它将运行MSI。

如果您使用InnoSetup等其他工具,则此EXE本身就是一个安装程序包,而不是一个引导程序。

关于MSI编辑器的问题:Orca MSI Editor

如果不需要非常复杂的安装程序,我建议使用Visual Studio安装项目,因为它简单但功能强大。

答案 1 :(得分:3)

现在,许多安装程序在内部使用MSI,尽管它们是作为EXE分发的。您需要一个EXE来确保安装所有先决条件:例如.NET框架;如果不是,它会安装先决条件。然后它提取处理剩余安装的MSI包。

MSI提供了一些高级安装功能:

  • 回滚支持:如果在安装过程中出现故障,系统会将系统恢复到安装开始前的状态。
  • 修复:如果您的应用程序停止正常运行,用户可以使用此功能重新安装该应用程序。它恢复丢失的文件,注册表项。
  • 更新/升级:MSI处理应用程序更新/升级。当用户开始安装较新版本时,MSI软件包可以配置为自动使用以前版本的应用程序。这对用户来说是透明的:它看起来好像只安装了新版本。
  • 补丁:MSI支持补丁。仅修改应用程序的多个文件时,可以使用修补程序包(MSP)更新它们。补丁将小于整个包。
  • 广告快捷方式:您可以允许用户不安装应用程序的某些功能,除非使用它们。当用户访问此类功能时,MSI会安装必要的文件。

虽然学习这项技术需要一些时间。


您可以从EXE文件执行任何操作,而MSI仅用于安装。 Inno SetupNSIS安装包作为exe文件分发。他们使用脚本语言来描述安装步骤。


WiX toolset有一个名为dark的MSI反编译器。

答案 2 :(得分:2)

答案 3 :(得分:2)

我在serverfault.com上发布了一些MSI好处(和问题)的摘要:

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

答案 4 :(得分:1)

MSI是一个Microsoft安装程序,它比旧的EXE,Wise Installer和许多其他人支持它更新。它允许更智能地安装需要部署的内容(如CAB文件和注册表设置等...),它可以检查以前的安装等。

MSI仅是安装,而EXE可以执行其他操作。

我会使用InstallShield并构建一个MSI

我不确定#2

答案 5 :(得分:1)

您可以告诉Visual Studio将您的应用程序转换为MSI / EXE。如果这样做并且做你想做的事,就这样做吧。您需要付出很多努力才能创建安装程序。

MSI表示您使用的是Microsoft的安装程序。 Microsoft有正当理由推荐(即不提供您的应用程序认证)MSI。但是,良好的MSI很难生产,所以除非您需要申请认证,否则我不推荐它。

如果您不需要认证,我建议使用Inno Setup以及ISTool这样的前端。它易于使用,并为您提供简单的界面来执行最常见的安装程序任务。在紧要关头,它支持脚本,允许你做任何它不支持的事情。