如何运行多个msi文件

3
对于我的应用程序,我需要安装主要应用程序,并允许用户选择一个或多个附加功能进行安装。 我尝试运行主msi并使用自定义操作来安装其他功能的msi文件。 但是,由于MSI不支持嵌套安装,所以这种方法不起作用。我是否应该构建一个窗口应用程序,给用户选择并在内部按顺序调用msi文件?附加的msi文件是我们构建的自定义应用程序。它们不是先决条件。我们将这些特性分成不同的msi文件,因为我们想对特性msi文件进行更改而无需重新编译主msi文件。请帮忙!谢谢。 Amy Pham

其他的MSI是什么?如果它们是先决条件,例如SQL Server 2005 Express,那么VS安装程序组件支持将它们作为安装过程的一部分安装。 - user195488
这些MSI文件不是先决条件组件。这些MSI文件是我们构建的自定义应用程序。 - Amy Pham
你用什么工具创建MSI?如果将这些其他应用程序作为功能添加到MSI中,会怎样呢?也就是说,结果将是一个单一的MSI。 - Dirk Vollmar
我使用Visual Studio来构建我的安装程序。我们将附加功能分成不同的msi文件的原因是,我们希望在不重新编译主msi的情况下对功能msi文件进行更改。如果有功能发生变化,用户可以独立运行该功能msi文件,而不必担心主应用程序。如果您不理解我的设置,请告诉我。我真的需要帮助,因为我的经理希望我有一个解决方案。 - Amy Pham
2个回答

1
由于MSI尚不支持嵌套安装,您必须创建一个所谓的引导程序。这是一个单独的.exe文件,通常命名为setup.exe。这个exe的目的是在启动您的MSI之前(下载并)安装您的MSI的先决条件。
可以使用Visual Studio生成引导程序。
请参阅此相关问题:

如何在另一个安装程序中创建安装程序?


谢谢Divo,我希望你在线。我看到了你的回答,认为你是帮助我的完美人选。这些msi文件不是先决条件。这些msi文件是与主应用程序交互的自定义应用程序。据我所知,引导程序只能安装预备工作。对于我的场景,我将运行主要的msi并提供用户界面对话框以允许用户选择其他应用程序。对于所有已选中的其他应用程序,我需要安装这些msi文件。请帮忙。谢谢。 - Amy Pham
也许这个问题对你也很有趣:https://dev59.com/yUXRa4cB1Zd3GeqPuspA - Dirk Vollmar
由于我的功能是MSI文件,我不知道如何进行条件安装。我以为可以使用自定义操作来安装这些MSI文件,但正如你指出的那样,MSI不支持嵌套安装。 - Amy Pham
除非您需要 MSI 4.5 或更高版本,否则不支持嵌套/链接的 MSI 安装。我认为,divo 引用的合并模块(MSM)文章是您想要的,特别是如果自定义应用程序不能单独安装。 - DaveE

1

我认为简短的答案是,你不能使用MSI来实现你所描述的功能。由于Windows Installer只允许同时安装一个MSI,因此您可能需要编写一个非MSI应用程序,该应用程序可以呈现UI,并根据用户的选择顺序安装MSIs。如果您不想将它们编译到主设置程序中,您可以将MSIs用作外部资源。


感谢 CodeSawyGeek,我决定做同样的事情。我只是想问一下这个问题,以防有我不知道的不同解决方案。我已经开发了一个应用程序来完成这个任务。 - Amy Pham
现在,您可以使用MSI 4.5或更高版本。 我上次查看时,这些版本的普及率相当低。 - DaveE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接