Пожалуйста, можете ли вы предоставить мне фрагмент WiX или решение для упомянутого сценария. Мне нужно включить pfx-файл в WiX msi, и пользователь загрузит мой msi на свой компьютер через Internet Explorer и нажмите «Установить», и мне также понадобится сертификат, который будет установлен на его машине.Установите сертификат pfx в хранилище пользователей в Windows с помощью WiX
ответ
Вам нужен Certificate element. Он является частью расширения IIS для wix, но также может использоваться для установок, не связанных с IIS.
Вы должны
объявить префикс пространства имен IIS, для например, как это в корне Wix элемента:
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
Встроить PFX-файл в виде двоичного потока в вашем установочном пакете. Добавить в Binary элемент под элементом продукта, как это:
<Binary Id="MyCertificateBinaryStream" SourceFile="c:/path/to/mycertificate.pfx" />
Объявите компонент с
<iis:Certificate>
элемента, например, как это. Посмотрите на documentation, вам нужно заполнить некоторые дополнительных атрибутов. Обратите внимание, что вам не нуженCertficatePath
, если вы используете атрибутBinaryKey
.<Component Id="MyCertificateComponent" Guid="MY-GUID-HERE"> <iis:Certificate Id="MyCertificate" BinaryKey="MyCertificateBinaryStream" ... some more attributes ... /> </Component>
Включить расширение IIS, добавив опцию вариант
-ext WixIISExtension
при вызове WIX инструментов командной строки. Если вы используете визуальную студию, это просто вопрос добавления ссылки в ваш проект wix кWixIISExtension
.
Чтобы расширить ответ немного, следующий набор атрибутов работал для меня:
<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).
Я рассмотрю этот ответ и попробую. Спасибо за ваш ответ еще раз. В целом оцените ваше объяснение. Веселого Рождества! – abmv