Compartilhar via


Mt.exe

O arquivo Mt.exe é uma ferramenta que gera arquivos e catálogos assinados. Ele está disponível no SDK (Microsoft Windows Software Development Kit). Mt.exe requer que o arquivo referenciado no manifesto esteja presente no mesmo diretório que o manifesto.

Mt.exe gera hashes usando a implementação de CryptoAPI do Algoritmo de Hash Seguro (SHA-1). Para obter mais informações sobre algoritmos de hash, consulte Algoritmos de hash e assinatura. Hashes são inseridos como uma cadeia de caracteres hexadecimal nas marcas de arquivo no manifesto. Atualmente, a ferramenta gera apenas hashes SHA-1, embora os arquivos em manifestos possam usar outros esquemas de hash.

Mt.exe usa Makecat.exe para gerar arquivos de catálogo (.cat) de arquivos de definição de catálogo (.cdf). Essa ferramenta preenche um CDF de modelo padrão com o nome e o local do manifesto. Você pode usá-lo com Makecat.exe para gerar o catálogo de assembly.

A versão do Mt.exe fornecida em versões recentes do SDK do Windows também pode ser usada para gerar manifestos para assemblies gerenciados e assemblies lado a lado não gerenciados.

Sintaxe

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]

Opções de linha de comando

Mt.exe usa as seguintes opções de linha de comando que não diferenciam maiúsculas de minúsculas.

Opção Descrição
-Manifesto

Especifica o nome do arquivo de manifesto. Para modificar um único manifesto, especifique um nome de arquivo de manifesto. Por exemplo, component.manifest.

Para mesclar vários manifestos, especifique os nomes dos manifestos de origem aqui. Especifique o nome do manifesto atualizado com as opções -out, -outputresource ou -updateresource . Por exemplo, a linha de comando a seguir solicita uma operação que mescla dois manifestos, man1.manifest e man2.manifest, em um novo manifesto, man3.manifest.

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

Sem dois-pontos (:) é necessário com a opção -manifest .

-Identidade

Fornece os valores de atributos do elemento assemblyIdentity do manifesto. O argumento da opção -identity é um valor de cadeia de caracteres que contém os valores de atributo em campos separados por vírgulas. Forneça o valor do atributo name no primeiro campo, sem incluir uma subcadeia de caracteres "name=". Todos os campos restantes especificam os atributos e seus valores usando o formulário: <attribute name>=<attribute_value>.

Por exemplo, para atualizar o elemento assemblyIdentity do manifesto com as seguintes informações:

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

inclua a seguinte opção -identity na linha de comando:

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

-Rgs

Especifica o nome do arquivo de script de registro (.rgs). A opção -dll é necessária para usar a opção -rgs .

-Tlb

Especifica o nome do arquivo de biblioteca de tipos (.tlb). A opção -dll é necessária para usar a opção -tlb .

-Dll

Especifica o nome do arquivo DLL (biblioteca de vínculo dinâmico). A opção -dll será exigida por mt.exe se as opções -rgs ou -tlb forem usadas. Especifique o nome da DLL que você pretende criar com base nos arquivos .rgs ou .tlb.

Por exemplo, o comando a seguir solicita uma operação que gera um manifesto de arquivos .rgs e .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

-Substituições

Especifica o arquivo que contém valores para a cadeia de caracteres substituível no arquivo .rgs.

-managedassemblyname

Gera um manifesto do assembly gerenciado especificado. Use com a opção -nodependency para gerar um manifesto sem elementos de dependência. Use com a opção -category para gerar um manifesto com marcas de categoria. Por exemplo, se managed.dll for um assembly gerenciado, a linha de comando a seguir gerará o out.manifest de managed.dll.

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

-nodependency

Especifica uma operação que gera um manifesto sem elementos de dependência. A opção -nodependency requer a opção -managedassemblyname . Por exemplo, se managed.dll for um assembly gerenciado, a linha de comando a seguir gerará out.manifest de managed.dll sem informações de dependência.

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

-Categoria

