パブリッシャーの構成

パブリッシャー構成ファイルは、同じアセンブリの別のバージョンを使用するために、サイド バイ サイド アセンブリの 1 つのバージョンに依存するアプリケーションとアセンブリをグローバルにリダイレクトします。 これにより、アプリケーションとアセンブリは、影響を受けるすべてのアプリケーションを再構築することなく、更新されたアセンブリを使用できます。

互換性のあるバグ修正またはセキュリティ更新プログラムを使用して新しいバージョンのアセンブリを発行するときに、アセンブリの発行元が発行元の構成ファイルを提供できます。 更新されたバージョンは完全に下位互換性がある必要があります。 更新プログラムが完全に下位互換性がある場合を除き、パブリッシャー構成ファイルを使用して新機能を追加しないでください。 アセンブリのメジャー バージョンまたはマイナー バージョンをインクリメントするために、パブリッシャー構成ファイルを使用しないでください。 たとえば、アセンブリ バージョン 6.0.0.0 を 7.0.0.0 または 6.1.0.0 にリダイレクトしないでください。

パブリッシャー構成ファイルは、アセンブリの発行元のみが発行する必要があります。 アセンブリ開発者は、共有サイド バイ サイド アセンブリとパブリッシャー構成ファイルに署名する必要があります。 同じキーを使用して、アセンブリと関連付けられているパブリッシャー構成ファイルに署名します。 パブリッシャー構成ファイルは、アセンブリに使用するのと同じツールを使用して署名する必要があります。「 アセンブリ署名の例 」および「 署名済みファイルとカタログの作成」を参照してください。

通常、アセンブリの新しいバージョンと関連付けられているパブリッシャー構成ファイルは、Service Pack の更新プログラムにインストールされます。 パブリッシャー構成ファイルをインストールすると、システム上のアセンブリがグローバルにリダイレクトされるため、パブリッシャー構成ファイルを再頒布可能パッケージとしてアプリケーションに提供しないでください。 更新するアセンブリが再頒布可能パッケージとして提供されている場合、発行元は次の両方を提供する必要があります。

  • 発行元の構成を含む新しいバージョンのアセンブリを含む Windows インストーラー パッケージ (.msi ファイル)。 これは、サービス パックまたは QFE としてインストールされる可能性があります。この場合、お客様はシステムをグローバルに更新することを選択しているためです。 このバージョンのパッケージは、アプリケーションでインストールしないでください。
  • 新しいバージョンのアセンブリのみを含む Windows インストーラー マージ モジュール (.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.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>