1

パスワードで保護された PFX 証明書を WiX 経由でインストールするのに問題があります。

WiX 3.5.2519.0 を使用しています。

次のように PFX ファイルを含めます。

<Binary Id="My.Binary"
 SourceFile="$(var.ProjectDir)MyProject$(var.ConfigSuffix).pfx" />

$(var.ConfigSuffix) の値は、ソリューションの構成 (" (Debug)"、" (Stage)" など) によって異なります。「リリース」の場合は、空文字列に設定されます。

さまざまなソリューション構成がありますが、パスワードで保護されていない PFX 証明書を使用するものを除いてすべて、パスワードで保護された PFX を使用する「リリース」があります。「リリース」構成のみで条件付きで $(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 ファイルがパスワードを使用しないすべての構成では、インストールは問題なく機能します。

4

1 に答える 1

0

インターネット上の他の場所で同様の問題を見ると、リターンコード3は「ファイルが見つかりません」の問題のようです。正しいpfxファイルが含まれていることを確認しますか?

于 2011-05-05T22:02:33.113 に答える