【问题标题】:best approch among EXE and MSIEXE 和 MSI 中最好的方法
【发布时间】:2011-06-02 04:56:07
【问题描述】:

我有一个需要打包交付的应用程序。

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

【问题讨论】:

    标签: winforms installation windows-installer exe


    【解决方案1】:

    这取决于你说的是哪种EXE。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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


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


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

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

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

            MSI 仅用于安装,而 EXE 可以执行其他操作,例如运行。

            我会使用 InstallShield 并构建一个 MSI

            我不确定#2

            【讨论】:

              【解决方案6】:

              您可以告诉 Visual Studio 将您的应用程序制作成 MSI/EXE。如果那行得通并且做你想做的事,那就去做吧。创建安装程序需要您付出很多努力。

              MSI 表示您正在使用 Microsoft 的安装程序。 Microsoft 有正当理由推荐(即不给您的应用程序认证)MSI。但是,好的 MSI 很难制作,所以我不推荐它,除非您需要对您的应用程序进行认证。

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

              【讨论】:

                猜你喜欢
                • 2014-02-05
                • 2010-10-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-03-14
                相关资源
                最近更新 更多