使用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 回答
Burn不支持该场景 . 它假定您的包中的.cabs是必需的,并始终验证所有包和有效负载 .