Share via


Mt.exe

El archivo Mt.exe es una herramienta que genera archivos y catálogos firmados. Está disponible en el Kit de desarrollo de software (SDK) de Microsoft Windows. Mt.exe requiere que el archivo al que se hace referencia en el manifiesto esté presente en el mismo directorio que el manifiesto.

Mt.exe genera hashes mediante la implementación cryptoAPI del algoritmo hash seguro (SHA-1). Para obtener más información sobre los algoritmos hash, consulte Algoritmos hash y de firma. Los hashes se insertan como una cadena hexadecimal en las etiquetas de archivo del manifiesto. Actualmente, la herramienta solo genera hash SHA-1, aunque los archivos de los manifiestos pueden usar otros esquemas hash.

Mt.exe usa Makecat.exe para generar archivos de catálogo (.cat) a partir de archivos de definición de catálogo (.cdf). Esta herramienta rellena una CDF de plantilla estándar con el nombre y la ubicación del manifiesto. Puede usarlo con Makecat.exe para generar el catálogo de ensamblados.

La versión de Mt.exe proporcionada en versiones recientes de Windows SDK también se puede usar para generar manifiestos para ensamblados administrados y ensamblados en paralelo no administrados.

Sintaxis

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]

Opciones de la línea de comandos

Mt.exe usa las siguientes opciones de línea de comandos que no distinguen mayúsculas de minúsculas.

Opción Descripción
-Manifiesto

Especifica el nombre del archivo de manifiesto. Para modificar un único manifiesto, especifique un nombre de archivo de manifiesto. Por ejemplo, component.manifest.

Para combinar varios manifiestos, especifique los nombres de los manifiestos de origen aquí. Especifique el nombre del manifiesto actualizado con las opciones -out, -outputresource o -updateresource. Por ejemplo, la siguiente línea de comandos solicita una operación que combina dos manifiestos, man1.manifest y man2.manifest, en un nuevo manifiesto, man3.manifest.

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

Sin dos puntos (:) se requiere con la opción -manifest .

-Identidad

Proporciona los valores de atributos del elemento assemblyIdentity del manifiesto. El argumento de la opción -identity es un valor de cadena que contiene los valores de atributo en campos separados por comas. Proporcione el valor del atributo name en el primer campo, sin incluir una subcadena "name=". Todos los campos restantes especifican los atributos y sus valores mediante el formulario: <attribute name>=<attribute_value>.

Por ejemplo, para actualizar el elemento assemblyIdentity del manifiesto con la siguiente información:

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

incluya la siguiente opción -identity en la línea de comandos:

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

-Rgs

Especifica el nombre del archivo de script de registro (.rgs). La opción -dll es necesaria para usar la opción -rgs .

-Tlb

Especifica el nombre del archivo de biblioteca de tipos (.tlb). La opción -dll es necesaria para usar la opción -tlb .

-Dll

Especifica el nombre del archivo de biblioteca de vínculos dinámicos (DLL). La opción -dll es necesaria pormt.exe si se usan las opciones -rgs o -tlb . Especifique el nombre del archivo DLL que pretende compilar finalmente a partir de los archivos .rgs o .tlb.

Por ejemplo, el siguiente comando solicita una operación que genera un manifiesto a partir de archivos .rgs y .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

-Reemplazos

Especifica el archivo que contiene valores para la cadena reemplazable en el archivo .rgs.

-managedassemblyname

Genera un manifiesto del ensamblado administrado especificado. Use con la opción -nodependency para generar un manifiesto sin elementos de dependencia. Use con la opción -category para generar un manifiesto con etiquetas de categoría. Por ejemplo, si managed.dll es un ensamblado administrado, la siguiente línea de comandos genera el out.manifest desde managed.dll.

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

-nodependency

Especifica una operación que genera un manifiesto sin elementos de dependencia. La opción -nodependency requiere la opción -managedassemblyname . Por ejemplo, si managed.dll es un ensamblado administrado, la siguiente línea de comandos genera el out.manifest desde managed.dll sin información de dependencia.

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

-Categoría

