2009-12-24 34 views
9

Vui lòng, ai đó có thể cung cấp cho tôi đoạn mã hoặc giải pháp WiX cho kịch bản được đề cập. Tôi cần phải bao gồm các tập tin pfx trong msi WiX và người dùng sẽ tải về msi của tôi để máy của mình thông qua internet explorer và Click cài đặt và tôi cũng cần giấy chứng nhận được cài đặt trên máy tính của mình.Cài đặt chứng chỉ pfx trong cửa hàng người dùng trong Windows bằng cách sử dụng WiX

Trả lời

9

Bạn cần Certificate element. Nó là một phần của phần mở rộng IIS cho wix, nhưng có thể được sử dụng cho các cài đặt không liên quan đến IIS.

Bạn cần phải

  1. khai báo một tiền tố cho không gian tên IIS, cho ví dụ như thế này trong thư mục gốc Wix yếu tố:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' 
        xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'> 
    
  2. Nhúng file PFX như một dòng nhị phân trong gói cài đặt của bạn. Thêm một yếu tố Binary dưới các yếu tố sản phẩm như thế này:

    <Binary Id="MyCertificateBinaryStream" 
        SourceFile="c:/path/to/mycertificate.pfx" /> 
    
  3. Khai báo một thành phần với một yếu tố <iis:Certificate>, cho ví dụ như thế này. Hãy xem documentation, bạn cần điền vào một số thuộc tính khác . Lưu ý rằng bạn không cần CertficatePath nếu bạn sử dụng thuộc tính BinaryKey.

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE"> 
        <iis:Certificate Id="MyCertificate" 
         BinaryKey="MyCertificateBinaryStream" 
         ... some more attributes ...     
        /> 
    </Component> 
    
  4. Kích hoạt phần mở rộng IIS bằng cách thêm tùy chọn tùy chọn -ext WixIISExtension khi gọi các công cụ dòng lệnh wix. Nếu bạn sử dụng studio trực quan, đây chỉ là vấn đề thêm một tham chiếu trong dự án wix của bạn vào WixIISExtension.

+0

Tôi sẽ xem xét câu trả lời này và thử.Cảm ơn bạn đã trả lời của bạn một lần nữa.Thực sự đánh giá cao lời giải thích của bạn.Một Giáng sinh vui vẻ cho bạn! – abmv

4

Để mở rộng câu trả lời một chút, tập sau các thuộc tính làm việc cho tôi:

<iis:Certificate 
    Id="My.Certificate" 
    StoreName="root" 
    Overwrite="yes" 
    Name="My Friendly Certificate Name" 
    Request="no" 
    BinaryKey="MyCertificate.Binary" 
    StoreLocation="localMachine" /> 

Trong trường hợp yếu tố <Product> chứa một đứa trẻ <Binary> như sau:

<Binary 
    Id="MyCertificate.Binary" 
    SourceFile="$(var.ProjectDir)MyCertificate.pfx" /> 

(Tôi đã bao gồm tệp PFX trong dự án WiX của mình).

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