Click to Rate and Give Feedback

  Switch on low bandwidth view
Mt.exe

The Mt.exe file is a tool that generates signed files and catalogs. It is available in the Microsoft Windows Software Development Kit (SDK). Mt.exe requires that the file referenced in the manifest be present in the same directory as the manifest.

Mt.exe generates hashes using the CryptoAPI implementation of the Secure Hash Algorithm (SHA-1). For more information about hash algorithms, see Hash and Signature Algorithms. Hashes are inserted as a hexadecimal string into the <file> tags in the manifest. The tool currently only generates SHA-1 hashes, although files in manifests may use other hashing schemes.

Mt.exe uses Makecat.exe to generate catalog files (.cat) from catalog definition files (.cdf). This tool fills out a standard template CDF with the name and location of your manifest. You can use this with Makecat.exe to generate the assembly catalog.

The version of Mt.exe provided in recent versions of the Windows SDK can also be used to generate manifests for managed assemblies and unmanaged side-by-side assemblies.

Syntax

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]

Command Line Options

Mt.exe uses the following case-insensitive command line options.

OptionDescription
-manifest

Specifies the name of the manifest file. To modify a single manifest, specify one manifest file name. For example, component.manifest.

To merge multiple manifests, specify the names of the source manifests here. Specify the name of the updated manifest with either the -out, -outputresource, or -updateresource options. For example, the following command line requests an operation that merges two manifests, man1.manifest and man2.manifest, into a new manifest, man3.manifest.

mt.exe -manifest man1.manifest man2.manifest -out:man3.manifest

Note  No colon (:) is required with the -manifest option.

-identity

Provides the attributes values of the <assemblyIdentity> element of the manifest. The argument of the -identity option is a string value containing the attribute values in fields separated by commas. Provide the value of the name attribute in the first field, without including a "name=" substring. All the remaining fields specify the attributes and their values using the form: <attribute name>=<attribute_value>.

For example, to update the <assemblyIdentity> element of the manifest with the following information:

<assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="a5aaf5ba15723d5"/>

include the following -identity option on the command line:

-identity:"Microsoft.Windows.SampleAssembly, processorArchitecture=x86, version=6.0.0.0, type=win32, publicKeyToken=a5aaf5ba15723d5"

-rgs

Specifies the name of the registration script (.rgs) file. The -dll option is required to use the -rgs option.

-tlb

Specifies the name of the type library (.tlb) file. The -dll option is required to use the -tlb option.

-dll

Specifies the name of the dynamic-link library (DLL) file. The -dll option is required by mt.exe if the -rgs or -tlb options are used. Specify the name of the DLL you intend to eventually build from the .rgs or .tlb files.

For example, the following command requests an operation that generates a manifest from .rgs and .tlb files.

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

-replacements

Specifies the file that contains values for the replaceable string in the .rgs file.

-managedassemblyname

Generates a manifest from the specified managed assembly. Use with the -nodependency option to generate a manifest without dependency elements. Use with the -category option to generate a manifest with category tags. For example, if managed.dll is a managed assembly, the following command line generates the out.manifest from managed.dll.

mt.exe -managedassemblyname:managed.dll -out:out.manifest

-nodependency

Specifies an operation that generates a manifest without dependency elements. The -nodependency option requires the -managedassemblyname option. For example, if managed.dll is a managed assembly, the following command line generates the out.manifest from managed.dll without dependency information.

mt.exe -managedassemblyname:managed.dll -out:out.manifest -nodependency

-category

Specifies an operation that generates a manifest with category tags. The -category option requires the -managedassemblyname option. For example, if managed.dll is a managed assembly, the following command line generates the out.manifest from managed.dll with category tags.

mt.exe -managedassemblyname:managed.dll -out:out.manifest -category

-nologo

Specifies an operation that is run without displaying standard Microsoft copyright data. If mt.exe runs as part of a build process, this option can be used to preventwriting unwanted information into the log files.

-out

Specifies the name of the updated manifest. If this is a single-manifest operation, and the -out option is omitted, the original manifest is modified.

-inputresource

Specifies an operation performed on a manifest obtained from a resource of type RT_MANIFEST. If the -inputresource option is used without specifying the resource identifier, <resource_id>, the operation uses the value CREATEPROCESS_MANIFEST_RESOURCE.

For example, the following command requests an operation that merges a manifest from a DLL, dll_with_manifest.dll, and a manifest file, man2.manifest. The merged manifests are received by a manifest in the resource file of another DLL, dll_with_merged_manifests.

mt.exe -inputresource:dll_with_manifest.dll;#1 -manifest man2.manifest -outputresource:dll_with_merged_manifest.dll;#3

To extract the manifest from a DLL, specify the DLL file name. For example, the following command extracts the manifest from lib1.dll and man3.manifest receives the extracted manifest.

