共用方式為


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 版本也可以用來產生 Managed 元件和 Unmanaged 並存元件的指令清單。

語法

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) 檔案的名稱。 必須使用 -dll 選項,才能使用 -rgs 選項。

-tlb

指定類型連結庫 (.tlb) 檔案的名稱。 必須使用 -dll 選項,才能使用 -tlb 選項。

-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

從指定的Managed元件產生指令清單。 與 -nodependency 選項搭配使用,以產生沒有相依性元素的指令清單。 搭配使用 -category 選項來產生具有類別標籤的指令清單。 例如,如果 managed.dll 是Managed元件,下列命令行會從 managed.dll產生 out.manifest。

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

-nodependency

指定產生不含相依性元素之指令清單的作業。 -nodependency 選項需要 -managedassemblyname 選項。 例如,如果 managed.dll 是Managed元件,下列命令行會從沒有相依性資訊的 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 會顯示說明文字。

並存元件開發工具