winforms - EXE 和 MSI 之间的最佳方法

标签 winforms installation windows-installer exe

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

  • EXE 和 MSI 安装程序中最好的是什么,为什么?
  • 有没有开源工具可以反编译EXE或MSI?
  • 最佳答案

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

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

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

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

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

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

    关于winforms - EXE 和 MSI 之间的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6210580/

    相关文章:

    c# - 我的桌面应用程序在使用 async 和 await 调用 Web API 服务时挂起

    c# - 在面板中添加新标签时出现 NullReferenceException

    python - 如何打包scons工具进行分发安装

    windows - 如何编写自定义操作以在安装完成之前删除已安装的文件

    c# - .NET WinForm GC 问题

    c++ - 如何将 C/C++ 插件安装到 Netbeans (linux)

    .net - 如何满足 "dynamic"Click Once 先决条件

    .net - 我怎样才能绕过 "this component does not fit the criteria for having an automatically generated guid"

    c# - 如何将命令行参数传递给 MSI 安装程序

    .net - 如何防止 Windows 窗体文本框在调整大小时闪烁?