将InnoSetup安装程序包装在MSI内以便通过AD进行分发是否可行/合理?

时间:2020-03-05 18:55:38  来源:igfitidea点击:

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

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

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

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

附注:我们这里也确实有用于MSI的WISE的旧版本,但这实际上是我们开始使用Inno而不是...的原因。

解决方案

回答

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

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

回答

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

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

不要这样

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

回答

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

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

回答

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

  • 为INNO设置创建silent.inf脚本(可选)
  • 创建调用myinnosetup.exe的install.bat / silent / NOCANCEL / norestart / Components =" xxx"我们可以使用/ verysilent我们可以使用/LOADINF="silent.inf"从silent.inf加载设置
  • 创建调用install.bat的MSI安装文件(必要时使用参数)
  • 将所有4个文件交付给客户,他们可以使用SMS或者ActiveDirectory部署Inno安装程序,每个人都很高兴:)

回答

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

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

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

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

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

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

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

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

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

回答

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

但是如果我们真的想...

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

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

回答

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

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

回答

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

如果我们混合使用,则会遇到卸载问题的第一个问题。
如果不做任何更改,我们将获得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安装程序应该是我们安装的唯一技术。
它的未来证明和稳定!