Nant を使用して、Clickonce を使用してソフトウェアのセットアップを準備しています。
signtool を使用して dll(s) と exe(s) に署名します。
signtool コマンド:signtool sign /f ${certFile} /p ${certFilePwd} {path of setup.exe}
Mt.exeを使用してマニフェストを exe ファイルに埋め込む。
Mt コマンド:mt -manifest {manifest file} -outputresource:{filepath};#1
2 つの exe ファイルがあります。1 つは app.exe で、2 番目は setup.exe (clickonce によって作成されたブートストラップ) です。
マニフェストを埋め込んだ後の署名では、app.exe に問題はありません。
ただし、マニフェストを埋め込んだ後に setup.exe に署名すると、以下のエラーが発生します。
SignTool Error: SignedCode::Sign returned error: 0x80070057. The parameter is incorrect.
マニフェスト ファイルには次が含まれます。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
<ms_asmv2:security>
<ms_asmv2:requestedPrivileges>
<ms_asmv2:requestedExecutionLevel level="asInvoker"
uiAccess="false"></ms_asmv2:requestedExecutionLevel>
</ms_asmv2:requestedPrivileges>
</ms_asmv2:security>
</ms_asmv2:trustInfo>
</assembly>
マニフェストを埋め込む前に署名してもエラーはありませんが、変更後にファイルを再署名する必要があるため機能しません。
次の手順も試しました。
- setup.exe に署名する
- マニフェストを埋め込む
- setup.exe を再署名します (このステップで上記と同じエラーが発生します)。
この問題の解決策/回避策はありますか?