Azioni personalizzate Wix con WixUI_Minimal
-
08-07-2019 - |
Domanda
Quindi, sto provando a farlo, dopo che un'applicazione ha terminato l'installazione (anche se in verità, non importa quando viene eseguita l'applicazione secondaria, poiché non interagisce con i file installati durante l'installazione), eseguine un'altra programma fornito in bundle con l'applicazione. Codice pertinente (con varie cose sostituite con & Quot; ... & Quot ;:
<directory ...>
<component ...>
<File Id="IDINST" ... />
</component>
</directory>
...
<CustomAction Id="IDACTION" FileKey="IDINST" ExeCommand="..." Return="ignore" />
...
<InstallExecuteSequence>
<Custom Action="IDACTION" After="CostFinalize" />
</InstallExecuteSequence>
Ho controllato la directory e il file era dove mi aspettavo, ma non è stato eseguito dopo il processo di installazione. In verità non voglio nemmeno che quel file venga installato, solo eseguito e quindi eliminato. Ma per ora lo ignorerò. Ad ogni modo, ho visto diversi esempi di azioni scatenanti dopo le finestre di dialogo, ma dal momento che sto usando <UIRef Id="WixUI_Minimal" />
non credo sia l'ideale.
Soluzione
CostFinalize si verifica molto prima dell'esecuzione dell'azione differita di InstallFiles (che posiziona effettivamente il file). Pertanto CustomAction non riesce (perché il file non è disponibile) in silenzio (perché Return è ignorato)
È necessario che CustomAction sia pianificato almeno dopo InstallFiles e sia rinviato o se CustomAction non può essere rinviato, deve essere dopo InstallFinalize (ovviamente, non può causare il rollback dopo InstallFinalize).