Especifica uma operação que gera um manifesto com marcas de categoria. A opção -category requer a opção -managedassemblyname . Por exemplo, se managed.dll for um assembly gerenciado, a linha de comando a seguir gerará out.manifest de managed.dll com marcas de categoria.

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

-nologo

Especifica uma operação que é executada sem exibir dados padrão de direitos autorais da Microsoft. Se mt.exe for executado como parte de um processo de build, essa opção poderá ser usada para impedir a gravação de informações indesejadas nos arquivos de log.

-out

Especifica o nome do manifesto atualizado. Se essa for uma operação de manifesto único e a opção -out for omitida, o manifesto original será modificado.

-inputresource

Especifica uma operação executada em um manifesto obtido de um recurso do tipo RT_MANIFEST. Se a opção -inputresource for usada sem especificar o identificador de recurso, <resource_id>, a operação usará o valor CREATEPROCESS_MANIFEST_RESOURCE.

Por exemplo, o comando a seguir solicita uma operação que mescla um manifesto de uma DLL, dll_with_manifest.dll e um arquivo de manifesto, man2.manifest. Os manifestos mesclados são recebidos por um manifesto no arquivo de recurso de outra DLL, dll_with_merged_manifests.

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

Para extrair o manifesto de uma DLL, especifique o nome do arquivo DLL. Por exemplo, o comando a seguir extrai o manifesto de lib1.dll e man3.manifest recebe o manifesto extraído.

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

-outputresource

Especifica uma operação que gera um manifesto a ser recebido por um recurso do tipo RT_MANIFEST. Se a opção -outputresource for usada sem especificar o identificador de recurso, <resource_id>, a operação usará o valor CREATEPROCESS_MANIFEST_RESOURCE.

-updateresource

Especifica uma operação equivalente ao uso das opções -inputresource e -outputresource com argumentos idênticos. Por exemplo, o comando a seguir solicita uma operação que calcula um hash dos arquivos no caminho especificado e atualiza o manifesto de um recurso de um PE (executável portátil).

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

-hashupdate

Calcula o valor de hash dos arquivos nos caminhos especificados e atualiza o valor do atributo hash do elemento File com esse valor.

Por exemplo, o comando a seguir solicita uma operação que mescla dois arquivos de manifesto, man1.manifest e man2.manifest e atualiza o valor do atributo hash do elemento File no manifesto que recebe as informações mescladas, merged.manifest.

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

Se os caminhos para os arquivos não forem especificados, a operação pesquisará o local do manifesto especificado para receber a atualização. Por exemplo, o comando a seguir solicita uma operação que computa o valor de hash atualizado usando arquivos encontrados pesquisando o local de updated.manifest.

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

-validate_manifest

Especifica uma operação que executa uma sintaxe marcar da conformidade do manifesto com o esquema de manifesto. Por exemplo, o comando a seguir solicita um marcar para validar a conformidade do man1.manifest com seu esquema.

mt.exe -manifest man1.manifest -validate_manifest

-validate_file_hashes

Especifica uma operação que valida os valores de hash dos elementos File do manifesto. Por exemplo, o comando a seguir solicita uma operação que valida os valores de hash de todos os elementos File do man1.manifest.

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

-Canoniza

Especifica uma operação para atualizar o manifesto para o formulário canônico. Por exemplo, o comando a seguir atualiza man1.manifest para forma canônica.

mt.exe -manifest man1.manifest

-check_for_duplicates

Especifica uma operação que verifica o manifesto em busca de elementos duplicados. Por exemplo, o comando a seguir verifica man1.manifest em busca de elementos duplicados.

mt.exe -man1.manifest -check_for_duplicates

-makecdfs

Gera arquivos .cdf para criar catálogos. Por exemplo, para o comando a seguir solicita uma operação que atualiza o valor de hash e gera um arquivo .cdf.

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

-verbose Exibe informações detalhadas de depuração.
-? Quando executado com -?, ou sem opções e argumentos, Mt.exe exibe texto de ajuda.

Ferramentas de desenvolvimento de assembly lado a lado