我的公司正在开发一个依赖于PostgreSQL的应用程序,我们正在使用WIX开发安装程序。我们如何使PostgreSQL安装程序(也是一个msi文件)在安装我们的应用程序时自动运行?我们需要在Wix中设置什么?如果您碰巧知道任何网页解释这一点,请张贴链接。谢谢!如何在WIX中安装时运行其他程序(PostgreSQL)的安装程序?
回答
一个Windows Installer会话无法启动另一个会话,因此一个msi无法安装其他msi。因此,您需要制作第三个应用程序,一个引导程序,它将安装两个MSI文件。
要创建这样的引导程序,您可以使用msbuild的generatebootstrapper task。 wix文档已经介绍了如何使用此任务来生成安装.NET框架的引导程序。请参阅How To: Install the .NET Framework Using a Bootstrapper。这为.NET框架使用了预定义的引导程序包。
但是,在这种情况下,您还必须为PostgreSQL msi编写您自己的引导程序包。一种方法是研究C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\
(或Windows SDK中的那些)中的现有引导程序包并阅读documentation of the Bootstrapper Manifest XML format。 bootstrapper generator工具也可能有所帮助。
你可能会认为这一切都很复杂。对于更简单的生成引导程序的替代方法,请参阅dotNetInstaller,它实际上是一个通用引导程序生成器。它看起来很光滑,但我还没有任何实际操作经验。
您不能一次运行两个MSI安装,您需要一个单独的引导程序来依次安装每个MSI。
这是我写的一个引导程序,用于将MSXML 6添加到我们的安装程序中。下面的网站是在帮助我了解什么需要做的关键,或许能填补你可能有任何空白: http://msdn.microsoft.com/en-us/library/aa730839%28VS.80%29.aspx
专为您的有关获取安装程序静默运行的问题,则需要到适当的开关添加到Command元素的属性@Arguments,这可能会是这个样子:
<Command PackageFile="PostgreSQL.msi" Arugments="/quiet"/>
您还需要找到你正在使用的MSI的产品代码(使用MS ORCA)进行确保如果PostgreSQL已安装,引导程序不会尝试运行安装:
<InstallChecks>
<MsiProductCheck
Property="IsPostgresInstalled"
Product="{PRODUCT-CODE-OF-POSTGRESQL-MSI}"/>
</InstallChecks>
product.xml:
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Microsoft.MSXML.6.SP2">
<PackageFiles>
<PackageFile Name="msxml6-KB954459-enu-x86.exe"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck
Property="IsMsiInstalled"
Product="{1A528690-6A2D-4BC5-B143-8C4AE8D19D96}"/>
</InstallChecks>
<Commands>
<Command PackageFile="msxml6-KB954459-enu-x86.exe" Arguments="">
<InstallConditions>
<BypassIf
Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" String="GeneralFailure"/>
</ExitCodes>
</Command>
</Commands>
</Product>
这里是我与运行的MSBuild项目:
<Project ToolsVersion="3.5"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<BootstrapperFile Include="Microsoft.MSXML.6.SP2" >
<ProductName>Microsoft MSXML 6 SP2</ProductName>
</BootstrapperFile>
</ItemGroup>
<Target Name="setup">
<GenerateBootstrapper
ApplicationFile="@[email protected]"
ApplicationName="@[email protected]"
BootstrapperItems="@(BootstrapperFile)"
Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper"
ComponentsLocation="Relative"
OutputPath="."
Culture="de"/>
</Target>
</Project>
我希望这有助于。
你好Zachary, 我真的很感谢你的帮助! – Ray 2010-01-09 02:16:05
- 1. 用WiX安装程序安装PostGreSql
- 2. Wix安装程序在主要安装完成后运行msi
- 3. 如何在Wix中安装后运行已安装的应用程序?
- 4. WIX安装程序时间框架来开发安装程序
- 5. Wix安装程序安装.net如果没有安装
- 6. Wix安装程序 - 创建安装程序,总是重新安装在自己
- 7. Windows安装程序XML(WiX)
- 8. WIX安装程序升级
- 9. Wix安装程序维护
- 10. WiX服务安装程序
- 11. 如何使用wix安装程序运行多个安装的exe文件?
- 12. 安装程序安装在VS.NET 2008中的其他项目
- 13. wix - 安装程序或补丁安装程序
- 14. Wix安装程序 - 如何动态选择要在安装程序中装运哪些文件?
- 15. 创新安装:安装其他安装程序,并继续我的安装
- 16. 运行程序安装
- 17. ProgramFiles64Folder正在安装到WIX安装程序中的\ Program Files(x86)\
- 18. Wix安装程序在安装失败后执行程序出现错误2896
- 19. 使用WIX在安装程序上运行时更改映像
- 20. 应用程序安装在运行时
- 21. 在WIX安装程序中添加GRID
- 22. 在wix安装程序中填充ListBox
- 23. install4j安装程序不会使UNIX安装程序可运行
- 24. 运行安装程序或检查程序是否安装
- 25. 从C#安装程序安装程序运行另一个MSI
- 26. Wix:安装可执行程序
- 27. 如何使用WiX安装程序安装WCF服务?
- 28. WIX安装程序如何删除安装
- 29. 如何在MSI安装程序中搭载MSI安装程序
- 30. (Un)在WIX Burn安装程序中安装NSIS包
非常感谢wcoenen – Ray 2009-12-29 17:39:18