Мне интересно, возможно ли вручную запустить элемент RemoveFolderEx из настраиваемого действия.Наверное, нет, но кто-то может знать способ, которого я не знаю.
Моя проблема в том, что я хочу запустить элемент RemoveFolderEx, но только на истинном UNINSTALL, однако моя программа выполняет его при обновлении какЯ установил его для удаления перед переустановкой.
Я пробовал это с помощью этого метода Wix: условие для свойства не работает однако оно не работало и все еще работало при выполнении переустановки.
Единственное, о чем я могу думать, - это возможность вручную отключить RemoveFolderEx из настраиваемого действия, которое, как я знаю, выполняется в правильной точке и только при истинном удалении.Возможно, мое пользовательское действие могло бы использовать d ++ c ++, а затем вручную добавить команду в интерфейс MSI, но если я зайду так далеко, то вполне возможно, что я сам полностью напишу логику удаления.
Спасибо.Нил
РЕДАКТИРОВАТЬ: я наконец-то получил эту работу, вот несколько примеров wix, чтобы показать, что я сделал.
<Property Id='P.REMOVEDATAFOLDER' Secure='yes' />
<DirectoryRef Id="DATADIR">
<Component Id="C.RemoveDataFolder" Guid="myguid" KeyPath="yes">
<util:RemoveFolderEx On="uninstall" Property="P.REMOVEDATAFOLDER" />
</Component>
</DirectoryRef>
<CustomAction Id="CA.SetDataFolder" Property="P.REMOVEDATAFOLDER" Value='[DATADIR]' />
<InstallExecuteSequence>
<Custom Action="CA.SetDataFolder" Before="ValidateProductID" >(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
Свойство P.REMOVEDATAFOLDER только устанавливается при истинном удалении сразу после чтения DATADIR из реестра, но до действия CostInitialize.