Winforms EXE和MSI之间的最佳方法

Winforms EXE和MSI之间的最佳方法,winforms,installation,windows-installer,exe,Winforms,Installation,Windows Installer,Exe,我有一个应用程序,需要作为一个包交付 EXE和MSI安装程序中最好的是什么?为什么 是否有任何开源工具来反编译EXE或MSI 这取决于你说的是什么类型的EXE MSI是由Windows Installer运行的安装程序包。如果您使用Visual Studio创建安装项目,它将为您提供MSI和EXE。在本例中,EXE只是一个引导程序。它将在检查Windows Installer是否到位后运行MSI 如果您使用其他工具,如InnoSetup,此EXE本身就是一个安装程序包,而不是引导程序 关于您关于

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

  • EXE和MSI安装程序中最好的是什么?为什么
  • 是否有任何开源工具来反编译EXE或MSI

  • 这取决于你说的是什么类型的EXE

    MSI是由Windows Installer运行的安装程序包。如果您使用Visual Studio创建安装项目,它将为您提供MSI和EXE。在本例中,EXE只是一个引导程序。它将在检查Windows Installer是否到位后运行MSI

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

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


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

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

    MSI只是安装,而EXE可以执行其他操作,如运行

    我将使用InstallShield并构建MSI


    我不确定#2

    检查

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

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

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


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



    已调用MSI反编译器。

    您可以告诉Visual Studio将应用程序转换为MSI/EXE。如果这样做行得通,并且做了你想做的事,就这么做吧。创建一个安装程序需要花费大量的精力

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


    如果您不需要认证,我建议您使用类似的前端。它易于使用,并为您提供了执行大多数常见安装程序任务的简单界面。在紧急情况下,它支持脚本,允许您执行它不支持的任何操作。

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