mt.exe -inputresource:lib.dll;#1 -out:man3.manifest

-outputresource

Specifies an operation that generates a manifest to be received by a resource of type RT_MANIFEST. If the -outputresource option is used without specifying the resource identifier, <resource_id>, the operation uses the value CREATEPROCESS_MANIFEST_RESOURCE.

-updateresource

Specifies an operation that is equivalent to using the -inputresource and -outputresource options with identical arguments. For example, the following command requests an operation that computes a hash of the files at the specified path and updates the manifest of a resource of a portable executable (PE).

mt.exe -updateresource:dll_with_manifest.dll;#1 -hashupdate:f:\files.

-hashupdate

Computes the hash value of the files at the specified paths and updates the value of the hash attribute of the <File> element with this value.

For example, the following command requests an operation that merges two manifest files, man1.manifest and man2.manifest, and updates the value of the hash attribute of the <File> element in the manifest that receives the merged information, merged.manifest.

mt.exe -manifest man1.manifest man2.manifest -hashupdate:d:\filerepository -out:merged.manifest

If the paths to the files are not specified, the operation searches location of the manifest specified to receive the update. For example, the following command requests an operation that computes the updated hash value using files found by searching the location of updated.manifest.

mt.exe -manifest yourComponent.manifest -hashupdate -out:updated.manifest

-validate_manifest

Specifies an operation that performs a syntax check of the conformance of the manifest with the manifest schema. For example, the following command requests a check to validate the conformance of man1.manifest with its schema.

mt.exe -manifest man1.manifest -validate_manifest

-validate_file_hashes

Specifies an operation that validates the hash values of the <File> elements of the manifest. For example, the following command requests an operation that validates the hash values of all the <File> elements of the man1.manifest.

mt.exe -manifest man1.manifest -validate_file_hashes:"c;\files"

-canonicalize

Specifies an operation to update the manifest to canonical form. For example, the following command updates man1.manifest to canonical form.

mt.exe -manifest man1.manifest

-check_for_duplicates

Specifies an operation that checks the manifest for duplicate elements. For example, the following command checks man1.manifest for duplicate elements.

mt.exe -man1.manifest -check_for_duplicates

-makecdfs

Generates .cdf files to make catalogs. For example, to the following command requests an operation that updates the hash value and generates a .cdf file.

mt.exe -manifest comp1.manifest -hashupdate -makecdfs -out:updated.manifest

-verboseDisplays verbose debugging information.
-?When run with -?, or with no options and arguments, Mt.exe displays help text.

 

See Also

Side-by-Side Assembly Development Tools

Send comments about this topic to Microsoft

Build date: 6/4/2009

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
More Syntax Info from current mt.exe tool      mlippert   |   Edit   |   Show History
The info here seems to be sadly lacking. Here's the help provided by running the tool today:

Microsoft (R) Manifest Tool version 5.2.3790.2075
Copyright (c) Microsoft Corporation 2005.
All rights reserved.

