创建调用另一个msi安装的基本MSI

时间:2011-10-04 09:27:37

标签: installer installshield

我在Flexara论坛上已经提出了这个问题,但到目前为止还没有回复,所以我想在这里问一下。

我们目前有一个运行良好的InstallScript项目。生成的设置可以无人值守/无声。 在此设置中,我们有一些功能并调用许多第三方安装(这是运行我们的软件的先决条件)。 但是,我们的客户需要MSI文件,因此我们采用了基本的MSI项目类型。

设置没有太多麻烦(我对InstallShield很新),我可以从这个项目中生成.exe和.msi。 但是,我留下的唯一问题是调用其中一个第三方安装程序。 该第三方安装程序(由NSIS制造)轮流调用另一个基于MSI的安装程序。

这导致出现错误1500 - 在另一个正在运行时无法运行msi类型的安装。

我已经尝试安排CA(用于调用第三方安装程序)作为第一个操作和最后一个,但没有成功。 在采用更加非正统的方案之前(比如在我们的安装程序完成后运行的Windows任务管理器上创建任务,或者在下次重新启动并强制重新启动时 - 我们的客户不喜欢)或我们不捆绑的方案'faulting'安装程序(我们真的希望能够移交一个intaller而不是多个),我想我会问你的意见。

我已经尝试在互联网上的各个地方寻找解决方案,但要么因为错误的关键字而失败,要么就是我没有在正确的帖子上发现错误。

我们是否还有任何选项可以创建一个能够调用此第三方安装程序的MSI安装程序(它会轮流调用msi安装程序)?

2 个答案:

答案 0 :(得分:1)

由于不接受EXE引导程序,因此只有一个解决方案:

  • 将先决条件安装程序存储在MSI的Binary表中
  • 创建一些custom actions,从该表中提取它们并启动它们
  • InstallUISequence中安排他们,例如在进度对话框
  • 之前
  • 使用searches检测是否已安装先决条件
  • 使用搜索结果调整自定义操作

基本上,您需要在安装UI期间启动它们。如果在InstallExecuteSequence期间启动它们,它将无法工作。

我不认为基本的MSI项目支持这一点,但更高级的项目类型可能支持它。其他设置创作工具为此提供直接支持。

答案 1 :(得分:0)

您可以尝试使用InstallShield的“链式.msi包”功能。