Domanda

Sto utilizzando il programma di installazione VS2008 (più un'azione Orca personalizzata) per creare un programma di installazione per il mio prodotto .NET.

Ho scoperto di recente che uno degli assembly di terze parti che stavo utilizzando è specifico per x86 (poiché include del codice nativo);pertanto, i clienti x64 riscontravano arresti anomali all'avvio con errori relativi all'assembly non appropriato per la loro piattaforma.

Ho inviato a tale cliente una copia della versione x64 di questo assembly di terze parti e gli ho detto di copiarla semplicemente su quella x86 esistente.Ha funzionato, dolcezza!Quindi ora devo solo fare in modo che il programma di installazione lo faccia per me.

Questo in realtà sembra non banale :(.Idealmente, voglio solo che il programma di installazione (che sarebbe x86, poiché può essere eseguito su entrambe le piattaforme) includa entrambe le versioni x86 e x64 di questo assembly di terze parti e installi quella appropriata.In altre parole, voglio un unico programma di installazione che semplifichi la vita dei miei utenti.

Pensavo di aver risolto il problema, utilizzando le istruzioni condizionali MSI e tutto il resto.Ma a quanto pare no...I progetti di configurazione VS2008 non compiono se non specifichi "x86" o "x64". Se si specifica X86, fornisce un errore di compilazione dicendo che non può includere l'assemblaggio X64.Se specifichi x64, il risultato non potrà essere eseguito su un computer x86.Dannazione!

Qualcuno deve aver avuto questo problema prima.Sfortunatamente Google non è d'aiuto, quindi mi rivolgo a StackOverflow!

È stato utile?

Soluzione

Se ho capito bene, vuoi fare una copia di un file se stai installando su x86 e un file diverso (con lo stesso nome) se stai installando su una piattaforma x64.

Prima di tutto, non è possibile creare un MSI per 2 piattaforme diverse, poiché un MSI x64 semplicemente non funzionerà su una piattaforma x86 e un MSI x86 verrà installato utilizzando WOW64 su una piattaforma x64.

D'altra parte, PUOI creare un MSI x86 che contenga 2 diverse versioni di un file e copiare selettivamente il file appropriato durante l'installazione.

Il modo più semplice è utilizzare WIX (V3) invece del generatore MSI VS2008 integrato.WIX ti offre un controllo molto maggiore su cosa viene installato sul computer del cliente e dove, la possibilità di generare programmi di installazione diversi per piattaforme diverse e il supporto completo di MSBuild come bonus aggiuntivo.(Vedere http://wix.sourceforge.net per maggiori informazioni.)

Nel caso ti stia chiedendo se WIX è ancora in versione Beta, i file MSI generati sono perfettamente OK e non ho ancora riscontrato alcun bug.(E sviluppo progetti di installazione per vivere.)

Infine, puoi verificare con la proprietà VersionNT64 se un programma di installazione x86 è in esecuzione su una piattaforma x64.Se quella proprietà è presente, stai utilizzando x64, altrimenti stai utilizzando un x86.

Spero che questo ti aiuti.

Altri suggerimenti

Quando ho esaminato la questione un anno fa, sono giunto alla conclusione che non era possibile.Vale la pena notare che molti file MSI forniti da Microsoft sono disponibili in versioni x86 e x64 separate e, presumibilmente, fornirebbero un solo file se ciò fosse possibile.

Ho avuto un certo successo utilizzando due funzionalità per includere selettivamente i due set di file (ovviamente in componenti separati, con i loro identificatori di file personalizzati!).

L'installazione deve essere contrassegnata come x32 per essere installata sia su x32 che su x64.Verrà sempre installato nelle directory x32 e verrà in gran parte trattato come un'applicazione a 32 bit in esecuzione su WOW.

Utilizzando la proprietà VersionNT64 è possibile determinare se è presente un'installazione di Windows 64 e installare in modo condizionale i file necessari.

Non sono sicuro di quanta di questa funzionalità sia disponibile nei progetti di installazione di VS2008: sto utilizzando altri strumenti commerciali per configurare il programma di installazione in questo modo.Ovviamente puoi anche usare Orca per farlo, anche se non è stato banale farlo funzionare con strumenti commerciali e Orca è molto più difficile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top