2010-07-01 13 views
17

Ho una grande applicazione web sviluppata con asp.net 3.5 e devo preparare un pacchetto di installazione che verrà utilizzato per distribuire l'applicazione su IIS 6 e 7. Ho fatto molte ricerche su Wix e Installsheild 2010 (pro) e bisogno di qualche consiglio prima di prendere una decisione. Ho notato che installsheild è piuttosto una spesa in termini di licenza, ma per me, ho abbastanza budget, quindi non sarà un problema. l'installatore dovrebbe essere in grado di eseguire i seguenti processi.Installshield o Wix

  • distribuire la risorsa web pubblicato (aspx ecc).

  • Crea directory virtuale .

  • Creare database su sql server ed eseguire alcuni script di inizializzazione .

  • Modificare i file XML e i file web.config .

  • Impostare l'autorizzazione per consentire la scrittura nei file nella directory virtuale.

Ho trovato che entrambe le tecnologie sono in grado di fare gli scenari di cui sopra, ma mi piacerebbe avere esperienza personale e consigli.

risposta

16

Sulla base della mia esperienza con Wix e InstallShield, raccomanderei l'uso di InstallShield a meno che non sia necessario un programma di installazione abbastanza semplice e diretto.Dico questo perché l'enorme curva di apprendimento di Wix è resa ancora più difficile dalla mancanza di informazioni disponibili

Non ci sono libri su Wix, quindi le tue risorse sono limitate a the Wix tutorial, che è dettagliata e lunga ma non copre ancora molto oltre le basi e i post sul blog che trovi tramite Google. Certo, ci sono molti buoni post sul blog che descrivono dettagliatamente come realizzare cose specifiche, ma a meno che tu non abbia scadenze da rispettare, probabilmente non puoi permetterti di sederti e cercare come fare cose specifiche in Wix per giorni alla volta. Personalmente, mi sono trovato in questo modo troppo per Wix per essere una soluzione fattibile (di nuovo, a meno che non sia necessario un semplice programma di installazione)

In definitiva, nel mio caso, abbiamo avuto installatori esistenti che sono stati sviluppati con InstallShield e siamo semplicemente in grado di essere produttivo più veloce con esso. InstallShield ha anche un proprio linguaggio di scripting che ha anche una buona documentazione.

