發行者組態檔
發行者組態檔是 XML 檔案,可將應用程式和元件從使用一個並存元件版本重新導向至相同元件的另一個版本。 一般而言,元件的發行者會發出每個元件的相容更新或安全性修正程式,方法是發出要隨 Service Pack 更新一起安裝的發行者組態檔。 這稱為 發行者設定。 如需此組 態 類型的詳細資訊,請參閱發行者組態。
發行者組態檔具有下列元素和屬性。 如需 XML 架構的完整清單,請參閱 發行者設定檔架構。
項目 | 屬性 | 必要 |
---|---|---|
裝配 | 是 | |
manifestVersion | 是 | |
assemblyIdentity | 是 | |
type | 是 | |
name | Yes | |
language | 否 | |
processorArchitecture | 否 | |
version | 是 | |
publicKeyToken | 否 | |
依賴 | 否 | |
dependentAssembly | 否 | |
bindingRedirect | 是 | |
oldVersion | 是 | |
newVersion | 是 |
檔案位置
發行者組態檔必須安裝在 WinSxS 資料夾中。 它們通常會安裝為個別檔案,但發行者組態檔也可以包含在 DLL 中作為資源。 發行者組態檔不能包含在 EXE 檔案中作為資源。 EXE 檔案可能包含 應用程式資訊清單 作為資源。
檔名語法
發行者組態檔的檔案名具有表單 原則。主要。次要。元件名稱 ,其中 major 和 minor 是指受影響 元件版本 的主要和次要部分。 assemblyname是指元件的名稱。
例如,Microsoft.Windows.Common-Controls 元件 6.0 版的發行者組態檔會有下列名稱:
- 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"/>
assemblyIdentity是dependentAssembly元素的第一個子項目,描述並存元件相依性。 發行者組態檔會重新設定此必要並存元件的身分識別。 變更是在 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元素具有下列屬性。 它沒有子項目。
屬性 描述 type 指定元件類型。 必要。 在受影響元件的 assemblyIdentity 中, 類型 屬性的值必須設定為 win32-policy。 win32-policy 值必須全部以小寫字母表示。
在變更元件相依性的 assemblyIdentity 中, 類型 屬性的值必須設定為 win32。 win32 值必須全部以小寫字母表示。name 唯一命名元件。 必要。 在受影響元件的 assemblyIdentity 中,name 具有表單 原則。主要。次要。元件名稱 ,其中 major 和 minor 是指 元件版本的主要和次要部分。
在變更元件相依性的 assemblyIdentity 中,name 的格式為 Organization.Division.Name。 例如,Microsoft.Windows.MysampleApp。language 識別元件的語言。 選擇性。 在受影響元件的 assemblyIdentity 中,如果元件是語言特定的,請指定 DHTML 語言程式碼。 如果元件適用于全球使用 (語言中性) ,請省略此屬性。
在變更元件相依性的 assemblyIdentity 中,如果元件是特定語言的,請指定 DHTML 語言程式碼。 如果元件適用于全球使用 (語言中性) 請將值設定為 「*」。processorArchitecture 指定執行應用程式的處理器。 version 指定組件版本。 使用四部分版本語法:mmmm.nnnn.oooo.pppp 只有在 DEF-coNtext assemblyIdentity中才需要。 請勿在 REF 內容 assemblyIdentity中指定 version 屬性。 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>