2012-10-19 3 views
26

Ho una soluzione semplice per il mio progetto, che funziona bene. Ma non riesco a capire come rendere relativi i percorsi di Source. Qualcuno può aiutarmi?Percorso relativo WiX relativo al file sorgente

<Component Id="Bla.exe" Guid="*"> 
    <File Id="Bla.exe" Source="D:\Projects\Bla\Bla\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/> 
    </Component> 

Come posso rendere il percorso relativo alla soluzione Wix? WiX e tutti i file necessari sono nella stessa soluzione.

risposta

57

È possibile utilizzare il percorso relativo in questo modo:

<File Id="Bla.exe" Source="..\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/> 

O

È possibile aggiungere un file di configurazione al progetto per definire le variabili comuni. Per fare ciò, aggiungi un nuovo file "WiX Includi" al tuo progetto, chiamalo config.wxi. Poi, nel tuo includere file, è possibile definire una variabileSourceDir in questo modo:

<?xml version="1.0" encoding="utf-8"?> 
<Include> 
    <?define SourceDir = "D:\Projects\Bla\Bla\bin\Debug" ?> 
</Include> 

Ora nel file .wxs, è possibile aggiungere un riferimento al file di configurazione in alto, es:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<?include "config.wxi"?> 

Poi basta riferimento tua SourceDir variabile in questo modo:

<File Id="Bla.exe" Source="$(var.SourceDir)\Bla.exe" KeyPath="yes" Checksum="yes"/> 

Inoltre, ci sono alcuni costruiti in WiX project variables che è possibile utilizzare.

+0

Sembra fantastico! Grazie! Esiste la possibilità di utilizzare valori diversi per var.Sourcedir - a seconda dell'installazione di debug o release? –

+0

Vedere il link che ho aggiunto. Ci sono variabili di progetto incorporate che dovrebbero aiutare. – BryanJ

+0

Nel contesto della mia [domanda correlata] (http://stackoverflow.com/questions/21687392/how-can-i-maintain-file-reference-integrity-from-a-wix-setup-library), ho provato questo e ha rilevato che il file di inclusione non funzionerà per la mia situazione. Qualsiasi forma di impostazione delle variabili non rende la variabile disponibile per il progetto di dipendenza. Tuttavia, le variabili di progetto a cui ti sei collegato sembrano come se funzionassero per i miei scopi, perché sono stabili indipendentemente dai contesti di altri progetti. Grazie per aver incluso questo link. –

2

Ci sono molti modi per farlo ma personalmente ciò che mi piace fare è mettere i miei progetti di installazione di applicazioni in diverse soluzioni. Per prima cosa costruisco la soluzione applicativa e utilizzo i comandi postbuild per pubblicare il contenuto in una cartella di distribuzione.

Nei miei progetti di installazione I set $ (var.SourceDir) = ".. \ distribuire" e poi $ (var.SourceDir) \ foo.exe per un percorso di origine.