Mt.exe
Mt.exe 文件是生成已签名文件和目录的工具。 它在 Microsoft Windows 软件开发工具包(SDK)中提供。 Mt.exe 要求清单中引用的文件与清单位于同一目录中。
Mt.exe 使用安全哈希算法 (SHA-1) 的 CryptoAPI 实现生成哈希。 有关哈希算法的详细信息,请参阅 哈希和签名算法。 哈希作为十六进制字符串插入到清单中的 文件 标记中。 该工具当前仅生成 SHA-1 哈希,尽管清单中的文件可能使用其他哈希方案。
Mt.exe 使用 Makecat.exe 从目录定义文件(.cdf)生成目录文件(.cat)。 此工具使用清单的名称和位置填写标准模板 CDF。 可以将此项用于 Makecat.exe 来生成程序集目录。
Windows SDK 的最新版本中提供的 Mt.exe 版本还可用于生成托管程序集和非托管并行程序集的清单。
语法
mt.exe [-manifest:<component1.manifest><component2.manifest>] [-identity:<identity string>]
[-rgs:<file1.rgs>] [-tlb:<file2.tlb>] [-dll:<file3.dll>] [-replacements:<XML filename>]
[-managedassemblyname:<managed assembly>] [-nodependency] [-category] [-out:<output manifest name>]
[-inputresource:<file4>;[#]<resource_id>] [-outputresource:<file5>;[#]<resource_id>]
[-updateresource:<file6>;[#]<resource_id>] [-hashupdate[:<path to files>]] [-makecdfs] [-validate_manifest]
[-validate_file_hashes:<path to files>] [-canonicalize] [-check_for_duplicates] [-nologo] [-verbose]
命令行选项
Mt.exe 使用以下不区分大小写的命令行选项。
选择 | 描述 |
---|---|
-清单 | 指定清单文件的名称。 若要修改单个清单,请指定一个清单文件名。 例如 component.manifest。 若要合并多个清单,请在此处指定源清单的名称。 使用 -out、-outputresource或 -updateresource 选项指定更新的清单的名称。 例如,以下命令行请求将两个清单(man1.manifest 和 man2.manifest)合并到新的清单 man3.manifest 中的作。 mt.exe -manifest man1.manifest man2.manifest -out:man3.manifest 没有冒号(:)是 -manifest 选项所必需的。 |
-身份 | 提供清单的 assemblyIdentity 元素的属性值。 -identity 选项的参数是一个字符串值,其中包含用逗号分隔的字段中的属性值。 在第一个字段中提供 名称 属性的值,而不包括“name=”子字符串。 其余所有字段都使用窗体指定属性及其值:<属性名称>=<attribute_value>。 例如,若要使用以下信息更新清单的 assemblyIdentity 元素: <assemblyIdentity type=“win32” name=“Microsoft.Windows.SampleAssembly” version=“6.0.0.0” processorArchitecture=“x86” publicKeyToken=“a5aaf5ba15723d5”/> 在命令行中包含以下 -identity 选项: -identity:“Microsoft.Windows.SampleAssembly, processorArchitecture=x86, version=6.0.0.0, type=win32, publicKeyToken=a5aaf5ba15723d5” |
-rgs | 指定注册脚本 (.rgs) 文件的名称。 使用 -rgs 选项需要 -dll 选项。 |
-tlb | 指定类型库 (.tlb) 文件的名称。 使用 -tlb 选项需要使用 -dll 选项。 |
-dll | 指定动态链接库 (DLL) 文件的名称。 如果使用 -rgs 或 -tlb 选项,则 mt.exe 需要 -dll 选项。 指定要最终从 .rgs 或 .tlb 文件生成的 DLL 的名称。 例如,以下命令请求从 .rgs 和 .tlb 文件生成清单的作。 mt.exe -rgs:testreg1.rgs -tlb:testlib1.tlb -dll:test.dll -replacements:rep.manifest -identity:“Microsoft.Windows.SampleAssembly, processorArchitecture=x86, version=6.0.0.0, type=win32, publicKeyToken=a5aaf5ba15723d5” -out:rgstlb.manifest |
-更换 | 指定包含 .rgs 文件中可替换字符串的值的文件。 |
-managedassemblyname | 从指定的托管程序集生成清单。 与 -nodependency 选项一起使用,以生成没有依赖项元素的清单。 与 -category 选项一起使用,生成带有类别标记的清单。 例如,如果 managed.dll 是托管程序集,则以下命令行从 managed.dll生成 out.manifest。 mt.exe -managedassemblyname:managed.dll -out:out.manifest |
-nodependency | 指定一个作,该作生成不带依赖项元素的清单。 -nodependency 选项需要 -managedassemblyname 选项。 例如,如果 managed.dll 是托管程序集,则以下命令行将从 managed.dll 生成 out.manifest,而无需依赖项信息。 mt.exe -managedassemblyname:managed.dll -out:out.manifest -nodependency |
-类别 | 指定生成具有类别标记的清单的作。 -category 选项需要 -managedassemblyname 选项。 例如,如果 managed.dll 是托管程序集,则以下命令行使用类别标记从 managed.dll 生成 out.manifest。 mt.exe -managedassemblyname:managed.dll -out:out.manifest -category |
-nologo | 指定在不显示标准Microsoft版权数据的情况下运行的作。 如果 mt.exe 作为生成过程的一部分运行,此选项可用于防止将不需要的信息写入日志文件。 |
-外 | 指定更新的清单的名称。 如果这是单清单作,并且省略 -out 选项,则会修改原始清单。 |
-inputresource | 指定对从类型为 RT_MANIFEST 的资源获取的清单执行的作。 如果使用 -inputresource 选项而不指定资源标识符 <resource_id>,则作将使用值CREATEPROCESS_MANIFEST_RESOURCE。 例如,以下命令请求从 DLL、dll_with_manifest.dll和清单文件 man2.manifest 合并清单的作。 合并的清单由另一个 DLL 的资源文件中的清单接收,dll_with_merged_manifests。 mt.exe -inputresource:dll_with_manifest.dll;#1 -manifest man2.manifest -outputresource:dll_with_merged_manifest.dll;#3 若要从 DLL 中提取清单,请指定 DLL 文件名。 例如,以下命令从 lib1.dll 中提取清单,man3.manifest 接收提取的清单。 mt.exe -inputresource:lib.dll;#1 -out:man3.manifest |
-outputresource | 指定要由类型为 RT_MANIFEST 的资源接收的清单的作。 如果使用 -outputresource 选项而不指定资源标识符 <resource_id>,则作将使用值CREATEPROCESS_MANIFEST_RESOURCE。 |
-updateresource | 指定与使用具有相同参数的 -inputresource 和 -outputresource 选项等效的作。 例如,以下命令请求一个作,该作计算指定路径上的文件的哈希,并更新可移植可执行文件(PE)的资源清单。 mt.exe -updateresource:dll_with_manifest.dll;#1 -hashupdate:f:\files。 |
-hashupdate | 计算指定路径中文件的哈希值,并使用此值更新 文件 元素的 哈希 属性的值。 例如,以下命令请求合并两个清单文件(man1.manifest 和 man2.manifest)的作,并在接收合并信息 merged.manifest 的清单中更新 File 元素的 哈希 属性的值。 mt.exe -manifest man1.manifest man2.manifest -hashupdate:d:\filerepository -out:merged.manifest 如果未指定文件的路径,则作将搜索指定用于接收更新的清单的位置。 例如,以下命令请求一个作,该作使用通过搜索 updated.manifest 的位置找到的文件计算更新的哈希值。 mt.exe -manifest component.manifest -hashupdate -out:updated.manifest |
-validate_manifest | 指定一个作,该作使用清单架构对清单的一致性执行语法检查。 例如,以下命令请求检查,以使用其架构验证 man1.manifest 的一致性。 mt.exe -manifest man1.manifest -validate_manifest |
-validate_file_hashes | 指定一个作,用于验证清单 文件 元素的哈希值。 例如,以下命令请求一个作,该作验证 man1.manifest 的所有 File 元素的哈希值。 mt.exe -manifest man1.manifest -validate_file_hashes:“c;\files” |
-canonicalize | 指定要将清单更新为规范形式的作。 例如,以下命令将 man1.manifest 更新为规范形式。 mt.exe -manifest man1.manifest |
-check_for_duplicates | 指定检查清单中是否存在重复元素的作。 例如,以下命令检查 man1.manifest 中的重复元素。 mt.exe -man1.manifest -check_for_duplicates |
-makecdfs | 生成用于创建目录的 .cdf 文件。 例如,对于以下命令,请求更新哈希值并生成 .cdf 文件的作。 mt.exe -manifest comp1.manifest -hashupdate -makecdfs -out:updated.manifest |
-详细 | 显示详细调试信息。 |
-? | 当使用-?,或无选项和参数运行时,Mt.exe 显示帮助文本。 |