Windows MSI可以安装多个软件包吗?

时间:2012-01-15 09:49:02

标签: windows winapi mfc windows-installer

我在MFC中有一个调用MsiInstallProduct(installerFullPath, commandLine);

的代码

是否可以同时安装2个MSI产品? 只要他们都是独立的。

是否可以调用一个Windows函数并将其提供给我所有的MSI组件,它会逐个安装它们?

3 个答案:

答案 0 :(得分:4)

Windows Installer不允许同时安装多个MSI程序包。您需要一个接一个地触发安装,等待第一个安装完成后再启动第二个安装。在单个调用中安装它们的唯一选择是创建另一个MSI包,一个主要包,在其中将两个包作为链式包添加。

答案 1 :(得分:4)

在Windows Installer 4.5之前,Bogdan的回答是正确的。但是,在Windows Installer 4.5及更高版本中,您可以执行Multiple-Package Installation。通过调用MsiBeginTransaction,某些API组合(例如MsiInstallProductMsiApplyPatchMsiConfigureProduct,然后最终MsiEndTransaction来执行此操作。

从技术上讲,这些仍未完全安装在同一时间(并且需要调用多个函数),但这使它们成为一个事务的一部分。如果所有参与的软件包都已正确创作,则它们将全部安装,修补或配置(修改或删除),或全部回滚到其初始状态。

答案 2 :(得分:1)

Michael提到的多包安装正是链式包使用的支持,正如他所提到的,目标计算机上至少需要Windows Installer 4.5。

要创建一个MSI包,在其中添加两个链接,您可以使用不同的设置创作工具,免费和商业,具体取决于您可用的时间。这是一个工具列表: http://en.wikipedia.org/wiki/List_of_installation_software