2013-05-03 41 views
15

Tôi đang cố tạo một gói để cài đặt .NET Framework 4.0 nếu cần cài đặt. Tôi nhận ra có những câu hỏi tương tự, nhưng tất cả các câu trả lời chỉ là các đoạn trích và không mô tả tệp nào chúng đi vào và cách chúng được nhập vào tệp .wxs.Gói WiX để cài đặt .NET

Đây là những gì tôi có trong tệp Bundle.wxs. Tôi nhận được cảnh báo trình biên dịch về nhiều mục nhập.

Lỗi 2 Nhiều mục nhập '{CF06625F-7B6B-4B6E-A24E-FDDCA7CFFFF4}' và '{0D1EE60A-FC4F-4083-8B1E-311E75A67B4C}' được tìm thấy. Chỉ có một mục nhập có thể có mặt trong một mục tiêu duy nhất.

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Bundle UpgradeCode="{C6FF478E-C3DA-4D78-929D-24C3F3307356}" Version="4.0"> 
    <Chain> 
     <PackageGroupRef Id="NetFx40Redist"/> 
    </Chain> 
    </Bundle> 
</Wix> 

Hầu hết các liên kết trên trang WiX đều bị hỏng và không đề cập đến bất kỳ điều gì về thuộc tính sử dụng trên thẻ Bundle và dường như trao đổi Gói/Sản phẩm. Tôi không thể tìm thấy đề cập đến trên các trang Wix về việc thiết lập GUID cho Gói. Có phải cái gì đó mới mẻ đối với Wix 3.7?

http://wix.sourceforge.net/manual-wix3/install_dotnet.htm

  1. Làm thế nào để sử dụng được xác định trước NET 4.0 PackageGroupRef/PayloadGroupRef
  2. Liệu nó có được trong Bundle.wxs? Nó được nhập vào sản phẩm chính của tôi ở đâu?

Trả lời

18

lỗi đó chỉ ra rằng dự án của bạn được xây dựng với các tập tin có chứa nhiều hơn một trong những yếu tố: Product, Module, Patch, PatchCreation, Bundle. Trong trường hợp của bạn, có vẻ như bạn đã thêm một tệp có phần tử Bundle vào dự án đã có phần tử Product. Điều đó không được hỗ trợ trong bộ công cụ WiX ngày nay. Bạn cần đặt phần tử Bundle vào một dự án riêng biệt.

Do đó, khi tạo bootstrapper và MSI, bạn sẽ có hai tệp .wixproj. Đầu tiên .wixproj sẽ chứa thông tin Product của bạn. Thứ hai .wixproj sẽ chứa thông tin Bundle của bạn và có một tham chiếu dự án đến .wixproj đầu tiên để thứ tự xây dựng là chính xác.

+0

Ok, vì vậy tôi sẽ tạo một proj riêng cho gói của tôi. Và một gói duy nhất có thể có một chuỗi nhiều trình cài đặt, đúng không? Chuỗi của tôi có thể có .NET 3.5, .NET 4.0, trình cài đặt SQL Server, v.v. –

+0

Vâng, chính xác. 'Bundle' là một tập hợp các gói'. –

+11

+1 - Không thể tìm thấy bất kỳ tham chiếu/thông tin nào về yêu cầu phải tham chiếu/tạo 2 dự án Wix. – abbottdev

9

Phần tử Wix/Bundle là gốc của dự án Bootstrapper. Nó không đi trong cùng một dự án như Product.wx của bạn. Trong Visual Studio, có một mẫu cho các dự án Wix Bootstrapper mới. Có thể bạn chưa tạo.

Sau đó, trong chuỗi của gói, bạn sẽ muốn .NET và MSI của ứng dụng, như trong ví dụ. Để sử dụng NetFx40Web, bạn phải tham khảo WixNetfxExtension. Các dự án Wix tham khảo các dự án Wix khác có các biến được xác định trước để bạn có thể sử dụng các thuộc tính của chúng như TargetPath. Ví dụ giả định dự án Bootstrapper này tham chiếu đến một dự án Thiết lập được gọi là MyApplicationSetup.

<Chain> 
    <PackageGroupRef Id="NetFx40Web"/> 
    <MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/> 
</Chain> 
+0

Có, tôi đã không sử dụng chương trình Bootstrapper proj của VS, cũng như tôi không biết. Tôi giả định Id MsiPackage là tham chiếu đến ID gói của dự án cài đặt chính của tôi? Tôi nhầm lẫn về điều này bởi vì Gói của tôi không có ID, cũng không phải là một tham chiếu đến Msi. –

+0

Tôi đã tạo chương trình của mình với một tệp Bundle như bạn có ở trên, ngoại trừ tôi muốn sử dụng "NetFx40Redist" làm gói ref. EXE được xây dựng, nhưng khoảng 1 MB. Tôi hy vọng nó sẽ có tệp thiết lập .NET 4 bên cạnh nó, như được thực hiện trong Visual Studio Deployment Projects. Tôi không chắc chắn nếu nó thực sự kéo gói đó. –

+0

Lược đồ WiX Toolset hoàn toàn nhất quán: Thuộc tính Id cung cấp tên duy nhất cho các phần tử, có thể được tham chiếu bởi phần tử có tên kết thúc bằng Ref. Vì vậy, Id MsiPackage là một tên tùy ý mà bạn cung cấp cho gói được trỏ đến bởi SourceFile. Trong ngữ cảnh của bootstrapper, "gói" đề cập đến bất kỳ loại trình cài đặt nào và "msi" là tên biệt hiệu cho gói cài đặt Windows. Dự án Thiết lập WiX của bạn tạo tệp msi. –

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