我有msi并想检查目标机器上是否安装了vsto运行时,我在我的msi中通过VS2008使用了启动条件,但它只将用户重定向到供应商的网站。我只想安装先决条件,如果它没有安装在机器上,并希望在msi运行期间安装先决条件。 它可以概括为:
当msi正在运行时:
我搜索并找到许多解决方案,如单个包可执行文件,自定义操作中的vb脚本,但要求不是使用安装程序发送任何内容,而且exe是可接受的:(
我安装了orca,但没有太多知识使用Orca自定义msi
感谢您的帮助.. 提前谢谢......
答案 0 :(得分:3)
您无法同时运行多个.msi程序包,因此如果pre-req是基于.msi的,它将无法运行。 (请记住,许多基于.msi的包都包含在.exes中。)
答案 1 :(得分:3)
WIX是用于创建Windows安装程序的最强大(免费)工具之一。我前段时间在Creating a localized Windows Installer & bootstrapper写了一篇端到端的文章,可能有所帮助。
例如,您可以通过在WIX文件中定义条件来强制执行先决条件。
<Condition Message="[ProductName] requires the Microsoft .NET Framework 4 Client Profile">
Installed Or NETFRAMEWORK40CLIENT
</Condition>
但是要安装先决条件,您需要一个boostrapper(EXE)。
上面的文章展示了如何使用dotNetInstaller创建托管EXE,在最终执行嵌入式MSI之前检查并安装这些先决条件。当然,您也可以将一大堆MSI链接在一起,它非常灵活。
我相信WIX还有一个名为Burn的工具,它原本打算在3.5版本中发布,我没有使用它,但它也提供了引导功能。
Orca并不真正用于编译MSI,它只对调试和挖掘内部非常有用。
答案 2 :(得分:2)
由于不接受EXE引导程序,因此只有一个解决方案:
基本上,您需要在安装UI期间启动它们。如果自定义操作在InstallExecuteSequence期间运行,则可能无效。
Visual Studio不支持此功能,但某些商业设置创作工具可直接支持它。如果您需要免费解决方案,可以使用WiX,但您需要自己编写自定义操作。
答案 3 :(得分:1)
您可能已经知道,Visual Studio为您生成的setup.exe文件可以安装许多先决条件。但是,您的问题表明您必须只发送一个MSI文件,因此setup.exe无法提供帮助。
相反,您可以创建自己的程序来安装先决条件。在安装中包含该程序,以便它将捆绑到MSI中,然后设置自定义操作以在安装时运行它。您甚至可以在安装程序中设置一个标志,以便程序实际上不会安装在目标计算机上 - 而是将它捆绑到MSI中并提供给安装程序。
如果您已经安装了基于.NET的代码,则解决方案更加容易:将项目安装程序类添加到现有代码中,然后设置自定义操作以运行安装程序类。但请注意,如果您要安装的先决条件是.NET运行时本身,则此方法将不起作用。