Назначение
Пользовательское действие для запуска процедуры резервного копирования для сохранения файла конфигурации (поскольку пользователям нельзя доверять это, и я хочу минимизировать обращения в службу поддержки, пытаясь исправить 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", и мое определение будет соответствовать им, но проблема не устранена.
Любой вклад будет оценен.