Проблема с пользовательским действием удаления WIX - PullRequest
0 голосов
/ 30 марта 2020

Назначение

Пользовательское действие для запуска процедуры резервного копирования для сохранения файла конфигурации (поскольку пользователям нельзя доверять это, и я хочу минимизировать обращения в службу поддержки, пытаясь исправить it ...).

Issue

Следующий CA был определен для обнаружения наличия известного файла и запроса места для резервной копии

<InstallExecuteSequence>   

  <Custom Action="Backup.SetProperty" After="BackupCA" />

  <Custom Action='BackupCA' Before="RemoveFiles"> (REMOVE~="ALL") AND (NOT UPGRADINGPRODUCTCODE)</Custom>



</InstallExecuteSequence>





<CustomAction Id="Backup.SetProperty" Property="BackupCA" Value="InstallPath=[SVSMGRFOLDER]"/>

<CustomAction Id ="BackupCA" BinaryKey="BackupBinary" DllEntry="UninstallProcess" Execute="deferred" Return="check" Impersonate='no' HideTarget='no'/>

<Binary Id="BackupBinary"  SourceFile="$(var.UninstallHelper.TargetDir)$(var.UninstallHelper.TargetName).CA.dll"/>

CA запускается, когда я этого хочу (ie как часть деинсталляции), но, похоже, запускается не в той части деинсталляции (или асинхронно процессу деинсталляции). Эффект net - это файл, который должен быть сохранен (тот, который был доставлен MSI во время установки), уже был удален при запуске CA.

Я не вижу причины для этого, так как видел множество сообщения, относящиеся к Before = "RemoveFiles", и мое определение будет соответствовать им, но проблема не устранена.

Любой вклад будет оценен.

...