Se non è possibile ottenere un modulo di unione (che sarebbe la soluzione preferita, se l'articolo è reso disponibile dall'editore), è possibile includere un EXE con l'installazione e quindi eseguirlo durante l'installazione di WiX come azione personalizzata.
Dal excellent tutorial on WiX a Tramontana, ecco una page on custom actions e come configurarli - che, fondamentalmente, necessario definire un elemento <CustomAction>
nel file WiX e specificare cosa fare quando è eseguito:
<CustomAction Id='LaunchFile' FileKey='FoobarEXE' ExeCommand='' Return='asyncNoWait' />
Questa volontà avvia un file che hai appena installato come parte della tua app e che fa riferimento nello script WiX come FoobarEXE
.
<CustomAction Id='LaunchFile' BinaryKey='FoobarEXE' ExeCommand='' Return='asyncNoWait' />
Questo sarebbe fare riferimento a un file binario (per esempio un file EXE), che si includere nel pacchetto di installazione WiX (MSI o CAB), ma che non è stato installato come parte dell'installazione, e che è stata estratta come file binario.
Una volta che sapete che cosa farete, è necessario definire quando nella sequenza delle fasi di installazione, questa azione personalizzata deve essere eseguita:
<InstallExecuteSequence>
...
<Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
Qui, l'azione personalizzata denominata LaunchFile
verrà eseguito dopo l'installazione è stata finalizzata, ma solo, se è stato stabilito che l'app non è stata ancora installata.
Quindi, immagino, dovresti essere in grado di fare ciò che ti stai sforzando di fare con un'azione personalizzata in WiX - consulta lo WiX 2.0 documentation e lo Steven Bone's blog post series per ulteriori informazioni.
Spero che questo aiuti!
Marc
Sì, crea un MSI - ma è comunque possibile chiamare applicazioni esterne, anche quelle sono solo EXE. Certo, un modulo di fusione sarebbe il modo migliore per andare, ma se è disponibile solo un EXE, questo può essere chiamato anche tramite un'azione personalizzata! –
Non se quell'EXE è in realtà un bootstrapper che a sua volta invocherà un MSI. La mia comprensione era che l'installatore POS era in realtà un bootstrapper ... ma potrei sbagliarmi. – Nestor
Ah sì - buon punto. Se l'installazione POS è effettivamente un MSI, allora dovresti avere un modulo di unione –