2011-09-07 5 views
9

Sto usando l'ultimo votive (Wix v3.5) e ho creato un semplice progetto di installazione di Wix VS 2010. Ho aggiunto il riferimento al mio sito Web e impostato l'opzione Harvest come true.La raccolta dei file porta a LGHT0231 error

Ora, poiché i miei INSTALLDIR punti in una cartella sotto IISROOT, ottengo questo errore light.exe:

[filepath]: error LGHT0231: The component 'cmp93982C4086FF8C75F07339DD7CEA8152' has a key file with path 'TARGETDIR\webdir...[filename].xml'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.)

Pur comprendendo il motivo di questo errore, non sono necessariamente d'accordo alla sua razionale (forse Non capisco il funzionamento innato della generazione di Wix MSI).

Come posso risolvere questo errore?


di fornire alcuni contesto:

Sto cercando di impostare questa funzione in collaborazione con Team Build. Posso usare il formato legacy ed eseguire l'attività Heat/Harvest su una cartella per aggirare questo problema ma non voglio percorrere la rotta legacy.

Non ho giocato abbastanza con la nuova definizione di build basata sul flusso di lavoro, quindi non sono sicuro di come posso incorporare questa attività personalizzata.

Ho bisogno di eseguire il raccolto ogni volta che viene creato il progetto di installazione perché non voglio tenere traccia di centinaia di file manualmente.

+0

Ho lo stesso problema; Sto cercando di impostare C: \ Inetpub \ wwwroot \ MyProject \ come posizione di installazione predefinita, ma WiX non ne sentirà parlare. –

+0

Hai trovato qualche soluzione? Grazie –

+0

@SanjaMelnichuk: Sfortunatamente no. Non ho investito più tempo anche lì mentre mi trasferivo in altri progetti, ma immagino che quello che sto cercando di fare ci richiederebbe alcune conoscenze e familiarità con i flussi di lavoro TFS. – Mrchief

risposta

9

Il problema è dovuto al fatto che il componente è rootato in TARGETDIR, che WiX non può utilizzare per generare automaticamente un guid. È possibile aggiungere Directory/@ComponentGuidGenerationSeed a una directory sopra questo componente per evitare il problema. Aggiungendo questo attributo, è ora necessario assumersi la responsabilità di garantire che il componente non venga installato su due diverse directory tra gli aggiornamenti.

In Windows Installer, i componenti devono avere un guid che non cambia tra patch, aggiornamenti minori e aggiornamenti importanti. Per comodità, WiX può generare un version 5 UUID per te usando la gerarchia di directory del componente come seme. Ma, TARGETDIR non è idoneo per questo.

Credo che il motivo sia che TARGETDIR cambia tra le installazioni (è impostato sull'unità che ha lo spazio più libero). Una delle regole del componente è "each component must be stored in a single folder". Se TARGETDIR è cambiato tra gli aggiornamenti principali, si potrebbe finire per provare a installare lo stesso componente in una seconda cartella.

+0

Solo dopo aver creato un altro progetto Wix mi sono imbattuto in questo e poi ho ricordato la tua soluzione. Scusa, mi ci è voluto così tanto tempo per accettarlo! :) – Mrchief