トップ回答者
セットアッププロジェクトでインストーラを作成するとEXEファイルの署名が消える

質問
-
こんにちは。宜しくお願いします。
開発環境:Visual Studio 2010
不具合状況:EXEの署名がインストーラでインストールすると消える
EXEのビルド成功時にsigntoolで署名をしています。
ビルド後、EXEのプロパティを見るとデジタル署名タブが表示され、
証明書を確認することができます。
しかし、セットアッププロジェクトでインストーラを作成し、
インストーラでインストールされたEXEのプロパティを見ると、
デジタル署名タブが表示されません。
実際に、ビルドしたEXEとインストールしたEXEの中身を見比べると、
ファイルの最後の署名らしきデータが無くなっています。
ファイルサイズも違います。
インストーラに含まれているEXEが違うものではないかと疑い、
EXEに変更を加えてからインストーラを作成し、インストールしましたが、
変更が反映されているので、違うものではなさそうです。
なぜ、インストーラでインストールするとEXEの署名が消えるのでしょうか?
ご教授の程、宜しくお願い致します。- 編集済み Y.Tani 2015年1月29日 8:31
回答
-
セットアッププロジェクトには、EXEをビルドしたプロジェクトの参照がプライマリ出力で追加されていますか?
ソリューションエクスプローラーで3そのプライマリ出力を選択して、コンテキストメニューの「複数の出力」か、プロパティウィンドウにあるOutputsを開いてみてください。
ターゲット名としてexeファイルが、ソースパスとしてファイルのフルパスが確認できます。
そのフルパスが署名したEXEファイル以外の場所を参照していたりしませんか?
たとえばVBやC#プロジェクトの場合だとビルドの標準の出力先は$(ProjectDir)bin\Release\*.exeですが、セットアッププロジェクトはobj\Release\*.exeを参照してるとおもいます。
#EXEビルド後のイベントで$(TargetPath)に対して署名しているとbinのほうだけに署名されます。
あるいはリリースビルドを参照しているつもりなのに、署名してないデバッグビルドの出力を参照してるとか。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Y.Tani 2015年1月30日 1:27
すべての返信
-
セットアッププロジェクトには、EXEをビルドしたプロジェクトの参照がプライマリ出力で追加されていますか?
ソリューションエクスプローラーで3そのプライマリ出力を選択して、コンテキストメニューの「複数の出力」か、プロパティウィンドウにあるOutputsを開いてみてください。
ターゲット名としてexeファイルが、ソースパスとしてファイルのフルパスが確認できます。
そのフルパスが署名したEXEファイル以外の場所を参照していたりしませんか?
たとえばVBやC#プロジェクトの場合だとビルドの標準の出力先は$(ProjectDir)bin\Release\*.exeですが、セットアッププロジェクトはobj\Release\*.exeを参照してるとおもいます。
#EXEビルド後のイベントで$(TargetPath)に対して署名しているとbinのほうだけに署名されます。
あるいはリリースビルドを参照しているつもりなのに、署名してないデバッグビルドの出力を参照してるとか。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Y.Tani 2015年1月30日 1:27