WiX: Проблема с установкой защищенного паролем сертификата PFX

#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?