Il concetto generale di MSI è che c'è un mappatura 1: 1 tra un GUID componente (identificativo univoco) e un percorso assoluto (percorso di installazione/percorso della chiave). Il percorso completo, incluso il nome del file, se presente. Vedi l'aggiornamento qui sotto per una nuova funzione Wix per gestire auto magicamente con questo.
Faccio uso di alcune semplici regole a che fare con le regole dei componenti eccessivamente complesse e prive di senso:
- Usare sempre un componente separato per file (anche per i non-binari). Questo evita ogni tipo di problema. Ci sono alcune eccezioni:
- multi-file assembly .NET dovrebbero essere tutti in un componente in quanto essi devono sempre essere installati/disinstallati come una singola unità.
- Alcuni altri tipi di file generali sono disponibili in "coppie corrispondenti" - appartengono insieme. Spesso questi sono file di contenuto e indice. Ad esempio, considera i file della guida di Microsoft:
- . I file HLP e .CNT appartengono insieme.
- . I file CHM e .CHI appartengono insieme.
- Probabilmente molti di questi tipi di file appartengono insieme e dovrebbero quindi essere inseriti nello stesso componente in modo che vengano installati/disinstallati insieme - sospetto che alcuni file di certificati siano candidati. È difficile trovare una lista definitiva. Basta chiedere a te stesso "fa sì che questi file appartengano sempre" - così vengono sempre visualizzati in coppia ogni volta che c'è una nuova versione? Se sì, quindi installarli tramite lo stesso componente. Imposta il file con versione, se esiste, come file chiave.
- Ricordare che una volta assegnato un GUID per un componente, viene impostato su pietra per il percorso chiave di quel componente (percorso assoluto). Se spostate il file in una nuova posizione o rinominate il file, dategli un nuovo GUID del componente (poiché il percorso assoluto è diverso è effettivamente una nuova identità).
- Nel componente di riepilogo i GUID sono legati a un percorso di installazione assoluto e non a un file specifico. Il GUID non segue il file in giro se si sposta. Il riferimento GUID conta una posizione assoluta, non il file di per sé.
- Non aggiungere o rimuovere file da un componente esistente. Ne derivano tutti i tipi di problemi di aggiornamento e patch. Questo è il motivo per cui mi piace un file per componente come regola generale.
- C'è molto di più nel riferimento ai componenti, ma lo lascerò a quello per una "panoramica".
Alcuni esempi:
- si rinomina il file C: \ Program Files \ MyCompany \ MyApp \ MyFile.exe a C: \ Program Files \ MyCompany \ MyApp \ MyFile_NEW.exe . Cosa significa questo per la creazione di componenti? Questo è un nuovo percorso di installazione assoluto, quindi generi un nuovo GUID per il componente di hosting, OPPURE aggiungi un nuovo componente ed elimini quello vecchio (che ha lo stesso effetto).
- L'MSI aggiornato offre una nuova versione di MyFile.exe. La posizione è la stessa di prima, questo significa che il componente GUID non dovrebbe cambiare. È lo stesso file (identità), solo in una versione diversa.
UPDATE: WIX ha ora una nuova funzionalità che auto-generate component GUIDcalculates a GUID finché il percorso di destinazione rimane lo stesso. Non ho provato questo per essere onesti, ma molti sembrano usarlo senza problemi, e Rob Mensching (Wix author) states it is safe for normal use. Come concetto, lo consiglio vivamente poiché presenta alcune funzioni di auto-magia e ti protegge da una certa complessità.
Si noti inoltre che you can leave out a lot of source attributes from your Wix xml file e si basano sui valori predefiniti di Wix invece dei valori di codifica rigida.
fonte
2009-09-14 15:02:32
Potresti aggiungere più dettagli alla tua domanda? Non sono esattamente sicuro di cosa stai chiedendo. –