2011-02-09 22 views
8

VS 2010'da WiX 3.5 kullanıyorum ve tüm proje derlemelerini Kurulum projesinde (.wixproj) referans olarak ekledim ve Harvest özelliğini True olarak ayarladım böylece ikili dosyalar, içerik ve uydular .msi dosyasına eklenir.WiX - kurulum çıktısı olmayan proje derlemeleri

Ancak, herhangi bir üçüncü parti derlemeleri (.dlls) .msi çıktısına nasıl eklenir? Her birini açıkça Product.wxs dosyasına eklemem gerekir mi, yoksa daha güzel bir yol var mı? İdeal olarak, bunları Kurulum projesinde dosya referansları olarak eklemek isterim, ancak bu bir seçenek olarak görünmüyor mu?

cevap

7

Evet (ayrı dizinde ikamet bütün bu dosyayı varsayarak) bazı wxs dosyası YA sizin için bu dosyayı hasat için ısı kullanan bir ön inşa adımını kullanabilirsiniz el ile eklemek gerekir.

Isı Wix bir parçasıdır ve dir anahtarı kullanarak bir dizinin tamamını toplayabilir. Komut satırı argümanlarına bağlı olarak, tek bir ComponentGroup içeren ayrı bir wxs dosyası üretecektir. Sadece bu ComponentGroup ürününü product.wxs'den referans alın. Şu anda benim bırakma dizini hasat ısıyı nasıl kullandığınıza bir örnek için

: "../../bin/release"

ısı dir -gg Cs CG.ApplicationBinaries -dr INSTALLDIR -scom -sfrag -sreg -srd -var var.BuildOutputDir -o ApplicationBinaries.wxs

Bu dosya ApplicationBinaries.wxs üretecek:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLDIR"> 
      <Component Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" Guid="{CA2DF1B5-7B20-4596-84A4-925B4F9BA6EC}"> 
       <File Id="filC65F9CB88694FCA79FCB3CADB9481921" KeyPath="yes" Source="$(var.BuildOutputDir)\AsyncTCPsocket.dll" /> 
      </Component> 
      .... 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="CG.ApplicationBinaries"> 
      <ComponentRef Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" /> 
      ... 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+1

Teşekkür ederim, onları açıkça tanımlayacağım. – devdigital

+0

Bileşen grubunu içeren oluşturulan wxs dosyasına başvuruda bulunabilmek için bir özellik tanımlamanız gerekmiyor mu? – KennO

+0

Bir şekilde Product.wxs içinde $ (var.YOURPROJECT.TargetDir) gibi bir şeye $ (var.BuildOutputDir) ayarlıyor musunuz? Eğer öyleyse bunu nasıl başarırsınız? – jpierson

4

anda başvurulan meclisleri anlamına WiX yükleyici proje tarafından kullanılan a bug in Heat yoktur bir projenin otoma değildir Tically hasat. Muhtemelen adreslenmeden önce 4. sürüm için beklemek zorunda kalacaksınız. Bu arada, @Elmar de Koning'in cevabı muhtemelen şimdilik en iyisi olacaktır.