4

バックグラウンド

私は、WiX が InstallShield の実行可能な代替手段であるかどうかを判断するための研究を行っています。そのため、WiX がそれらを処理できることを確認するために、私たちの作業が直面したすべてのシナリオをテストしてきました。しかし、私は1つの問題に困惑しています。証明書の有効期限が近づいたら、新しい証明書を含むパッチを作成し、有効期限が切れる前に古い証明書で署名して、管理者の昇格プロンプトなしでシームレスにパッチを適用できるようにする必要があります。

問題

インターネット上でこれを正確に行う方法についてのドキュメントはあまりありません。追加してみました

<DigitalCertificate Id="MyNewCertificate" SourceFile="{PATH_TO_NEW_CERTIFICATE}"/>

MSI ファイルを生成する wxs ファイルの PatchCertificates 要素に追加し、古い MSI ファイルと新しい MSI ファイルを使用して MSP ファイルを生成します。MSP ファイルを 7zip で開くと、新しい証明書が埋め込まれていることがわかります。ロックダウンされたアカウントでテストしたところ、このパッチは昇格プロンプトなしで適用されましたが、新しい証明書によって署名された次のパッチでは昇格プロンプトが表示されます。

私が試したこと

「並列」更新を作成するためにhttps://wyrdfish.wordpress.com/2012/07/20/writing-a-parallel-update/の手順に従ってみましたが、PatchではなくPatchCreationで機能するように変更を加えました. すべての属性の変更を一致させましたが、それでも昇格プロンプトが表示されます。

Wyrdfish は次のようにコメントしています。 //windows-installer-xml-wix-toolset.687559.n2.nabble.com/Require-admin-rights-to-msp-td7586837.htmlですが、その方法の詳細は提供されていません。スレッドは 2 年前のものなので、そこに応答があるとは思えません。

また、新しい証明書を使用して signtool.exe に /ac パラメータを指定しようとしましたが、クロス署名エラーが発生しました。

私は正確に何を間違っていますか?新しい MSI ファイルには、MSP に反映されている新しい DigitalCertificate 要素だけがあり、他の変更はありません。ある種のファイル変更などを含める必要がありますか? それとも、署名プロセスが問題ですか?

4

1 に答える 1