将 WiX 工具集 -> Torch.exe 与 Azure DevOps 管道一起使用不起作用

Using WiX Toolset -> Torch.exe with Azure DevOps Pipeline does not work

我正在使用 Azure DevOps Services 管道创建设置。此管道创建 MSI 和 wixpdb。然后我在命令行脚本中调用 torch.exe 以从两个不同的 wixpdb 创建补丁。这在本地工作没有问题,但是当我在 Azure DevOps 服务管道的命令行脚本中调用 torch.exe 时,我收到以下错误:

torch.exe : error TRCH0001 : A part of the path "C:\temp\Agent\s\test\udmonxof\udmonxof.cab" could not be found.

我该怎么做才能完成这项工作?

默认情况下,项目应该生成三个文件,.msi.cab.wixpdb文件。

对于azure devops pipeline,需要这三个文件都存在,才能成功创建patch。但在您的情况下,我们的系统无法在那里找到 .cab 文件。

因此,首先,请确保 .cab 文件在创建 MSI 和 wixpdg 文件时也已成功生成。

假设您的 WXS 文件中有一个媒体参数,请确保 EmbedCab 值为 no.

样本:

<Media Id="1"
       Cabinet="media1.cab"
       EmbedCab="no"
       DiskPrompt="Disk 1"
       VolumeLabel="Disk1" />

<Media Id="2"
       Cabinet="media2.cab"
       EmbedCab="no"
       DiskPrompt="Disk 2" 
       VolumeLabel="Disk2" />

我已经解决了如下问题:

这对我有帮助:https://github.com/wixtoolset/issues/issues/5778

我已在命令行脚本中将以下条目添加到注册表中:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AppContext] "Switch.System.DisableTempFileCollectionDirectoryFeature"="true"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AppContext] "Switch.System.DisableTempFileCollectionDirectoryFeature"="true"

之后我调用了 torch.exe 并且没有再发生错误。