Ações personalizadas do WIX com Wixui_minimal
-
08-07-2019 - |
Pergunta
Então, estou tentando, depois que um aplicativo termina de instalação (embora, na verdade, isso realmente não importa quando o aplicativo secundário é executado, pois não interage com os arquivos instalados durante a instalação), execute outro programa que seja incluído com o aplicativo. Código pertinente (com várias coisas substituídas por "...":
<directory ...>
<component ...>
<File Id="IDINST" ... />
</component>
</directory>
...
<CustomAction Id="IDACTION" FileKey="IDINST" ExeCommand="..." Return="ignore" />
...
<InstallExecuteSequence>
<Custom Action="IDACTION" After="CostFinalize" />
</InstallExecuteSequence>
Eu verifiquei o diretório e o arquivo estava onde eu esperava, mas ele não foi executado após o processo de instalação. Na verdade, eu realmente nem quero que esse arquivo seja instalado, basta executar e depois excluído. Mas vou ignorar isso por enquanto. De qualquer forma, eu vi vários exemplos de ações desencadeantes após diálogos, mas já que estou usando atualmente <UIRef Id="WixUI_Minimal" />
Eu não acho que seja ideal.
Solução
O CostFinalize acontece muito antes de instalar os arquivos de ação diferida (que na verdade coloca o arquivo). Assim, o CustomAction está falhando (porque o arquivo não está disponível) silenciosamente (porque o retorno é ignorado)
Você precisa do seu CustomAction agendado pelo menos após os arquivos de instalação e ser adiado ou se o CustomAction não puder executar o diferido, ele deve ser após o InstallFinalize (é claro, não pode causar reversão após o instalação do Finalize).