Come faccio a condizionalmente installare un file con WiX basato sul computer di destinazione (32bit o 64bit)?
-
06-09-2019 - |
Domanda
Ho un file che ha una versione a 32 bit e una versione a 64 bit. Se installo la mia applicazione su una macchina a 32 bit, voglio che la versione a 32 bit del file da installare. Allo stesso modo, la versione a 64 bit dovrebbe ottenere installato se l'installazione viene eseguito su un computer a 64 bit. Come faccio a controllare che tipo di macchina il programma di installazione viene eseguito su con WiX?
Per favore, non di una sola riga risposte. Sto cercando specifici tag WiX e dove metterli nel mio script WiX.
Soluzione
Si potrebbe probabilmente solo fare due componenti separati, utilizzando le condizioni
VersionNT64
e
Not VersionNT64
Ma il modo corretto è quello di compilare installatori separate per 32 e 64 bit sistemi operativi e componenti a 64 bit dovrebbe anche essere contrassegnati come tali (con Win64="yes"
) - non so se è ancora possibile marcare un pacchetto di Windows Installer come indirizzati verso Intel e x64. Solo il tempo che abbia mai fatto un impianto di un'architettura mista è con NSIS, tutti i miei installatori WiX hanno programmi di installazione separati per ogni architettura.
Altri suggerimenti
Il modo corretto di farlo è quello di compilare due configurazioni, una per 32 (86) e uno per 64 (amd64). Poi si comprime questi due msi all'interno di una singola msi ed eseguire quello appropriato in fase di esecuzione.
È possibile creare un file di base WXS utilizzando le variabili di ambiente o del preprocessore e compilare gli attributi richiesti prima della compilazione. Un'altra opzione sarebbe essere in esecuzione di uno script prima della build che include diversi GUID nel file per l'installazione specifica. In breve, non credo ci sia un modo semplice di installatori di costruzione per diverse architetture, quindi bisogna usare utility aggiuntive.