我有一个安装项目,其中包含wixproj中的BootstrapperFile
个项目,并使用GenerateBootstrapper
生成一个setup.exe,它引导了6个项目(例如.NET 4.0,Adobe Acrobat Reader,Adobe Flash Player) 。
此setup.exe可单独使用。我可以卸载Adobe Acrobat Reader,然后使用setup.exe重新安装它。对于先决条件,OutDir
中的文件为Folder1
,Folder2
... Folder6
,然后是setup.msi和setup.exe。
我有另一个生成App.msi的安装项目。这个App.msi可以单独安装。
我现在想按以下顺序链接以上两项:setup.exe - > App.msi
我能够单独使用Chain App.msi并且它可以工作。
Chain元素如下所示:
<Chain>
<ExePackage SourceFile="$(var.SetupPrereqs.TargetDir)setup.exe" Cache="no" ></ExePackage>
<MsiPackage SourceFile="$(var.Setup.TargetDir)App.msi" ForcePerMachine="yes" Cache="no"></MsiPackage>
</Chain>
但是我无法链接ExePackage。我收到以下错误:
[0984:2360][2013-07-25T11:19:34]e000: Error 0x80070643: Process returned error: 0x643
[0984:2360][2013-07-25T11:19:34]e000: Error 0x80070643: Failed to execute EXE package.
[0FD8:2240][2013-07-25T11:19:34]e000: Error 0x80070643: Failed to configure per-machine EXE package.
[0FD8:2240][2013-07-25T11:19:34]i319: Applied execute package: setup.exe, result: 0x80070643, restart: None
[0FD8:2240][2013-07-25T11:19:34]e000: Error 0x80070643: Failed to execute EXE package.
VS日志执行以下操作:
Line 19: 'Adobe Reader XI' RunCheck result: No Install Needed
Line 37: 'Windows Media Player 11' RunCheck result: No Install Needed
Line 70: 'Windows Installer 4.5' RunCheck result: No Install Needed
Line 92: 'Adobe Flash Player 11 ActiveX' RunCheck result: No Install Needed
Line 106: 'Microsoft .NET Framework 4 (x86 and x64)' RunCheck result: No Install Needed
Line 116: 'Microsoft Visual Studio 2010 Report Viewer' RunCheck result: No Install Needed
这里失败了: 启动应用程序。 错误:无法找到应用程序文件'setup.msi'。
如何确保setup.exe最终找到setup.msi?
我实际上不需要运行setup.msi。如果控件回到Chain就足够了。
答案 0 :(得分:1)
在ExePackage中添加msi文件作为Payload元素解决了这个问题。
<ExePackage SourceFile="$(var.SetupPrereqs.TargetDir)setup.exe">
<Payload SourceFile="$(var.SetupPrereqs.TargetDir)setup.msi"></Payload>
</ExePackage>