Domanda

Quando devo cambiare o meno il GUID del mio componente in WIX? Le informazioni sull'SDK di Microsoft sono confuse .

Modifica Glytzhkof : per chiarire, la domanda riguarda quando un GUID del componente deve essere modificato per un componente MSI. Un componente può cambiare con aspetti quali: percorso di destinazione modificato, aggiunta o rimozione di file da / verso lo stesso componente, aggiunta di dati di registro ecc ... Ciò causa problemi riguardo al cosiddetto riferimento a componenti, ovvero best practice per la creazione di componenti in MSI.

È stato utile?

Soluzione

  

Il concetto generale di MSI è che esiste una mappatura 1: 1 tra   un GUID componente (identificativo univoco) e un percorso assoluto   (posizione di installazione / percorso chiave). Il percorso completo, incluso il nome del file se   qualunque. Vedi l'aggiornamento di seguito per una nuova funzionalità Wix da gestire in modo automatico   con questo.

Uso alcune regole semplici per gestire le regole dei componenti eccessivamente complesse e senza senso:

  • Utilizza sempre un componente separato per file (anche per file non binari). Questo evita ogni tipo di problema. Ci sono alcune eccezioni:
    • Gli assembly .NET multi-file dovrebbero essere tutti in un componente poiché devono sempre essere installati / disinstallati come una singola unità.
    • Alcuni altri tipi di file generali sono presenti in " coppie corrispondenti " : appartengono insieme. Spesso si tratta di file di contenuto e indice. Ad esempio, considerare i file della guida di Microsoft:
        I file
      • .HLP e .CNT appartengono insieme.
      • I file
      • .CHM e .CHI sono uniti.
    • Probabilmente ci sono diversi tipi di file simili che appartengono insieme e dovrebbero quindi essere inseriti nello stesso componente in modo che vengano installati / disinstallati insieme - sospetto che alcuni file di certificato siano candidati. È difficile elaborare un elenco definito. Chiediti semplicemente " questi file appartengono sempre insieme " - quindi vengono sempre visualizzati in coppia ogni volta che esiste una nuova versione? Se sì, installali tramite lo stesso componente. Imposta il file con versione, se presente, come file chiave.
    • Voglio aggiungere file di driver come esempio di un gruppo di file che appartengono sempre insieme: SampleDriver.cat , < code> SampleDriver.inf , SampleDriver.sys , SampleDriver.cer . Devono corrispondere tutti come "unità" per la distribuzione.
  • Ricorda che una volta assegnato un GUID per un componente, questo è impostato su pietra per il percorso chiave di quel componente (percorso assoluto). Se si sposta il file in una nuova posizione o si rinomina il file, assegnargli un nuovo GUID del componente (poiché il percorso assoluto è diverso, è effettivamente una nuova identità).
  • Nei componenti di riepilogo i GUID sono collegati a una posizione di installazione assoluta 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 in sé.
  • Non aggiungere o rimuovere file da un componente esistente. Ne conseguono tutti i tipi di problemi di aggiornamento e patch. Ecco perché 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:

  • Rinominare il file C: \ Programmi \ MyCompany \ MyApp \ MyFile.exe in C: \ Programmi \ 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, O aggiungi un nuovo componente ed elimini quello vecchio (che ha lo stesso effetto).
  • L'MSI aggiornato fornisce una nuova versione di MyFile.exe. La posizione è la stessa di prima, ciò significa che il GUID del componente non dovrebbe cambiare. È lo stesso file (identità), solo in una versione diversa.

AGGIORNAMENTO : WIX ora ha un nuovo GUID del componente di generazione automatica che calcola un GUID finché il percorso target rimane lo stesso. Non l'ho provato ad essere sincero, ma molti sembrano usarlo senza problemi e Rob Mensching (autore di Wix) afferma che è sicuro per l'uso normale . Come concetto, lo consiglio vivamente poiché presenta un po 'di magia automatica e ti protegge da una certa complessità.

Nota anche che puoi tralasciare molti attributi di origine dal tuo file xx Wix e fare affidamento sui valori predefiniti di Wix anziché su valori di codifica rigida.

Altri suggerimenti

Non modificare mai Component / @ Guid. Inoltre, non modificare mai il set di risorse (File, RegistryKey, collegamento, TypeLib, ecc.) Nel componente. Quando si dispone di una nuova risorsa, è necessario creare un nuovo componente con un nuovo @Guid. La parte davvero complicata è che il nuovo componente non può sovrapporsi (pensa al percorso del file, o percorso della chiave del registro, o typelib, ecc.) Con il vecchio componente.

Queste sono sostanzialmente le Regole dei componenti, controlla: http: //robmensching.com/blog/posts/2003/10/18/Component-Rules-101 .

Dai un'occhiata al Tutorial WiX, I file All'interno , per una spiegazione dettagliata delle regole dei componenti. Fondamentalmente, dice che non si cambia mai il GUID di un componente, dal momento che ciò significa rendere orfani il vecchio componente e creare un nuovo componente.

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