我们的安装程序是用Inno Setup编写的,我们实际上对它很满意。然而,一些客户一直要求MSI安装程序,他们可以更容易地通过Active Directory分发。我们已经通过使用我们自己的选项扩展Inno Setup的/LOADINF-mechanism,使安装程序能够很好地处理自动和无人值守的安装。
为了满足客户对MSI的要求,我一直在考虑简单地将我们的常规安装程序包装在MSI中,可能是使用WIX创建的。问题是:我能保持当前安装程序提供的高可配置性吗?在无人参与/批量安装的情况下,如何通过外部MSI公开Inno安装程序的选项?
请注意,我自己还没有真正深入研究MSI-creation和WIX。现在我只对那些知道自己在说什么的人感兴趣,他们是否认为这是一种可行/明智的方法来投资我们的精力……
编辑:最初我认为我可以使用临时提取和执行方法,即MSI只是作为一个容器,将Inno安装程序交付到目标PC并在/VERYSILENT-mode中执行它。但我猜要求MSI的客户也希望能够从中央位置卸载甚至修改安装,我猜在这种情况下这是不可能的,对吧?
附言:我们这里也有一个MSI的WISE的旧副本,但这实际上是我们开始使用Inno的原因……
发布于 2008-09-16 11:11:48
不,没有办法做到这一点,同时仍然保留您的客户‘隐含’要求的功能。你能做的唯一的“包装”就是在安装时解压它,然后从你解压到的临时位置启动你的InnoSetup安装程序。微系统集成是一种完全不同的工作方式: InnoSetup (& NSIS &大多数其他安装程序)采用以代码为中心的方法:您“编程”安装数据的“步骤”。MSI是一个数据库,它采用“以数据为中心”的方法:您指示应该安装哪些文件,MSI“运行时”完成其余的工作。这为您提供了版本控制和对内容的精确控制。
简而言之,为了给你的客户提供他们想要的(例如,MSI为AD带来的部署的简单性),你需要“适当的”MSI。祝你好运,这是一个主要的痛苦。但是一旦你掌握了MSI和WiX,它确实会给你带来很好的效果。
发布于 2012-08-23 03:32:56
我自己也有过很多次这样的问题。因此,我创建了一个标准的方法来解决这个问题,它产生了一个向导,它将指导您完成这些步骤。该工具将支持以下功能:
当您使用MSIEXEC.EXE运行MSI包时,请将命令行参数(如/SILENT )传递给嵌入式安装程序。
你可以在http://www.exemsi.com上获得它(基础版是免费的)
使用我的联系人表单,让我知道您的想法:-)
发布于 2008-09-16 14:08:46
对您的编辑的回应:是的,您所描述的将阻止进行升级(删除/重新安装除外)和远程配置,因为MSI数据库不会知道您的安装程序的任何内容。
然而,许多安装程序包都是以这种方式启动MSI“支持”的:例如,InstallShield就是这样做的。这是我丢弃它们的主要原因,因为以这种方式制作的安装程序对于MSI目的是无用的。我不知道最近的InstallShield版本是否更好,我最后一次检查是在5年前。
https://stackoverflow.com/questions/71203
复制相似问题