刻录ExePackage无法找到msi

时间:2013-07-25 09:29:51

标签: wix installation bootstrapper burn

我有一个安装项目,其中包含wixproj中的BootstrapperFile个项目,并使用GenerateBootstrapper生成一个setup.exe,它引导了6个项目(例如.NET 4.0,Adobe Acrobat Reader,Adobe Flash Player) 。

此setup.exe可单独使用。我可以卸载Adobe Acrobat Reader,然后使用setup.exe重新安装它。对于先决条件,OutDir中的文件为Folder1Folder2 ... 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就足够了。

1 个答案:

答案 0 :(得分:1)

在ExePackage中添加msi文件作为Payload元素解决了这个问题。

<ExePackage SourceFile="$(var.SetupPrereqs.TargetDir)setup.exe">
        <Payload SourceFile="$(var.SetupPrereqs.TargetDir)setup.msi"></Payload>
</ExePackage>