Kamis, 14 November 2013

Bongkar Aplikasi -- Update Reference | (Add Publisher Policy)


Kalau sebuah aplikasi sudah diinstal dan ternyata ditemukan bugs pada component shared assembly yang di reference atau mungkin akan menambahkan fungsionalitas baru terhadap assembly tersebut apa yang harus dilakukan untuk mengupdate reference tsb? Bongkar aplikasi --> update reference --> Build --> Uninstall aplikasi lama --> Deploy aplikasi baru?? Cara tersebut tidak efektif...Thanks to Publisher Policy which can resolve the problem...
Publisher Policy  (PP) tidak lain dan tidak bukan ialah merupakan sebuah XML file just like app.config yang di compile kedalam sebuah assembly dan disimpan di Global Assembly Cache. PP ini berisi informasi yang diberikan kepada CLR untuk redirect assembly version yang digunakan pada aplikasi yang sudah diinstal ke another assembly version di Global Assembly Cache (GAC). Misalnya aplikasi A mereference ke sebuah assembly A version 1.0.0.0 kemudian tanpa harus bongkar aplikasinya maka kita bisa redirect ke assembly A version 1.1.0.0.

Proses redirectnya melalui tahap-tahap sbb :

Cek Application Policy (app.config) --> Cek Publisher Policy --> Cek Administrator Policy (machine.config) --> Final binding result


1. CLR akan cek terlebih dahulu policy yang terdapat di dalam app.config. Didalam app.config ini kita bisa tambahkan path assembly version terntentu yang akan digunakan oleh CLR untuk mencari assembly yang di reference.

2. Kalau didalam PP terdapat perintah redirect ke assembly version tertentu maka setiting yang terdapat di app.config akan di override. Akan tetapi kalau kita tidak menginginkan app.config di override kita tinggal set <publisherPolicy apply="no" /> di app.config.

3. Kedua setting di atas tidak akan bekerja kalau didalam machine.config terdapat perintah untuk redirect ke assembly version tertentu. So this is the final binding result...
Berikut langkah pembuatan Publisher Policy nya :
 
1. Tambahkan aplikasi (.exe) yang akan diconfigure lewat .NET Framework Configuration Tool.

2. Klik kanan node Configured Assemblies --> Add --> Check radio button "an assembly from the list of assemblies this application uses" --> Klik button "Choose Assembly" --> Finish...



3. Pilih tab Binding Policy --> ketikkan version yang lama di textbox Requested Version --> input versi baru di textbox New version
4. Check app.config file di direktori applikasi tersebut, maka hasilnya akan seperti ini :

 
<?xml version="1.0"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="NwindProd10" 
                      publicKeyToken="93d92436c407b8e6" />
                <publisherPolicy apply="yes" />
                <bindingRedirect oldVersion="1.0.0.0" 
                     newVersion="1.1.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

5. Untuk membuat Publisher Policy yang akan di deploy ke GAC harus mengikuti format :

policy.majorVersion.minorVersion.AssemblyName.dll 

majorVersion merupakan major number assembly version yang akan di redirect.
minorVersion merupakan minor number assembly version yang akan di redirect.
AssemblyName merupakan nama assembly yang akan diredirect.


6. Buat file policy.1.0.YourAssemblyName.config (misal major Numbernya 1, minor numbernya 0) di folder dimana assembly versi tersebut berada dengan isi yang sama dengan app.config yang ada di langkah 4.

7. Untuk generate assembly dari file .config tsb gunakan al.exe (Assembly Linker) dari .net sdk command prompt :

al /link:policy.1.0.YourAssemblyName.config/out:policy.1.0. YourAssemblyName.dll/keyfile:..\..\YourKeyFile.snk  

parameter out merupakan nama file assembly yang akan kita simpan nantinya di GAC dengan asumsi key filenya sudah punya yang di generate lewat sn.exe...

8. Now the final step is only add the assembly we created from the former step to the GAC. You can use by gacutil.exe or .net framework configuration tool...Run the application...you can see that CLR redirect the assembly to the version from the application being referenced to the version you want...  

  

Related Posts

Bongkar Aplikasi -- Update Reference | (Add Publisher Policy)
4/ 5
Oleh

Subscribe via email

Like the post above? Please subscribe to the latest posts directly via email.