Visual Studio .msiのインストールファイルに署名する方法
-
22-07-2019 - |
質問
最近、globalsignからauthenticode証明書を購入しましたが、展開用のファイルの署名に問題があります。プロジェクトによって生成され、.msiに配置されるいくつかの.exeファイルがあります。 signtoolで.exeファイルに署名すると、証明書は有効であり、正常に実行されます。問題は、Visual Studioセットアッププロジェクトを使用して.msiをビルドすると、.exeファイルの署名が失われることです。したがって、.msiの作成後に.msiに署名できますが、インストールされた.exeファイルは「不明な発行元」全体を継続します。ビジネス。クライアントマシンにインストールするためにこれらのファイルの署名を保持するにはどうすればよいですか?
解決
Visual Studioは、コンパイル時にobjとbinの2つのフォルダーを作成します。少なくとも私の場合、出力は常にobjフォルダーからbinフォルダーにコピーされます。 binフォルダー内の実行可能ファイルに署名して、上書きしてからmsiにパッケージ化しました。 objフォルダー内の実行可能ファイルに署名することで問題が解決しました。
他のヒント
次のPostBuildEventをVSセットアッププロジェクト(プロジェクトプロパティ)に追加できます。
Windows 8.0:
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a $(BuiltOuputPath)
Windows 10:
"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /a $(BuiltOuputPath)
このMSDNドキュメントサインツールの使用。 / fフラグを使用して署名証明書を指定し、/ pを使用して証明書のパスワードなどを指定できます
また、$(BuildOuputPath)のスペルが間違っていることに注意してください。 これは意図的なものです。マイクロソフトに感謝します。 ..
インストーラープロジェクトは、署名されていないバイナリではなく、署名されたバイナリを確認しますか?
msi builderをあまり使用していませんが、パッケージ化したファイルをまったく変更しないのは驚くべきことです。