web-dev-qa-db-ja.com

mt.exeを使用して実行ファイルにマニフェストを追加するにはどうすればよいですか?

次のコマンドラインを使用して、Windows SDKのmt.exeを使用して、マニフェストがない実行可能ファイルにマニフェストを追加しようとしています。

C:\winsdk61>mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -updateresource:"r:\shared\hl33m.exe;#1"

残念ながら、私がそうすると、私はこのエラーを受け取ります:

mt.exe : general error c101008c: Failed to read the manifest from
the resource of file "r:\shared\hl33m.exe". The specified resource
type cannot be found in the image file.

もちろん、リソースはファイルで見つかりませんでした-ファイルにマニフェストがないので、マニフェストを追加します。

実行可能ファイルにマニフェストを追加するにはどうすればよいですか?これは簡単ではありませんか?

35
Colen

/ updateresource:の代わりに/ outputresourceを使用する必要があります。

正しいコマンドラインは次のようになります。

mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -outputresource:"r:\shared\hl33m.exe;#1"
32
Cristian Adam

これは私にとってVS 2005でうまくいきました:

  1. 拡張マニフェストを含む実行可能ファイルにちなんで名前が付けられたテキストファイルを作成し、コードファイルと同じパスにあることを確認します。つまり、Form1.csなどです。たとえば、アプリ名がUACTester.exeの場合、マニフェストファイルの名前はUACTester.exe.manifestにする必要があります。
  2. マニフェストの内容が適切であることを確認してください。私はこれを使います:
_    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:Assembly manifestVersion="1.0" xmlns="urn:schemas-Microsoft-com:asm.v1"
     xmlns:asmv1="urn:schemas-Microsoft-com:asm.v1" 
     xmlns:asmv2="urn:schemas-Microsoft-com:asm.v2" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
        <trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
            <security>
                <requestedPrivileges xmlns="urn:schemas-Microsoft-com:asm.v3">
                    <requestedExecutionLevel level="requireAdministrator" 
                     uiAccess="false" />
                </requestedPrivileges>
                <applicationRequestMinimum>
                    <defaultAssemblyRequest permissionSetReference="Custom" />
                    <PermissionSet class="System.Security.PermissionSet" 
                     version="1" ID="Custom" SameSite="site" />
                </applicationRequestMinimum>
            </security>
        </trustInfo>
        <compatibility xmlns="urn:schemas-Microsoft-com:compatibility.v1">
            <application>
            </application>
        </compatibility>
    </asmv1:Assembly>
_
  1. 実行可能プロジェクトで、次のビルド後イベントを追加します。

    "$(DevEnvDir)..\Tools\Bin\mt.exe" -nologo -manifest "$(TargetPath).manifest" -outputresource:"$(TargetPath)"

お役に立てれば。幸運を! -Matt Esterak

7
mesterak

次のように使用して、マニフェストをEXEファイルに埋め込むこともできます。

mt.exe -nologo -manifest "r:\ shared\hl.exe.manifest" -outputresource: "r:\ shared\hl33m.exe; 1"

4
user403103