首页 文章

使用'optional' CAB文件的MSI包上的WIX引导程序失败

提问于
浏览
0

使用WIX 3.10:

我使用一些外部CAB文件编写了一个MSI包 . 有时我们通过网络部署,我们省略一个或多个CAB文件(其中包含程序执行不需要的文件) . 在安装时,我们取消选择相应的功能 . 在这种情况下,丢失CAB没有问题 .

现在我用管理的BA编写了一个bootstrapper . 在包裹链中,我设置'Cache = no':

<MsiPackage Id="MyInstaller"
 Compressed="no" Visible="no" ForcePerMachine="yes"
 EnableFeatureSelection="yes"
 Cache="no"
 SourceFile="$(var.MyPackageFileName)">

问题是:在运行时,引导程序验证是否存在所有软件包及其CAB文件(如果有) . 它在执行链中的所有包之前执行此操作 .

从日志(缩短):

Acquiring package: MyInstaller, payload: MyInstaller, copy from: D:\X\MX-8-2-0-77-x86-Release.msi
Setting string variable 'WixBundleLastUsedSource' to value 'D:\X\'
Verified acquired payload: MyInstaller at path: C:\ProgramData\Package Cache\.unverified\MyInstaller, moving to: C:\ProgramData\Package Cache\{970B002C-448C-46E8-856C-5F9C5B234AB4}v8.2.0.77\MX-8-2-0-77-x86-Release.msi.
Acquiring package: MyInstaller, payload: cab502ABC9C22436673DD367A3B0E989121, copy from: D:\X\MX-8-2-0-77-x86-Release-Data.CAB
Verified acquired payload: cab502ABC9C22436673DD367A3B0E989121 at path: C:\ProgramData\Package Cache\.unverified\cab502ABC9C22436673DD367A3B0E989121, moving to: C:\ProgramData\Package Cache\{970B002C-448C-46E8-856C-5F9C5B234AB4}v8.2.0.77\MX-8-2-0-77-x86-Release-Data.CAB.
Prompt for source of package: MyInstaller, payload: cabBC894B366CE86BC776B6C0F16A45AEC9, path: D:\X\MX-8-2-0-77-x86-Release-HelpAndDoc.CAB
Failed to resolve source for file: D:\X\MX-8-2-0-77-x86-Release-HelpAndDoc.CAB, error: 0x80070002.
Error 0x80070002: Failed while prompting for source (original path 'D:\X\MX-8-2-0-77-x86-Release-HelpAndDoc.CAB').
Failed to acquire payload: cabBC894B366CE86BC776B6C0F16A45AEC9 to working path: C:\Users\CHRIST~1.THI\AppData\Local\Temp\{3CF902F0-06EB-46E8-BECF-900FA010D2EC}\cabBC894B366CE86BC776B6C0F16A45AEC9, error: 0x80070002.
Error 0x80070002: Failed while caching, aborting execution.

我不想提示丢失文件 . 我不想下载丢失的文件 . 而且我不想验证CAB . 因此我禁用了包缓存 . 但WIX boostrapper主机似乎忽略了这一点 .

所有CAB文件也存在于编译时创建的“BootstrapperApplicationData.xml”中 . 但我没有在引导程序源中提及它们 . WIX刻录明显分析包 .

如何使引导程序主机忽略一个MSI程序包丢失的CAB文件?

1 回答

  • 0

    Burn不支持该场景 . 它假定您的包中的.cabs是必需的,并始终验证所有包和有效负载 .

相关问题