2011-02-09 29 views
8

Tôi đang sử dụng WiX 3.5 trong VS 2010 và tôi đã thêm tất cả các cụm dự án làm tham chiếu trong dự án Thiết lập (.wixproj) và đặt thuộc tính Thu hoạch thành True sao cho các tệp nhị phân, nội dung và vệ tinh được bao gồm trong tệp .msi.WiX - thu hoạch cụm dự án không trong thiết lập đầu ra

Tuy nhiên, tôi sẽ làm cách nào để thêm bất kỳ cụm từ bên thứ ba (.dll) nào vào đầu ra .msi? Tôi có cần phải thêm từng tệp một cách rõ ràng vào tệp Product.wxs hoặc có cách nào đẹp hơn không? Lý tưởng nhất, tôi muốn thêm chúng như là tài liệu tham khảo tập tin trong dự án thiết lập, nhưng điều này không có vẻ là một lựa chọn?

Trả lời

7

Có bạn sẽ cần phải thêm chúng bằng tay để một số tập tin wxs HOẶC bạn có thể sử dụng một bước trước khi xây dựng có sử dụng nhiệt để thu hoạch những tập tin cho bạn (giả sử tất cả các tập tin nằm trong một thư mục riêng biệt).

Nhiệt là một phần của Wix và có thể thu thập toàn bộ thư mục bằng cách sử dụng công tắc dir. Tùy thuộc vào các đối số dòng lệnh, nó sẽ tạo ra một tệp wxs riêng biệt có chứa một ComponentGroup duy nhất. Chỉ cần tham khảo ComponentGroup này từ product.wxs.

Đối với một ví dụ về cách tôi hiện đang sử dụng nhiệt để thu hoạch thư mục phát hành của tôi:

dir nhiệt "../../bin/release" -gg -cg CG.ApplicationBinaries -dr InstallDir -scom -sfrag -sreg -srd -var var.BuildOutputDir -o ApplicationBinaries.wxs

Điều này sẽ tạo ra ApplicationBinaries.wxs file:

<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

Cảm ơn bạn, tôi nghĩ rằng tôi sẽ xác định chúng một cách rõ ràng – devdigital

+0

Bạn không cần xác định thuộc tính để có thể tham khảo tệp wxs được tạo có chứa nhóm thành phần không? – KennO

+0

Sau đó bạn có đặt giá trị $ (var.BuildOutputDir) thành $ {var.YOURPROJECT.TargetDir) trong Product.wx không? Nếu vậy làm thế nào để bạn thực hiện điều đó? – jpierson

4

hiện có a bug in Heat được sử dụng bởi các dự án trình cài đặt WiX đó có nghĩa là hội tham chiếu của một dự án không phải là automa được thu hoạch kỹ lưỡng. Có thể bạn sẽ phải chờ phiên bản 4 trước khi nó được giải quyết.

Trong thời gian chờ đợi, câu trả lời của @Elmar de Koning có lẽ sẽ là câu trả lời hay nhất hiện nay.

Các vấn đề liên quan