Un altro grande vantaggio per me era che InstallShield allevia il dolore di più istanze (prova a cercare come farlo con Wix e avrai un'idea di quello che sto dicendo) e l'aggiornamento/patch. Sono stato in grado di eseguire entrambe queste (in particolare più istanze) in una frazione del tempo con InstallShield rispetto a quanto necessario per eseguire in Wix.

Il mio consiglio sarebbe di scegliere in base ai vincoli di tempo/scadenze/impegni, alla complessità dell'installatore e alla maturità del prodotto. Wix richiede MOLTE ricerche per cose che InstallShield offre un modo abbastanza veloce di fare. Questo può essere ancora più doloroso se si dispone di un prodotto maturo rispetto a un prodotto abbastanza giovane.

Spero che questo aiuti.

+2

Sì, è corretto, voglio dire, sono un divertimento di Wix e lo uso da un po 'di tempo, ma a volte è abbastanza enigmatico e mi prendo tempo per completare alcune attività di base, specialmente se non hai mani -sopra. – Thurein

+2

JustinPinkley, per le istanze multiple hai guardato l'elemento Instance nella documentazione di WiX? Sono veramente facili da usare. Inoltre, WiX v3.5 ha un nuovo elemento MajorUpgrade che rende gli aggiornamenti uno solo. Inoltre, il patching è molto facile da usare nel set di strumenti WiX. È tutto documentato in una pagina nella documentazione di WiX (puoi trovarlo cercando "patch"). –

+2

Sì, ho effettivamente utilizzato l'elemento Instance e sono disponibili 3 istanze per l'installazione. Il problema non risiede nella capacità di Wix di implementare le istanze, ma nel tempo necessario per trovare una documentazione sufficientemente completa per implementare sufficientemente le istanze. Il file di aiuto è decisamente carente lì. MajorUpgrade era davvero piuttosto semplice, ma gli aggiornamenti minori sono un po 'più complicati, il che va bene, ma richiede più tempo per cercare come implementare. So che Wix è potente ma la mancanza di documentazione dettagliata è probabile che impedirà a più negozi di utilizzarlo. –

22

Avendo creato un programma di installazione Wix per fare esattamente quello che stai cercando di fare, lo raccomanderei volentieri.

I vantaggi di Wix sopra InstallShield come la vedo io:

  1. Dal Wix è libero, ogni membro del team può essere installato, e quindi tutti possono contribuire al programma di installazione. Se un dev aggiunge una libreria al progetto, può aggiornare l'installer come appropriato, senza aspettare che il "Setup guy" faccia la sua parte.
  2. Non ci sono problemi con l'installazione di Wix su un server di build, rendendolo adatto per un ambiente in cui si utilizza l'integrazione continua. Si integra bene con MSBuild (vedi il progetto Votive).
  3. I programmi di installazione Wix sono creati da file di testo, semplificando il controllo della versione.
  4. Wix include Deployment Tools Foundation (DTF) che semplifica la creazione di azioni personalizzate utilizzando il codice .Net.
  5. Wix è vicino al metallo: di solito è possibile applicare la conoscenza di Windows Installer direttamente a Wix. Inversamente, l'apprendimento di Wix ti insegna molto su Windows Installer, che è sempre utile quando si tratta di fornire supporto per le implementazioni.

Per bilanciare questo, ci sono alcune cose da tenere presente:

  1. Wix ha una curva di apprendimento ripida. Se non lo hai già fatto, dai un'occhiata allo WiX tutorial.
  2. WiX non è un ambiente "visivo" come InstallShield - di solito è tutto testo e testo. Detto questo, ci sono gli editori, free e commercial.
  3. Specificamente relativo alle configurazioni di IIS: Wix 3.0 funziona solo contro le API di metabase di IIS 6.Per installare su IIS 7, devi abilitare lo Metabase Compatibility feature sul server di destinazione. Il supporto completo per IIS 7 è in arrivo su Wix 3.5 - Ho provato la versione beta di questo, e sembra funzionare fino ad ora.
+0

sì, è vero, il mio programma di installazione wix (3.0) non funziona contro IIS 7, ma la mia gestione non vuole usare il 3.5 coz che è ancora una beta. Inoltre si sono preoccupati per la curva di apprendimento ripida. – Thurein

+0

Ma sicuramente, lo scudo di installazione potrebbe accelerare il tempo di sviluppo, suppongo. – Thurein

8

+1 alla risposta di Samuel. Per quanto riguarda la curva di apprendimento ripida ... se non capisci come funziona la tecnologia sottostante (Windows Installer), avrai problemi con il supporto della tua installazione, sia InstallShield che WiX che scegli. Ma WiX ti incoraggia ad imparare Windows Installer per usare correttamente le astrazioni WiX.

Ho iniziato personalmente il mio progetto di installazione (un'enorme applicazione Web) con InstallShield, ma recentemente mi sono trasferito su WiX e ne sono felice. I punti chiave della mia scelta:

  • è gratuito
  • è XML (più dolore diffing e la fusione)
  • è amichevole per NAnt
  • lo fa esattamente quello che istruisce per fare (né più né meno)

Spero che queste informazioni siano utili.

+0

Grazie per l'input. Che ne dici di upgrade e patch? Ho creato un programma di installazione usando wix ed è andato bene, ma non ho mai provato l'aggiornamento e l'applicazione della patch usando wix. Sono preoccupato che potrei avere qualche problema con il processo di aggiornamento e patch. – Thurein

+0

Puoi fare tutti i tipi di aggiornamenti MSI con WiX e ha gli strumenti per produrre anche le patch. È tutto lì dentro, non sono necessari strumenti/script aggiuntivi. L'unica cosa che non è coperta è incorporare le trasformazioni. Potresti trovarti ad affrontare questo problema quando localizzi il tuo programma di installazione e le trasformazioni del linguaggio di incorporamento in esso. Ma c'è msidb.exe nell'SDK di Windows Installer che risolve il problema. Inoltre, posso ricordare che qualcuno ha fatto riferimento a uno script facendo la stessa cosa ... –

12

Per affrontare i punti di Samuele sopra ....

  1. Ho creato un progetto su CodePlex che si chiama IsWiX che affronta il tema della democratizzazione. Lo usi con WiX per creare i moduli di unione e quindi utilizza i moduli di unione con InstallShield per ottenere il meglio da entrambi i mondi. Ciò consente a un addetto alla configurazione di utilizzare InstallShield e dozzine di miei sviluppatori per utilizzare IsWiX/WiX. L'XML può ancora essere contrassegnato con metadati aggiuntivi, quindi non siamo limitati a ciò che i moduli possono descrivere.

  2. InstallShield ha un motore di compilazione autonomo che si integra con MSBuild/TFS e fornisce un'interfaccia di automazione. Non c'è alcun vantaggio per WiX qui.

  3. InstallShield è anche un file di testo. È un formato DTD più brutto, ma IsWiX risolve questo problema estraendo le parti che cambiano frequentemente dalla porzione raramente modificabile del programma di installazione.

  4. Incoraggio fortemente l'uso di DTF con InstallShield. Dopotutto una funzione esportata di tipo 1 è la stessa di qualsiasi strumento basato su MSI.

  5. InstallShield ha un editor diretto che mostra le tabelle sottostanti. Questo è in realtà più vicino al metallo, quindi WiX che utilizza un DSL basato su XSD per produrre il metallo. Tutto sommato, ci sono davvero cose positive su WiX E InstallShield e io li usiamo insieme per creare installatori estremamente complessi.

PS-IsWiX ha pensato molto all'hashing e all'ordinamento per risolvere i problemi di unione dei rami. (Usiamo Base Clearcase su dozzine di filiali quindi era molto importante per noi.)

+0

grazie per quello. Non avendo mai usato InstallShield, non sarei mai stato in grado di dare una visione equilibrata! –