發行者組態檔
發行者組態檔是 XML 檔案,會全域將應用程式和元件從使用一個並存元件的版本重新導向至相同元件的另一個版本。 一般而言,元件的發行者會發行要隨 Service Pack 更新一起安裝的發行者組態檔,以根據每個元件發行相容的更新或安全性修正程式。 這稱為 發行者組態。 如需這種類型的 組態的詳細資訊, 請參閱發行者設定。
發行者組態檔具有下列元素和屬性。 如需 XML 架構的完整清單,請參閱 發行者組態檔架構。
元素 | 屬性 | 必填 |
---|---|---|
元件 | 是的 | |
manifestVersion | 是的 | |
assemblyIdentity | 是的 | |
類型 | 是的 | |
名稱 | 是的 | |
語言 | 不 | |
processorArchitecture | 不 | |
版本 | 是的 | |
publicKeyToken | 不 | |
相依性 | 不 | |
dependentAssembly | 不 | |
bindingRedirect | 是的 | |
oldVersion | 是的 | |
newVersion | 是的 |
檔案位置
發行者組態檔必須安裝在 WinSxS 資料夾中。 它們通常會安裝為個別檔案,但發行者組態檔也可以包含在 DLL 中作為資源。 發行者配置檔不能當做 EXE 檔案中的資源包含在內。 EXE 檔案可能包含 應用程式指令清單 作為資源。
檔名語法
發行者組態檔的檔名具有 原則格式。主要。次要。元件名稱,其中 主要 和 次要 是指受影響的 元件 版本的主要和次要部分。 assemblyname 是指元件的名稱。
例如,Microsoft.Windows 6.0 版的發行者組態檔。Common-Controls 元件的名稱如下:
- policy.6.0.Microsoft.Windows.Common-Controls
請勿使用原則組態檔來遞增元件的主要或次要版本。 例如,請勿將 6.0.0.0 版重新導向至 7.0.0.0 或 6.1.0.0 版。 當應用程式參考元件版本時,例如 6.0.0.0,並排檢查是否有任何具有指定主要和次要版本的原則組態檔,例如 6.0。 然後,應用程式會重新導向至另一個版本的元件,例如 6.0.1.0。 如果發行者組態檔遞增元件的主要或次要版本,則元件的後續重新導向可能需要發出多個原則組態檔。
元素
-
元件
-
容器專案。 其第一個子元素必須是 assemblyIdentity。 必填。
元件元素必須位於 urn:schemas-microsoft-com:asm.v1 命名空間中。 元件的子項目也必須在此命名空間中,藉由繼承或標記。
元件 元素具有下列屬性。
屬性 描述 manifestVersion manifestVersion 屬性必須設定為 1.0。 -
assemblyIdentity
-
描述並唯一識別並存元件。
元件 專案的第一個子元素,assemblyIdentity 描述已變更其元件相依性的並存元件。 發行者組態檔會重新導向識別之元件的相依性。 例如,下列 assemblyIdentity 表示發行者組態檔會影響 x86 Microsoft.Windows.Pop 6.0.0.0 元件的相依性。
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.6.0.Microsoft.Windows.Pop" version="2.1.0.0" processorArchitecture="x86"/>
dependentAssembly 元素的第一個子元素,assemblyIdentity 描述並存元件相依性。 發行者組態檔會重新設定此必要並存元件的身分識別。 變更是在 bindingRedirect中指定。 例如,下列 assemblyIdentity 將 Microsoft.Windows.SampleAssembly 2.0.0.0 版的任何相依性變更為 Microsoft.Windows.SampleAssembly 2.0.1.0 版的相依性。
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" processorArchitecture="x86" publicKeyToken="0000000000000000"/> <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/> </dependentAssembly> </dependency>
assemblyIdentity 元素具有下列屬性。 它沒有子元素。
屬性 描述 類型 指定元件類型。 必填。 在受影響的元件 assemblyIdentity 中,類型 屬性的值必須設定為 win32-policy。 win32-policy 值必須全部以小寫字母為單位。
在變更元件相依性的 assemblyIdentity 中,類型 屬性的值必須設定為 win32。 win32 值必須全部以小寫字母為單位。名稱 唯一命名元件。 必填。 在受影響的元件 assemblyIdentity 中,name 的格式 原則。主要。次要。元件名稱,其中 主要 和 次要 是指 元件版本的主要和次要部分。
在變更元件相依性的 assemblyIdentity 中,name 具有窗體 Organization.Division.Name。 例如,Microsoft.Windows.MysampleApp。語言 識別元件的語言。 自選。 在 assemblyIdentity 中,如果元件為特定語言,請指定 DHTML 語言程序代碼。 如果元件是供全球使用(語言中性),請省略此屬性。
在變更元件相依性的 assemblyIdentity 中,如果元件是特定語言,請指定 DHTML 語言程序代碼。 如果元件是供全球使用(語言中性),請將值設定為 “*”。processorArchitecture 指定執行應用程式的處理器。 版本 指定元件版本。 使用四部分版本語法:mmmm.nnnn.oooo.pppp 只有在 DEF-context assemblyIdentity中才需要 。 請勿在 REF 內容 assemblyIdentity中指定版本屬性。 publicKeyToken 16 個字元的十六進位字串,表示元件簽署所在公鑰 SHA-1 哈希的最後 8 個字節。 用來簽署目錄的公鑰必須是 2048 位或更高。 所有共享元件都需要 publicKeyToken。 用於發行者組態檔的 publicKeyToken 應該是用於已簽署元件的相同密鑰。 發行者元件可以使用與元件搭配使用的相同工具來簽署,請參閱 元件簽署範例 和 建立已簽署的檔案和目錄。 -
相依性
-
至少一個 dependentAssembly的選擇性容器專案。 它沒有屬性。
-
dependentAssembly
-
每個 dependentAssembly 都必須位於一個 相依性內。 dependentAssembly 沒有屬性。 dependentAssembly 的第一個子元素必須是發行者設定所重新設定之並存元件的 assemblyIdentity。
-
bindingRedirect
-
bindingRedirect 專案包含元件的系結重新導向資訊。
此元素具有下表所示的屬性。
屬性 描述 oldVersion 指定要覆寫和重新導向的元件版本。 使用四部分版本語法 nnnnn.nnnnn.nnnnn.nnnnn。 以沒有空格的破折號指定版本範圍。 例如,2.14.3.0 或 2.14.3.0 2.16.0.0。 必填。 newVersion 指定取代元件版本。 使用四部分版本語法 nnnnn.nnnnn.nnnnn.nnnnn。
言論
發行者組態檔未指定檔案。 請注意,語言特定的原則檔案與發行者組態檔不同。
例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.6.0.Proseware.Research.SampleAssembly" version="1.0.1.0" language="en-us" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" publicKeyToken="0000000000000000" name="Proseware.Research.SampleAssembly" language="en-us" processorArchitecture="x86"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.1.0"/>
</dependentAssembly>
</dependency>
</assembly>