A atualização do Wix Tools usa ações customizadas antigas
descobrimos um comportamento estranho usando as ferramentas de instalação do WIX. Implementamos algumas versões principais (2.2.0 - a 2.2.4). Na versão 2.2.5, alteramos pequenas coisas nas ações personalizadas (antes de usarmos o XCOPY, agora usamos o RoboCopy porque ele possui um comando "MOVE" e não apenas uma cópia).
Mas quando agora atualizamos do 2.2.4 para o 2.2.5, a instalação ainda usa o antigo comando Copy em vez do novo comando MOVE, mas isso não pode acontecer porque o 2.2.5 não possui nenhum comando Copy. Se eu implantar um 2.2.6 (idêntico ao 2.2.5) e atualizar do 2.2.5, ele usará o novo processo de atualização ... Parece que a atualização usa o MSI antigo.
Existe alguma maneira de impedir esse comportamento? Isso interrompe completamente o processo de atualização, pois os arquivos de configuração existentes não são copiados corretamente na atualização.
Não podemos forçar o cliente a limpar o registro ou remover qualquer cache do formulário de arquivos MSI pelo GUID ...
Qualquer ajuda apreciada. desde já, obrigado
UPDATE: Nova ação personalizada no Product.wxs
<Property Id="C_TEMP" Value="C:\Temp" />
<Property Id="ROBOCOPY_EXE">robocopy.exe</Property>
<CustomAction Id="CopyToTemp" Property="ROBOCOPY_EXE" Return="ignore" ExeCommand='"[INSTALLDIR]\Configuration" "[C_TEMP]\ServerSettings" ServerSettings.json' />
<CustomAction Id="CopyFromTemp" Property="ROBOCOPY_EXE" Return="ignore" ExeCommand='"[C_TEMP]\ServerSettings" "[INSTALLDIR]\Configuration" ServerSettings.json /MOVE /IS' />
Ação personalizada antiga
<Property Id="C_TEMP" Value="C:\Temp" />
<Property Id="XCOPY_EXE">xcopy.exe</Property>
<CustomAction Id="CopyToTemp" Property="XCOPY_EXE" Return="ignore" ExeCommand='"[INSTALLDIR]\Configuration\ServerSettings.json" "[C_TEMP]\ServerSettings.json.bak*" /YIR' />
<CustomAction Id="CopyFromTemp" Property="XCOPY_EXE" Return="ignore" ExeCommand='"[C_TEMP]\ServerSettings.json.bak" "[INSTALLDIR]\Configuration\ServerSettings.json*" /YIR' />
Depois, o código não mudou até o momento
<InstallExecuteSequence>
<Custom Action="CopyToTemp" Before="InstallInitialize">Installed AND (NOT REMOVE="ALL" OR UPGRADINGPRODUCTCODE)</Custom>
<Custom Action="CopyFromTemp" Before="SetVersionsInRegistry">NOT Installed OR Installed AND (NOT REMOVE="ALL" OR UPGRADINGPRODUCTCODE)</Custom>
.....
</InstallExecuteSequence>