3

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>

マニフェストを埋め込む前に署名してもエラーはありませんが、変更後にファイルを再署名する必要があるため機能しません。

次の手順も試しました。

  1. setup.exe に署名する
  2. マニフェストを埋め込む
  3. setup.exe を再署名します (このステップで上記と同じエラーが発生します)。

この問題の解決策/回避策はありますか?

4

2 に答える 2

1

引用するソースが見つかりませんが、少し前に同様の問題に遭遇し、以前に署名された setup.exe に署名することはできません。ブートストラッパーを最初から生成し ( MSDN を参照)、マニフェストを適用してから署名することができます (初めて!)。動作するはずです。

于 2013-11-08T16:25:24.573 に答える