WiX:安装密码保护的PFX证书时出现问题

时间:2011-04-27 12:06:51

标签: wix certificate pfx

我在通过WiX安装受密码保护的PFX证书时遇到了一些麻烦。

我正在使用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。我通过在“Release”配置中有条件地定义$(var.PfxPassword),然后按如下方式安装证书来解决这个问题:

<?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表示密码不正确,但我使用PowerShell中的Get-PfxCertificate来验证我使用的密码是否正确。

对于PFX文件不使用密码的所有配置,安装都可以正常运行。

1 个答案:

答案 0 :(得分:0)

在互联网上查看类似的问题elsewhere,看起来返回代码3是“未找到文件”问题。你确定包含了正确的pfx文件吗?