Установите сертификат pfx в магазине пользователей в Windows, используя WiX - PullRequest
9 голосов
/ 24 декабря 2009

Пожалуйста, кто-нибудь может предоставить мне фрагмент WiX или решение для упомянутого сценария. Мне нужно включить pfx-файл в MSI-файл WiX, и пользователь загрузит мои msi на свой компьютер через Internet Explorer и нажмет кнопку «Установить», и мне также нужен сертификат, который будет установлен на его компьютере.

Ответы [ 2 ]

9 голосов
/ 24 декабря 2009

Вам необходим элемент сертификата . Он является частью расширения IIS для wix, но может использоваться и для установок, не связанных с IIS.

Вам нужно

  1. объявить префикс для пространства имен iis, для Пример, подобный этому, в корневом элементе Wix:

    <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
       xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
    
  2. Вставить файл PFX в двоичном виде поток в вашем установочном пакете. добавлять элемент Binary под Элемент продукта, как это:

    <Binary Id="MyCertificateBinaryStream" 
       SourceFile="c:/path/to/mycertificate.pfx" />
    
  3. Объявление компонента с элементом <iis:Certificate>, для Пример, как это. Посмотрите на документация , вам нужно заполнить некоторые больше атрибутов. Обратите внимание, что вам не нужно CertficatePath, если вы используете атрибут BinaryKey.

    <Component Id="MyCertificateComponent" Guid="MY-GUID-HERE">
       <iis:Certificate Id="MyCertificate"
          BinaryKey="MyCertificateBinaryStream"
          ... some more attributes ...                  
       />
    </Component>
    
  4. Активируйте расширение IIS, добавив опция -ext WixIISExtension опция при вызове инструментов командной строки wix. Если вы используете Visual Studio, это просто вопрос добавления ссылки в ваш проект wix к WixIISExtension.

4 голосов
/ 17 февраля 2011

Чтобы немного расширить ответ, у меня работал следующий набор атрибутов:

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

Где элемент <Product> содержал дочерний элемент <Binary> следующим образом:

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

(я включил файл PFX в свой проект WiX).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...