2009-09-14 5 views
24

Ich versuche mt.exe aus dem Windows SDK zu verwenden, um ein Manifest zu einer ausführbaren Datei hinzuzufügen, die nicht über eine einzige, die folgende Befehlszeile:Wie füge ich ein Manifest zu einer ausführbaren Datei mit mt.exe hinzu?

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

Leider, wenn ich tue, ich erhalten diese Fehlermeldung:

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. 

natürlich ist die Ressource nicht in der Datei gefunden wurde - die Datei hat keinen offensichtlichen, deshalb habe ich ein hinzufügen möchten.

Wie kann ich ein Manifest an eine ausführbare Datei anhängen? Sollte das nicht einfach sein?

Antwort

22

Sie sollten /outputresource anstelle von /update-Ressource: verwenden.

Die Linie richtige Befehl wäre:

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

Sie auch es so verwenden können, das Manifest in der EXE-Datei einbetten:

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

7

Das ist für mich für VS 2005 arbeitete:

  1. erstellen Textdatei, die nach der ausführbaren Datei mit dem Erweiterungsmanifest benannt wurde, und sicherstellen, dass sie sich im selben Pfad wie Ihre Codedateien befindet; d. h. Form1.cs usw. Wenn Ihr App-Name beispielsweise UACTester.exe lautet, sollte Ihre Manifestdatei den Namen UACTester.exe.manifest haben.
  2. Sicherstellen, dass der Inhalt des Manifests gut ist. Ich benutze diese ein:
<?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. auf die ausführbare Datei Projekt, fügen Sie den folgenden Postbuildereignis:

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

Hoffnung, das hilft. Viel Glück! -Matt Esterak

Verwandte Themen