Frage

Ich versuche mt.exe aus dem Windows SDK zu verwenden, um ein Manifest zu einer ausführbaren Datei hinzuzufügen, die nicht über eine einzigen, die folgende Befehlszeile:

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

Leider, wenn ich es tue, erhalte ich 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 wurde die Ressource nicht in der Datei gefunden -. Die Datei hat keinen offensichtlichen, deshalb habe ich ein hinzufügen möchten

Wie kann ich anhängen ein Manifest zu einer ausführbaren Datei? Sollte dies nicht einfach sein?

War es hilfreich?

Lösung

Sie sollten verwenden / outputresource statt / updateresource:.

Die korrekte Befehlszeile wäre:

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

Andere Tipps

Das funktionierte für mich für VS 2005:

  1. Textdatei nach ausführbaren Namen erstellen mit der Erweiterung manifestiert, und sicherzustellen, dass es in dem gleichen Weg wie die Code-Dateien befindet; das heißt Form1.cs, etc. Zum Beispiel, wenn Sie Ihre App-Namen UACTester.exe dann Ihre Manifest-Datei ist UACTester.exe.manifest sollte benannt.
  2. Stellen Sie sicher, den Inhalt des Manifests ist gut. 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 dem ausführbare Projekt, fügen Sie das folgende Post-Build-Ereignis:

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

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

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top