18

最近、globalsignからauthenticode証明書を購入しましたが、展開用のファイルに署名する際に問題が発生します。プロジェクトによって生成されてから.msiに入れられる.exeファイルがいくつかあります。signtoolを使用して.exeファイルに署名すると、証明書は有効であり、正常に実行されます。問題は、(Visual Studioセットアッププロジェクトを使用して).msiをビルドすると、.exeファイルの署名が失われることです。したがって、ビルド後に.msiに署名することはできますが、インストールされた.exeファイルは「不明な発行元」のビジネス全体を継続します。クライアントマシンにインストールするために、これらのファイルの署名を保持するにはどうすればよいですか?

4

3 に答える 3

18

Visual Studioは、コンパイル時にobjとbinの2つのフォルダーを作成します。少なくとも私の場合、出力は常にobjフォルダーからbinフォルダーにコピーされます。binフォルダー内の実行可能ファイルに署名して、上書きしてmsiにパッケージ化するだけでした。objフォルダー内の実行可能ファイルに署名すると、問題が解決しました。

于 2009-11-02T15:56:53.753 に答える
17

次のPostBuildEventをVSセットアッププロジェクト(プロジェクトプロパティ)に追加できます。

Windows 8.0:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)

ウインドウズ10:

"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)

プロジェクトプロパティウィンドウ

signtoolの使用法については、このMSDNドキュメントを参照してください。/ fフラグを使用して署名証明書を指定したり、/pを使用して証明書のパスワードを指定したりできます。

また、$(BuildOuputPath)のスペルが間違っていることに注意してください。これは意図的なものです。ありがとうマイクロソフト...

于 2013-03-07T13:53:16.860 に答える
3

他のオプション(私が行っているオプション)は、最初に.msiを作成してから、pfx(証明書)を使用して署名することです。

(globalsign.comで購入したコード署名証明書を使用しています)

CMDを開きます:実行-> powershell

証明書がある場所で実行し、指紋を保存します。

PS C:\ Windows \ system32>Get-PfxCertificate-FilePath。\CompanyCertificate.pfx

このABCFEDRABF229B78BF9C40EC47007C1234567890のようなものが得られます。次の実行行で、値を置き換える必要があります。

次に、singtool.exeが配置されている場所を見つけてそこに移動し(私の場合はWin 10、msiも同じパスにある必要があります)、次の手順を実行します。

PS C:\Program Files (x86)\Windows Kits\10\App Certification Kit> .\signtool.exe sign /f CompanyCertificate.pfx /d "App Description" /p pfxPasswordHere /v /sha1 ABCFEDRABF229B78BF9C40EC47007C1234567890 /t "http://timestamp.comodoca.com/authenticode" MyApplicationSetup.msi

正常に署名されたファイルの数:1

警告の数:0

エラー数:0

おめでとうございます!

.msiプロパティの下に次の新しいタブが表示されます。

ここに画像の説明を入力してください

そして最後にそれをインストールしてみてください:

成功!!

于 2020-04-29T00:03:06.670 に答える