2011-06-02 59 views
4

我有一个需要作为一个包交付的应用程序。EXE和MSI之间的最佳合作

  1. EXE和MSI安装程序中的最佳选择是什么?为什么?
  2. 是否有任何开源工具可以反编译EXE或MSI?

回答

3

许多安装。您需要一个EXE来确保安装所有先决条件:例如.NET框架;如果它们不是,则会安装先决条件。然后它提取处理安装的其余部分的MSI包。

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

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

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


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


WiX toolset具有MSI反编译器叫dark

5

这取决于你在讨论什么样的EXE。

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

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

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

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

1

MSI是一个微软安装程序,它比旧的EXE,Wise Installer和其他许多人都支持它更新。它允许一个聪明的安装与需要部署的东西(如CAB文件和注册表设置等),它可以检查以前的安装等。

MSI是唯一的安装,而EXE可以做其他事情像奔跑。

我会用InstallShield和建立一个MSI

我这些天使用MSI内部,尽管他们分布EXE不确定#2

1

你可以告诉Visual Studio让你的应用程序进入MSI/EXE。如果这样做,并做你想做的,只要做到这一点。您在创建安装程序方面付出了很多努力。

MSI表示您使用的是Microsoft的安装程序。 Microsoft有理由推荐(即不提供应用程序认证)MSI。然而,一个好的MSI很难生产,所以我不推荐它,除非你需要你的应用程序被认证。

如果您不需要认证,我建议您使用Inno Setup以及前端​​。它很容易使用,并为您提供简单的界面来执行最常见的安装程序任务。在一个捏,它支持脚本,让你做任何它不支持。

相关问题