#wix #certificate #pfx
#wix #сертификат #pfx
Вопрос:
У меня возникли некоторые проблемы с получением защищенного паролем сертификата PFX для установки через WiX.
Я использую WiX 3.5.2519.0.
Я включаю файл PFX следующим образом:
<Binary Id="My.Binary"
SourceFile="$(var.ProjectDir)MyProject$(var.ConfigSuffix).pfx" />
Значение $ (var.ConfigSuffix) варьируется в зависимости от конфигурации решения (например, «(Debug)», » (Stage)»). Для «Release» устанавливается пустая строка.
У меня есть различные конфигурации решений, все, кроме одного, используют сертификат PFX, не защищенный паролем, «Release» использует защищенный паролем PFX. Я решаю эту проблему, условно определяя $ (var.PfxPassword) только в конфигурации «Release», а затем устанавливая сертификат следующим образом:
<?ifdef $(var.PfxPassword) ?>
<iis:Certificate
Id="My.Certificate"
StoreName="root"
Overwrite="yes"
Name="My Web Site$(var.ConfigSuffix)"
Request="no"
BinaryKey="MyCertificate.Binary"
StoreLocation="localMachine"
PFXPassword="$(var.PfxPassword)" />
<?else?>
<iis:Certificate
Id="My.Certificate"
StoreName="root"
Overwrite="yes"
Name="My Web Site$(var.ConfigSuffix)"
Request="no"
BinaryKey="MyCertificate.Binary"
StoreLocation="localMachine" />
<?endif?>
Я также попытался заменить «$ (var.PfxPassword)» на «[PFXPASSWORD]» (определив это в другом месте) и фактический пароль в виде обычного текста. В каждом случае установка завершается неудачей со следующим фрагментом журнала:
Action start 12:29:02: InstallCertificates.
InstallCertificates: Error 0x80070056: Failed to open PFX file.
InstallCertificates: Error 0x80070056: Failed to get SHA1 hash of certificate.
InstallCertificates: Error 0x80070056: Failed to resolve certificate: LinnRecords.Certificate
CustomAction InstallCertificates returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 12:29:02: InstallCertificates. Return value 3.
Я полагаю, что ошибка 0x80070056 указывает на неправильный пароль, однако я использовал Get-PfxCertificate в PowerShell, чтобы убедиться, что пароль, который я использую, правильный.
Для всех конфигураций, где файл PFX не использует пароль, установка выполняется без проблем.
Комментарии:
1. Пароль не содержит никаких символов, которые могли бы потребовать экранирования, не так ли? например, [{]} и т.д.
2. Нет — просто обычный текст, например, «MyPassword».
3. У меня была такая же проблема. «Запуск от имени администратора» решил ее.
Ответ №1:
Глядя на подобную проблему в другом месте в Интернете, похоже, что код возврата 3 — это проблема «Файл не найден». Вы уверены, что включен правильный файл pfx?