パスワードで保護された 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 ファイルがパスワードを使用しないすべての構成では、インストールは問題なく機能します。