Sintassi per i GUID in WIX?

Qual è la syntax corretta per fornire i GUID per i componenti nel file wxs per WIX?

Nella maggior parte dei campioni ho trovato

Guid="00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6" 

ma in alcuni campioni ho trovato

 Guid="{00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6}" 

Preferirei la seconda versione, perché è generata direttamente dallo strumento GuidGen. Ma è corretto?

Il compilatore WiX converte entrambi i moduli nel modulo previsto da Windows Installer (con parentesi graffe e lettere maiuscole) .

Auto-guids e valori di attributo predefiniti

Oltre al consiglio di Bob Arnson:

  • Le versioni recenti di Wix consentono ai GUID di essere generati automaticamente per diversi elementi, in particolare i GUID dei componenti. Copre anche i codici pacchetto, prodotto e patch.
  • Inoltre, consente di ignorare alcuni o anche la maggior parte dei valori degli attributi dalla definizione esplicita poiché la maggior parte di essi può essere impostata su valori prevedibili. Vedi lo snippet di codice qui sotto per un esempio.
  • Il GUID del componente di generazione automatica è ansible perché i GUID dei componenti dovrebbero rimanere invariati una volta creati, a meno che il percorso di installazione non venga modificato, come descritto in questo post StackOverflow . Di conseguenza, Wix calcola un GUID in base al percorso target e ad altri fattori.
  • Il codice prodotto , pacchetto e patch in genere può essere creato casualmente in quanto dovrebbero semplicemente essere unici.
  • Si noti che un codice di aggiornamento è speciale – non dovrebbe essere generato automaticamente . In generale, si desidera rimanere stabili tra versioni e anche tra diverse versioni e lingue del software in alcuni casi, a seconda della progettazione dell’applicazione e della modalità di implementazione delle edizioni (è ansible utilizzare codici di aggiornamento diversi e implementare ancora un aggiornamento importante, ma l’aggiornamento il tavolo si complica).
  • Come regola empirica del codice di aggiornamento identifica una ” famiglia di prodotti correlati “, il codice prodotto identifica un’edizione installata di qualche tipo e il codice del pacchetto identifica un file univoco. Due file con lo stesso codice pacchetto sono considerati per definizione come lo stesso file (questo può causare errori misteriosi – assicurati di generare sempre automaticamente il codice pacchetto).
  • Controlla la documentazione di Wix per i dettagli sui GUID generati automaticamente.

File di origine XML Wix semplificati

Utilizzati correttamente questi GUID generati automaticamente possono semplificare in modo significativo i file di origine Wix:

     

contro

    

Presi insieme, la combinazione di auto-guids e i valori degli attributi predefiniti producono file sorgente XML Wix che sono più brevi e più facili da leggere a causa della rimozione di un sacco di “rumore” – questo probabilmente li rende meno inclini agli errori :

  • i file sorgente di terser sono più facili da mantenere e meno inclini agli errori, dal momento che è più facile vedere quali sono le modifiche con gli strumenti diff e meno il testo esiste, meno gli errori possono nascondersi
  • lungo la stessa linea, la copia e incolla degli elementi XML esistenti può causare errori di difficile individuazione a causa dell’aggiornamento incompleto di tutti gli attributi. Meno attributi, meno errori. Copia e incolla molto quando uso “manualmente” Wix (non usando generatori XML). Nota che la maggior parte degli errori vengono rilevati dal compilatore e dal linker Wix, ma gli errori possono ancora nascondersi.
  • eventuali modifiche ai valori predefiniti possono quindi essere raccolte automaticamente dal compilatore e il linker, facendole propagare più facilmente ai file MSI che sono stati creati con Wix. È sempre utile mantenere i file di origine il più semplice ansible, ma non più semplice
  • i valori predefiniti sovrascritti si distinguono anche nel file sorgente e puoi aggiungere commenti per spiegare perché è necessario il valore non predefinito

Altri suggerimenti su Wix qui , anche se l’articolo potrebbe essere un po ‘datato.

Li ho usati entrambi ed entrambi sembrano funzionare perfettamente bene.