Especifica una operación que genera un manifiesto con etiquetas de categoría. La opción -category requiere la opción -managedassemblyname . Por ejemplo, si managed.dll es un ensamblado administrado, la siguiente línea de comandos genera el out.manifest desde managed.dll con etiquetas de categoría.

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

-nologo

Especifica una operación que se ejecuta sin mostrar los datos estándar de derechos de autor de Microsoft. Si mt.exe se ejecuta como parte de un proceso de compilación, esta opción se puede usar para evitar escribir información no deseada en los archivos de registro.

-out

Especifica el nombre del manifiesto actualizado. Si se trata de una operación de manifiesto único y se omite la opción -out , se modifica el manifiesto original.

-inputresource

Especifica una operación realizada en un manifiesto obtenido de un recurso de tipo RT_MANIFEST. Si se usa la opción -inputresource sin especificar el identificador de recursos, <resource_id>, la operación usa el valor CREATEPROCESS_MANIFEST_RESOURCE.

Por ejemplo, el comando siguiente solicita una operación que combina un manifiesto de un archivo DLL, dll_with_manifest.dll y un archivo de manifiesto, man2.manifest. Un manifiesto recibe los manifiestos combinados en el archivo de recursos de otro archivo DLL, dll_with_merged_manifests.

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

Para extraer el manifiesto de un archivo DLL, especifique el nombre del archivo DLL. Por ejemplo, el siguiente comando extrae el manifiesto de lib1.dll y man3.manifest recibe el manifiesto extraído.

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

-outputresource

Especifica una operación que genera un manifiesto que va a recibir un recurso de tipo RT_MANIFEST. Si se usa la opción -outputresource sin especificar el identificador de recursos, <resource_id>, la operación usa el valor CREATEPROCESS_MANIFEST_RESOURCE.

-updateresource

Especifica una operación que equivale a usar las opciones -inputresource y -outputresource con argumentos idénticos. Por ejemplo, el siguiente comando solicita una operación que calcula un hash de los archivos en la ruta de acceso especificada y actualiza el manifiesto de un recurso de un ejecutable portátil (PE).

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

-hashupdate

Calcula el valor hash de los archivos en las rutas de acceso especificadas y actualiza el valor del atributo hash del elemento File con este valor.

Por ejemplo, el siguiente comando solicita una operación que combina dos archivos de manifiesto, man1.manifest y man2.manifest, y actualiza el valor del atributo hash del elemento File en el manifiesto que recibe la información combinada, merged.manifest.

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

Si no se especifican las rutas de acceso a los archivos, la operación busca en la ubicación del manifiesto especificado para recibir la actualización. Por ejemplo, el siguiente comando solicita una operación que calcula el valor hash actualizado mediante archivos encontrados mediante la búsqueda de la ubicación de updated.manifest.

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

-validate_manifest

Especifica una operación que realiza una comprobación de sintaxis de la conformidad del manifiesto con el esquema del manifiesto. Por ejemplo, el siguiente comando solicita una comprobación para validar la conformidad de man1.manifest con su esquema.

mt.exe -manifest man1.manifest -validate_manifest

-validate_file_hashes

Especifica una operación que valida los valores hash de los elementos File del manifiesto. Por ejemplo, el comando siguiente solicita una operación que valida los valores hash de todos los elementos File del man1.manifest.

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

-canonicalize

Especifica una operación para actualizar el manifiesto al formulario canónico. Por ejemplo, el siguiente comando actualiza man1.manifest a forma canónica.

mt.exe -manifest man1.manifest

-check_for_duplicates

Especifica una operación que comprueba el manifiesto de los elementos duplicados. Por ejemplo, el siguiente comando comprueba man1.manifest para los elementos duplicados.

mt.exe -man1.manifest -check_for_duplicates

-makecdfs

Genera archivos .cdf para crear catálogos. Por ejemplo, en el comando siguiente se solicita una operación que actualiza el valor hash y genera un archivo .cdf.

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

-verbose Muestra información detallada de depuración.
-? Cuando se ejecuta con -?, o sin opciones y argumentos, Mt.exe muestra texto de ayuda.

Herramientas de desarrollo de ensamblados en paralelo