Управляемый загрузчик wix: ошибка отката

У меня есть несколько EXECPackages, связанных в моем управляемом загрузчике, например:

<ExePackage Id="Test1" SourceFile="D:\Test\TestBatch.bat" Vital="yes" Compressed="yes" 
              InstallCommand="Testinstall1"
              UninstallCommand="Testuninstall1"
              />
<ExePackage Id="Test2" .../>

Я хочу, чтобы мой откат выполнял команду удаления. Сгенерированный файл журнала содержит следующую информацию:

Откат: удалить. Применение отката пакета: Test2, действие: Uninstall, путь: C: \ ProgramData \ Пакет Cache \ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat, аргументы: 'C: \ ProgramData \ Пакет Cache \ AD944C8E8D75C79F57819C331F46D15B4CFD9172 \ TestBatch.bat "Testuninstall2' [24F4: 246C ][2013-06-05T14:45:10]e000: ошибка 0x80070003: не удалось создать процесс по пути: C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat [24F4:246C][2013-0] 10] e000: ошибка 0x80070003: не удалось выполнить пакет EXE. [1654:27A8][2013-06-05T14:45:10]e000: ошибка 0x80070003: не удалось настроить пакет EXE для каждой машины.

Я понял, что при запуске отката (Result.Cancel) кэшированная папка, содержащая полезную нагрузку пакета Exe, удаляется из C:\ProgramData\Package Cache.

Однако раньше это работало.


person microsoftprogrammer    schedule 29.05.2013    source источник


Ответы (1)


UninstallCommand выполняется при откате, если пакет устанавливается. Я видел, как эта проблема возникает, когда один и тот же исполняемый файл используется для нескольких элементов ExePackage в одном файле Chain. Способ, которым движок Burn кэширует пакеты, использует хэш исполняемого файла для определения местоположения. Таким образом, если вы поместите тот же исполняемый файл в Chain, он может быть преждевременно удален. Убедитесь, что каждый исполняемый пакет в вашем Bundle уникален.

PS: настоятельно рекомендуется иметь Обнаружениеусловия в ExePackage

person Rob Mensching    schedule 22.06.2013