共用方式為


發行者設定

發行者組態檔會全域重新導向相依于一個版本並存元件的應用程式和元件,以使用相同元件的另一個版本。 這可讓應用程式和元件使用更新的元件,而不需要重建所有受影響的應用程式。

發行具有相容錯誤修正或安全性更新的新版本元件時,發行者組態檔可由元件的發行者提供。 更新的版本應該與回溯相容。 除非更新完全回溯相容,否則發行者組態檔不應該用來新增功能。 發行者組態檔不應該用來遞增元件的主要或次要版本。 例如,請勿將元件版本 6.0.0.0 重新導向至 7.0.0.0 或 6.1.0.0。

發行者組態檔只能由元件的發行者發出。 元件開發人員應該簽署共用的並存元件和發行者組態檔。 使用相同的金鑰簽署元件和相關聯的發行者組態檔。 發行者組態檔應該使用與元件所使用的相同工具來簽署,請參閱 元件簽署範例建立簽署的檔案和目錄

一般而言,新版本的元件和相關聯的發行者組態檔將會安裝在 Service Pack 更新中。 因為安裝發行者組態檔會全域重新導向系統上的元件,所以不應該將發行者組態檔提供給應用程式作為可轉散發套件。 如果更新的元件是以可轉散發套件的形式提供,發行者應該提供下列兩者。

  • Windows Installer 套件 (.msi 檔案) ,其中包含具有發行者設定的新版本元件。 這可能會安裝為 Service Pack 或 QFE,因為在此情況下,客戶已選擇全域更新系統。 應用程式不應該安裝此版本的套件。
  • Windows Installer 合併模組 (.msm 檔案) ,僅包含新版本的元件。 此版本可能隨附于應用程式。

要求元件最低版本的應用程式應該將相依性陳述為最低版本,如果系統上無法使用最低版本,應用程式將無法啟動。 如果它可作為可轉散發套件,則它應該包含在應用程式設定中。

例如,安裝下列 發行者組態檔 會將系結從 Microsoft.Windows.SampleAssembly 2.0.0.0 版重新導向至 2.0.1.0 版。 這會在 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_ <hashvalue> 下新增名為 1.1.0.0.Policy 的新原則。

<?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.2.0.Microsoft.Windows.SampleAssembly" version="1.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
      </dependentAssembly>
   </dependency>
</assembly>

為相同的元件安裝下列發行者設定檔,會將系結從 Microsoft.Windows.SampleAssembly 2.0.0 版重新導向至 2.0.3.0 版。 這會在 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_ <hashvalue> 下新增另一個名為 2.1.0.0.Policy 的原則。

<?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.2.0.Microsoft.Windows.SampleAssembly" version="2.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.3.0"/>
      </dependentAssembly>
   </dependency>
</assembly>