У меня проблемы с получением защищенного паролем сертификата 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 не использует пароль, установка работает без проблем.