J'essaie d'utiliser mt.exe du SDK Windows pour ajouter un manifeste à un fichier exécutable qui n'en a pas, en utilisant la ligne de commande suivante:
C:\winsdk61>mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -updateresource:"r:\shared\hl33m.exe;#1"
Malheureusement, lorsque je le fais, j'obtiens cette erreur:
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.
Bien sûr, la ressource n'a pas été trouvée dans le fichier - le fichier n'a pas de manifeste, c'est pourquoi je veux en ajouter un.
Comment puis-je ajouter un manifeste à un fichier exécutable? Cela ne devrait-il pas être simple?
Vous devez utiliser / outputresource au lieu de / updateresource:.
La ligne de commande correcte serait:
mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -outputresource:"r:\shared\hl33m.exe;#1"
Cela a fonctionné pour moi pour VS 2005:
<?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>
Sur votre projet exécutable, ajoutez l'événement post-build suivant:
"$(DevEnvDir)..\Tools\Bin\mt.exe" -nologo -manifest "$(TargetPath).manifest" -outputresource:"$(TargetPath)"
J'espère que cela t'aides. Bonne chance! - Matt Esterak
Vous pouvez également l'utiliser comme ceci pour incorporer le manifeste dans le fichier EXE:
mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -outputresource: "r:\shared\hl33m.exe; 1"