Usage:
-----
mt.exe
[ -manifest <manifest1 name> <manifest2 name> ... ]
[ -identity:<identity string> ]
[ < <[-rgs:<.rgs filename>] [-tlb:<.tlb filename>]> -dll:<filename> > [ -replacements:<XML filename> ] ]
[ -managedassemblyname:<managed assembly> [ -nodependency ] [ -category ] ]
[ -out:<output manifest name> ]
[ -inputresource:<file>[;[#]<resource_id>] ]
[ -outputresource:<file>[;[#]<resource_id>] ]
[ -updateresource:<file>[;[#]<resource_id>] ]
[ -hashupdate[:<path to the files>] ]
[ -makecdfs ]
[ -validate_manifest ]
[ -validate_file_hashes:<path to the files> ]
[ -canonicalize ]
[ -check_for_duplicates ]
[ -nologo ]

Options:
-------
-manifest Used to specify manifests that need to be processed.
At least one manifest name should follow this option.
NOTE: There is no colon(:) after -manifest.

<manifest1 name> <manifest2 name> ...
Names of manifests to be processed and/or merged.
Required if the -manifest option is used.
NOTE: More than one manifest automatically indicates
a manifest "merge" operation. In that case, an
output specified by one of -out / -outputresource /
-updateresource is mandatory.

-identity:<identity string>
The identity string contains the attributes of the
assemblyIdentity element. The identity string is a
set of comma separated name=value pairs starting
with the "name" attribute's value. e.g.:
"Microsoft.Windows.Common-Controls,
processorArchitecture=x86, version=6.0.0.0,
type=win32, publicKeyToken=6595b64144ccf1df".
NOTE: Only the "name" attribute is not of the form
"name=value" and it should be the first attribute in
the identity string.

-rgs: Takes the name of the .RGS (Registrar script).

-tlb: Takes the name of the .TLB (Typelib file).

-dll: Takes the name of the DLL: this represents the DLL
that is eventually built from the .RGS and .TLB
files. Required if either -rgs or -tlb is specified.

-replacements:<.XML filename>
Specifies the file that contains values for
replaceable strings in the RGS file.

-managedassemblyname:<managed assembly> [ -nodependency ] [ -category ]
Generates a manifest from a managed assembly.
-nodependency suppresses the generation
of dependency elements in the final manifest.
-category causes the category tags to be
generated.

-out:<Output manifest name>
Name of the output manifest. If this is skipped
and only one manifest is being operated upon by the
tool, that manifest is modified in place.

-inputresource:<file>[;[#]<resource_id>]
Input the manifest from a resource of type
RT_MANIFEST with the specified id.
resource_id is restricted to be a non-negative,
16 bit number.
resource_id is optional and defaults to
CREATEPROCESS_MANIFEST_RESOURCE_ID (winuser.h).

-outputresource:<file>[;[#]<resource_id>]
Output the manifest to a resource of type
RT_MANIFEST with the specified id.
resource_id is restricted to be a non-negative,
16 bit number.
resource_id is optional and defaults to
CREATEPROCESS_MANIFEST_RESOURCE_ID (winuser.h).

-updateresource:<file>[;[#]<resource_id>]
Equivalent to specifying both -inputresource and
-ouputresource with identical parameters.
resource_id is restricted to be a non-negative,
16 bit number.

-hashupdate:<path to the files>
Computes the hash of files specified in the file
elements and updates the hash attribute with this
value. The searchpath for the actual files
specified in the file elements is specified
explicitly. If <path to the files> is not
specified, the searchpath defaults to the location
of the output manifest.

-makecdfs Generates Catalog Definition Files (.cdf) - used to
make catalogs.

-validate_manifest Validates to check syntactic correctness of a
manifest and its conformance to the manifest schema.

-validate_file_hashes:<path to the files>
Validates the hash values of all the file elements.

-canonicalize Does a C14N canonicalization of the output manifest
contents.

-check_for_duplicates Performs a check to see if the final manifest
contains duplicate elements.

-nologo Runs without displaying standard Microsoft copyright
data. This may be used to suppress unwanted output
in log files when running mt.exe as part of a build
process or from a build environment.

Samples:
-------

> To update the hash of an XML manifest:
mt.exe -manifest 1.manifest -hashupdate -out:updated.manifest

> To update the hash of an XML manifest while simultaneously producing the .cdf file:
mt.exe -manifest 1.manifest -hashupdate -makecdfs -out:updated.manifest

> To merge two manifests:
mt.exe -manifest 1.manifest 2.manifest -out:merged.manifest

> To merge two manifests and finally update the hash to produce the final merged manifest.
> Note: The searchpath for the actual files specified in the file elements is specified explicitly.
mt.exe -manifest 1.manifest 2.manifest -hashupdate:d:\filerepository -out:merged.manifest

> To generate a manifest from an RGS and/or TLB file:
mt.exe -rgs:MSClus.rgs -tlb:MSClus.tlb -dll:foo.dll -replacements:replacements.manifest -identity:"type=win32, name=Microsoft.Tools.SampleAssembly, version=6.0.0.0, processorArchitecture=x86, publicKeyToken=6595b64144ccf1df" -out:rgstlb.manifest

> To generate an XML manifest from a managed assembly:
mt.exe -managedassemblyname:managed.dll -out:out.manifest
> To suppress dependencies:
mt.exe -managedassemblyname:managed.dll -nodependency -out:out.manifest
> To generate <category> elements:
mt.exe -managedassemblyname:managed.dll -category -out:out.manifest

> To extract manifest out of a dll:
mt.exe -inputresource:dll_with_manifest.dll;#1 -out:extracted.manifest

> To merge two manifests, one of them embedded in a dll, and embedding final merged manifest into another dll's resource:
mt.exe -inputresource:dll_with_manifest.dll;#1 -manifest 2.manifest -outputresource:dll_with_merged_manifest.dll;#3

> To update the manifest in a PE's resource (by updating the hashes of the file elements):
mt.exe -updateresource:dll_with_manifest.dll;#1 -hashupdate:f:\files

> To validate the hash values of all the file elements:
mt.exe -manifest 1.manifest -validate_file_hashes:"c:\files"

> To validate a manifest (i.e., to see if it conforms to the manifest schema):
mt.exe -manifest 1.manifest -validate_manifest

> To do a C14N canonicalization of a manifest (in order to get rid of spurious namespace prefixes (like "dsig")):
mt.exe -manifest 1.manifest -canonicalize

> To check for duplicate elements in a manifest:
mt.exe -manifest 1.manifest -check_for_duplicates
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker