美文网首页
Windows manifest文件

Windows manifest文件

作者: CodingCode | 来源:发表于2023-04-24 03:32 被阅读0次
    1. 背景

    manifest的介绍:
    https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests

    其背景是为了解决DLL Hell问题:
    https://en.wikipedia.org/wiki/DLL_Helli

    1. 如何生成manifest文件

    link选项

    cl ... -link /MANIFEST[:{EMBED[,ID=resource_id]|NO}]

    /MANIFEST       : 生成.manifest文件
    /MANIFEST:EMBED : 不生成.manifest文件,把内容直接打入可执行文件
    /MANIFEST:NO    : 不生成.manifest文件
    

    貌似/MANIFEST:NO和没有/MANIFEST选项是一样的作用,就是不生成manifest。

    关于ID=resource_id的说明,简单的说就是,缺省情况下:

    • 对于exe文件,缺省是值1
    • 对于DLL文件,缺省值是2。

    (参考:/MANIFEST (Create side-by-side assembly manifest, https://learn.microsoft.com/en-us/cpp/build/reference/manifest-create-side-by-side-assembly-manifest?view=msvc-170

    1. 如何把.manifest文件打入可执行文件,以及如何从可执行文件提取.manifest文件

    利用mt.exe工具:

    1. 从可执行文件提取manifest信息:
    mt.exe -inputresource:<PGM>.exe;#1 -out:<PGM>.exe.manifest
    
    1. 把manifest写入可执行文件:
    mt.exe -manifest <PGM>.exe.manifest -outputresource:<PGM>.exe;#1
    

    关于#1的定义,参考前面manifest的定义,缺省情况下EXE文件是1,DLL文件是2。

    相关文章

      网友评论

          本文标题:Windows manifest文件

          本文链接:https://www.haomeiwen.com/subject/xqfujdtx.html