2010-01-14 16 views
38

ben sırayla WiX kullanmaya başladım otomatik do için tanımsız önişlemci benim C# projeleri MSI'ın oluşturmak ve hata "Tanımsız önişlemci değişkeni '$ (var.MyProject.TargetDir)'"WiX değişken

yaşıyorum kurar

Ben son WiX v3.0.5419 kullanıyorum. Benim wxs ben (http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-variables.aspx)

<Component Id="MyId" Guid="MyGuid"> 
    <File Id="MyId" Name="MyName" KeyPath="yes" 
     Source="$(var.MyProject.TargetDir)\MyName.dll" /> 
</Component> 

Ben .wixproj için MyProject için başvuru eklemiş ve ben Not Defteri'nde o kadar açarsanız elimden bu web sayfasında listelenen ön işlemci değişkenleri kullanmaya çalışıyorum dosyasını İçinde referansa bakın.

<ItemGroup> 
    <ProjectReference Include="..\MyProject.csproj"> 
    <Name>MyProject</Name> 
    <Project>{guid}</Project> 
    <Private>True</Private> 
    </ProjectReference> 
</ItemGroup> 

Bu, msi'yi oluşturmak için kullandığım çok derlenmiş bir komut dosyasıdır. Belki de çünkü .wixproj, yapımında kullanılmayan proje referansını biliyordur?

<exec basedir="${tools.wix}" managed="true" program="candle.exe"> 
    <arg line='-out "${tools.wix.objfile}"' /> 
    <arg value="../MySetup.wxs" /> 
</exec> 

Bu konuda beni aydınlatabilecek biri var mı lütfen? Zaten söylediği gibi

cevap

40

, senin nant komut dosyası oluşturmak hiç wixproj dosyayı kullanmıyor.

Burada bir wix kurulum kurmak için iki farklı yol karıştırma

:

  1. doğrudan candle.exe ve light.exe komut satırı araçlarını kullanabilirsiniz. Bu, .wixproj dosyasını yok sayar. Nant derleme senaryosunda ne yapıyorsun? $(var.MyProject.TargetDir) gibi önişlemci değişkenleri için değerleri geçmek için -dMyProject.TargetDir=c:\foo gibi seçenekleri kullanın.

  2. Sen (görsel stüdyo eklenti wix için) votive ile .wixproj dosyasını geliştirebilirler. Tüm görsel stüdyo proje dosyaları gibi, bir wixproj dosyası aslında msbuild.exe ile oluşturulabilecek bir msbuild dosyasıdır. $(var.MyProject.TargetDir) gibi değişkenler, doğru proje başvurusu varsa, wix kurulumları için msbuild görevleriyle otomatik olarak ayarlanır.

Sana <msbuild>nant task ile wixproj dosyasını oluşturmak önerilir. Bu, nant oluşturma işleminizin, kurulumu görsel stüdyenden el ile oluşturduğunuzda aynı olmasını sağlar.

+0

Çok teşekkürler. Ben sadece wixproj bir msbuild dosyası olduğunu öğrendim ve ben zaten çözüm inşa ederek doğru şekilde inşa ettim! – David

+1

Sadece hızlı bir şekilde yukarı çıkarken - seçeneği belirtmenin doğru yolu -dMyProject.TargetDir. Önde gelen var. hatalı http://geekswithblogs.net/Howard/archive/2009/01/20/wix-variables.aspx –

+0

@Sean: düzeltme için teşekkürler. Sabit. –