Bagikan melalui


Konfigurasi Penerbit

File konfigurasi penerbit secara global mengalihkan aplikasi dan rakitan yang memiliki ketergantungan pada satu versi perakitan berdampingan untuk menggunakan versi lain dari rakitan yang sama. Ini memungkinkan aplikasi dan rakitan untuk menggunakan rakitan yang diperbarui tanpa harus membangun kembali semua aplikasi yang terpengaruh.

File konfigurasi penerbit dapat disediakan oleh penerbit rakitan saat mengeluarkan versi baru rakitan dengan perbaikan bug atau pembaruan keamanan yang kompatibel. Versi yang diperbarui harus kompatibel sepenuhnya ke belakang. File konfigurasi penerbit tidak boleh digunakan untuk menambahkan fitur baru kecuali pembaruan kompatibel sepenuhnya mundur. File konfigurasi penerbit tidak boleh digunakan untuk menaikkan versi utama atau minor dari rakitan. Misalnya, jangan alihkan rakitan versi 6.0.0.0 ke 7.0.0.0 atau ke 6.1.0.0.

File konfigurasi penerbit hanya boleh dikeluarkan oleh penerbit rakitan. Pengembang rakitan harus menandatangani rakitan bersama berdampingan dan file konfigurasi penerbit. Gunakan kunci yang sama untuk menandatangani rakitan dan file konfigurasi penerbit terkait. File konfigurasi penerbit harus ditandatangani menggunakan alat yang sama seperti yang digunakan untuk rakitan, lihat Contoh Penandatanganan Rakitan dan Membuat File dan Katalog yang Ditandatangani.

Biasanya, versi baru rakitan dan file konfigurasi penerbit terkait akan diinstal dalam pembaruan paket layanan. File konfigurasi penerbit tidak boleh disediakan dengan aplikasi sebagai yang dapat didistribusikan ulang karena menginstal file konfigurasi penerbit secara global mengalihkan rakitan pada sistem. Jika perakitan yang diperbarui disediakan sebagai dapat didistribusikan ulang, penerbit harus menyediakan kedua hal berikut ini.

  • Paket Penginstal Windows (file .msi) yang menyertakan versi baru perakitan dengan konfigurasi penerbit. Ini dapat diinstal sebagai paket layanan atau QFE karena dalam hal ini pelanggan telah memilih untuk memperbarui sistem secara global. Versi paket ini tidak boleh diinstal oleh aplikasi.
  • Modul penggabungan Pemasang Windows (file .msm) yang hanya menyertakan versi baru rakitan. Versi ini dapat disertakan dengan aplikasi.

Aplikasi yang memerlukan versi minimum assembly harus menyatakan dependensinya pada versi minimum, jika versi minimum tidak tersedia pada sistem maka aplikasi akan gagal dimulai. Jika tersedia sebagai dapat didistribusikan ulang maka harus disertakan dalam pengaturan aplikasi.

Misalnya, menginstal file konfigurasi penerbit berikut mengalihkan pengikatan dari versi 2.0.0.0 dari Microsoft.Windows.SampleAssembly ke versi 2.0.1.0. Ini menambahkan kebijakan baru, bernama 1.1.0.0.Policy, di bawah %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.

<?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>

Menginstal file konfigurasi penerbit berikut untuk pengikatan pengalihan rakitan yang sama dari versi 2.0.0.0 dari Microsoft.Windows.SampleAssembly ke versi 2.0.3.0. Ini menambahkan kebijakan lain, bernama 2.1.0.0.Policy, di bawah %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue>.

<?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>