将Inno Setup安装程序包装在MSI中以便通过AD进行更轻松分发是否可行/合理?

将Inno Setup安装程序包装在MSI中以便通过AD进行更轻松分发是否可行/合理?

Is it feasible/sensible to wrap an Inno Setup installer inside an MSI for easier distribution via AD?

我们的安装程序是使用Inno Setup编写的,实际上我们对此感到非常满意。但是,有些客户一直在要求MSI安装程序,他们可以更轻松地通过Active Directory进行分发。我们已经竭尽全力通过使用我们自己的选项扩展Inno Setup的/LOADINF机制来使安装程序真正很好地处理自动化和无人值守的安装。

为了满足客户对MSI的需求,我一直在考虑将常规安装程序包装在MSI(可能使用WIX创建)中。问题是:我可以保持当前安装程序提供的高可配置性吗?在无人值守/大量安装方案中,如何通过外部MSI公开Inno Setup安装程序的选项?

请注意,我还没有真正深入研究MSI创建和WIX。现在,我只对确实知道他们在说什么的人们是否感兴趣,首先认为这将是一种可行/明智的方法来投资我们的精力...

[编辑:]
最初,我认为我可以使用临时提取和执行方法,即MSI只是充当将Inno安装程序交付到目标PC并以/VERYSILENT模式在其中执行的工具。但是我想要求MSI的客户也希望能够从中央位置卸载甚至修改安装,我想在这种情况下是不可能的,对吗?

附注:我们这里也确实有MISE的WISE的旧版本,但是这种经验实际上就是我们开始使用Inno的原因。


不,在保持客户"隐式"要求的功能的同时,无法做到这一点。 MSI唯一可以做的"包装"是在安装时将其解压缩,然后从提取到的临时位置启动InnoSetup安装程序。 MSI是一种根本不同的工作方式:InnoSetup(和NSIS和大多数其他安装程序)采用以代码为中心的方法:您对"步骤"进行"编程"以安装数据。 MSI是一个数据库,并采用"以数据为中心"的方法:您指示应安装哪些文件,其余由MSI"运行时"完成。这使您可以进行版本控制,并可以精确控制操作位置。

简而言之,要满足客户的需求(即MSI随AD带来的易于部署),您将需要"适当的" MSI。祝你好运,这是恕我直言的主要痛苦。但是,一旦您掌握了MSI和WiX,它的确会带来不错的结果。


我本人曾多次遇到这个问题。因此,我创建了一种解决此问题的标准方法,并产生了一个向导,它将指导您完成这些步骤。该工具将支持以下内容:

  • 将exe包装在MSI中。
  • 支持卸载。
  • 仅在"添加或删除程序"中显示一个程序。
  • 使用MSIEXEC.EXE运行MSI程序包时,允许您将命令行参数(例如/ SILENT)传递给嵌入式安装程序。
  • 您可以在http://www.exemsi.com上获得它(基本版本是免费的)

    使用我的联系表格,让我知道您的想法:-)


    在MSI程序包中包装Inno Setup并非易事。但是,这是可能的。有很多免费工具可用于执行此操作。您应该选择一种还支持卸载和升级的软件。

    我发现只有一个免费工具支持升级和卸载。查看http://www.exemsi.com/inno-setup-and-msi


    混合安装技术没有任何意义。

    如果您混合使用,则会遇到卸载问题的第一个问题。
    没有任何更改,您会得到2个程序的卸载程序。

    在" entwickler杂志"中有一些以Windows安装程序开头的文章

    • Entwickler Magazin(Ausgabe:03.09 / 15.04.2009)Artikel:MSI-Pakete mit开放源代码软件erzeugen Teil
      4
    • Entwickler Magazin(Ausgabe:02.09 / 12.02.2009)Artikel:MSI-Pakete mit开放源代码软件erzeugen Teil
      3
    • Entwickler Magazin(Ausgabe:01.09 / 10.12.2008)Artikel:MSI-Pakete mit开放源代码软件erzeugen Teil
      2
    • Entwickler Magazin(Ausgabe:06.08 / 15.10.2008)Artikel:MSI-Pakete mit开放源代码软件erzeugen

    http://entwickler-magazin.de/

    Windows安装程序应该是您安装的唯一技术。
    它的未来证明和稳定!


    我认为使用MSI包装的Inno Setup可以完成您想做的所有事情,但这绝非易事,而使用WiX可能会使这项特定任务变得更加困难。简而言之,我不会推荐它。

    但是如果您真的想...

    MSI文件只是带有附加脚本说明的数据库文件,并且通常嵌入.cab文件,其中包含您实际要安装的内容。

    如果使用Wise,则将生成默认脚本,然后可以将其添加Windows Installer条件并更好地控制事件(安装,修复,修改,卸载),以便它们在Inno Setup安装脚本上调用等效操作,需要安装并保存在一个临时文件夹中。


    制作包装工具包非常容易,该工具包可自动从MSI安装INNOSETUPper。对于基本功能(安装/卸载),这就足够了。大多数安装程序都不会实施修复。

  • 为INNO设置创建silent.inf脚本(可选)

  • 创建调用的install.bat

    myinnosetup.exe / silent / NOCANCEL / norestart / Components =" xxx"

    你可以使用/ verysilent
    您可以使用/LOADINF="silent.inf"从silent.inf加载设置

  • 创建调用install.bat的MSI安装文件(必要时使用参数)

  • 将所有4个文件交付给您的客户,他们可以使用SMS或ActiveDirectory部署您的Inno安装程序,每个人都很高兴:)


  • 回应您的编辑:是的,您描述的内容将阻止进行升级(删除/重新安装除外)和远程配置,因为MSI数据库对安装程序的内容一无所知。

    但是,许多安装程序包都是通过这种方式启动MSI"??支持"的:例如,InstallShield做到了。这是我转储它们的主要原因,因为以这种方式制作的安装程序对于MSI而言是无用的。我不知道最新版本的InstallShield是否更好,我上次检查是5年前。


    我需要在silent.inf(不是稳定的inno设置设置值)上输入一个custome值,就像LOADINF允许的那样。

    注意:如果使用makemsi,则不必包含bat,因为可以使用$ WrapInstall。


    尽管最后的评论是可行和可行的,但改用MSI是处理此问题的最佳方法。

    几乎所有大型组织都只规定MSI,原因很多。

    1)首先是易于部署
    2)对某些人来说更重要的是应用程序的社交性
    3)自我修复

    inno安装程序和其他未实现Windows Installer的工具根本无法以与Windows Installer相同的方式提供应用程序社交性。

    您必须了解Inno设置是旨在部署单个应用程序的软件。

    Windows Installer是一个完整的框架,用于处理社交性,用户模拟,用户提升,自我修复,用户配置文件修复。

    两者甚至在功能上都不遥不可及,在我看来,与Windows Installer相比,nono设置完全偏离了路线。

    它可以创建成功的安装程序吗?是
    这个容易用吗 ?是
    它会创建好的单一安装程序吗?是
    这是企业的最佳选择吗?没有

    微软" SMS Installer"开发的最早工具是10年前的innosetup。在安装环境中,情况发生了巨大变化,并且inno设置根本没有跟上这种变化的步伐。


    这样做几乎等同于交付一个ZIP文件并在安装结束时调用unzip。

    通过这种方法,AD和Windows Installer会像对待正确的MSI安装一样被愚弄,但事实并非如此,它们在第一次出现时就会适得其反。

    不要这样

    无论如何,WiX是InnoSetup的高级工具集,因此,您将花费在学习和移植上的时间将通过更好的协作支持而获得回报。


    推荐阅读