كيف أقوم بإضافة بيان إلى ملف قابل للتنفيذ باستخدام mt.exe؟

StackOverflow https://stackoverflow.com/questions/1423492

  •  07-07-2019
  •  | 
  •  

سؤال

أحاول استخدام 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:

  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)"

أتمنى أن يساعدك هذا.حظ سعيد! -مات استراك

ويمكنك أيضا استخدامه مثل هذا تضمين واضح داخل ملف EXE:

وmt.exe -nologo -manifest "ص: \ مشترك \ hl.exe.manifest" -outputresource: "ص: \ \ hl33m.exe المشتركة؛ 1"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top