Как добавить манифест в исполняемый файл с помощью mt.exe?
Вопрос
Я пытаюсь использовать mt.exe из Windows SDK, чтобы добавить манифест в исполняемый файл, в котором его нет, с помощью следующей командной строки:
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.
Конечно, ресурс не найден в файле - у файла нет манифеста, поэтому я хочу добавить его.
Как я могу добавить манифест в исполняемый файл? Разве это не должно быть просто?
Решение
Вы должны использовать / outputresource вместо / updateresource: .
Правильная командная строка будет выглядеть так:
mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -outputresource:"r:\shared\hl33m.exe;#1"
Другие советы
Это сработало для меня для 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>
<Ол>
В свой исполняемый проект добавьте следующее событие после сборки:
<код> & Quot; $ (DevEnvDir) .. \ Tools \ Bin \ mt.exe & Quot; -nologo -manifest " $ (TargetPath) .manifest " -outputresource: & Quot; $ (TargetPath) & Quot; код> р>
Надеюсь, это поможет. Удачи! -Мат Эстерак
Вы также можете использовать его следующим образом для встраивания манифеста в файл EXE:
mt.exe -nologo -manifest " r: \ shared \ hl.exe.manifest " -outputresource: & Quot; г: \ Shared \ hl33m.exe; 1 & Quot; р>