2012-10-19 21 views
26

Projem için iyi bir çözüm olan basit bir Çözümüm var. Ancak, Kaynak yollarını göreceli olarak nasıl yapacağımı anlayamıyorum. Birisi bana yardım edebilir mi?Kaynak Dosyaya İlişkin WiX Göreli Yolu

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

Yolu Wix Çözümüne göre nasıl yapabilirim? WiX ve gerekli tüm dosyalar aynı Çözümde.

cevap

57

Öyle gibi göreli yolu kullanabilirsiniz:

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

VEYA

Sen projeniz için bir yapılandırma dosyası ekleyebilirsiniz ortak değişkenleri tanımlamak için. Bunu yapmak için, projenize yeni bir "WiX Include" dosyası ekleyin, config.wxi numaralı telefonu arayın. Ardından dosyayı bulu içinde, bunu böyle bir sourceDir değişken tanımlayabilirsiniz:

sizin .wxs dosyasında Şimdi
<?xml version="1.0" encoding="utf-8"?> 
<Include> 
    <?define SourceDir = "D:\Projects\Bla\Bla\bin\Debug" ?> 
</Include> 

, üst kısımda yapılandırma dosyasının bir başvuru ekleyebilir, örn:

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

Sonra sadece değişken böylece sevdiği sourceDir referans:

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

bazıyılında inşa vardır Kullanabileceğiniz.

+0

Bu harika görünüyor! Teşekkür ederim! Var.Sourcedir için farklı değerler kullanmak için bir olasılık var mı? –

+0

Eklediğim bağlantıya bakın. Yardım etmesi gereken proje değişkenleri var. – BryanJ

+0

[İlgili soru] bağlamında (http://stackoverflow.com/questions/21687392/how-can-i-maintain-file-reference-integrity-from-a-wix-setup-library), denedim Bu ve içerdiği dosya durumu için çalışmaz. Herhangi bir ayar değişken biçimi, değişkeni bağımlılık projesinde kullanılabilir hale getirmez. Ancak, bağlandığınız proje değişkenleri, diğer projelerdeki bağlamlardan bağımsız olarak kararlı oldukları için, benim amaçlarım için çalışabileceklerine benziyorlar. Bu bağlantıyı gönderdiğiniz için teşekkür ederiz. –

2

Bunu yapmanın birçok yolu var ama kişisel olarak yapmak istediğim, uygulama yükleyici projelerimi farklı çözümlere koymak. Önce uygulama çözümünü oluşturuyorum ve içeriği bir dağıtım klasörüne yayınlamak için postbuild komutlarını kullanın.

Yükleyici projelerimde bir kaynak yolu için $ (var.SourceDir) = ".. \ deploy" ve ardından $ (var.SourceDir) \ foo.exe öğesini ayarlıyorum.

İlgili konular