Использование WiX Toolset -> Torch.exe с Azure DevOps Pipeline не работает - PullRequest
1 голос
/ 20 марта 2020

Я использую Azure конвейер DevOps Services для создания установки. Этот конвейер создает MSI и wixpdb. Затем я вызываю torch.exe в сценарии командной строки, чтобы создать патч из двух разных wixpdb. Это работает локально без проблем, но когда я вызываю torch.exe в сценарии командной строки в Azure DevOps Services Pipeline, я получаю следующую ошибку:

torch.exe: ошибка TRCH0001: часть путь "C: \ temp \ Agent \ 4 \ s \ test \ udmonxof \ udmonxof.cab" не найден.

Что я могу сделать, чтобы эта работа работала?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Я решил проблему следующим образом:

Это помогло мне: https://github.com/wixtoolset/issues/issues/5778

Я добавил следующие записи в реестр в сценарии командной строки :

[HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ .NETFramework \ AppContext] "Switch.System.DisableTempFileCollectionDirectoryFeature" = "true"

[HKEY_LOCAL_MACHINE \ WOWW \ \ \ \ W64WWWW64 \ AppContext] "Switch.System.DisableTempFileCollectionDirectoryFeature" = "true"

После этого я вызвал torch.exe, и больше никаких ошибок не возникает.

1 голос
/ 23 марта 2020

По умолчанию проект должен сгенерировать три файла: .msi, .cab и .wixpdb file.

Для azure devops конвейера, ему нужны все эти три файла, так что он может успешно создать патч. Но в вашем сценарии наша система не смогла найти там файл .cab.

Итак, во-первых, убедитесь, что файл .cab также был успешно создан при создании файлов MSI и wixpdg.

Предположим, в вашем файле WXS есть один аргумент носителя, убедитесь, что значение EmbedCab равно нет .

Пример:

<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" />
...