Domanda

Una cosa che mi sono sempre chiesto è come funzionano le patch del software. Molti software sembrano rilasciare solo nuove versioni sui loro binari che devono essere installate su versioni precedenti, ma alcuni software (in particolare i sistemi operativi Windows) sembrano essere in grado di rilasciare patch molto piccole che correggono i bug o aggiungono funzionalità a quelle esistenti software.

La maggior parte delle volte le patch che vedo non possono sostituire intere applicazioni, o anche piccoli file che vengono utilizzati all'interno delle applicazioni. A me sembra che il vero binario sia stato modificato.

Come vengono effettivamente implementati questi tipi di patch? Qualcuno potrebbe indicarmi qualsiasi risorsa che spieghi come funziona o è semplice come sostituire piccoli componenti come librerie collegate in un'applicazione?

Probabilmente non dovrò mai fare una distribuzione in questo modo, ma sono curioso di scoprire come funziona. Se ho capito bene che le patch possono davvero modificare solo porzioni di file binari, è possibile farlo in .NET? Se lo è, mi piacerebbe impararlo dal momento che è il framework con cui ho più familiarità e mi piacerebbe capire come funziona.

È stato utile?

Soluzione

Questo è di solito implementato usando algoritmi diff binari - diff l'ultima versione rilasciata rispetto al nuovo codice. Se l'utente esegue la versione più recente, è sufficiente applicare il diff. Funziona particolarmente bene con il software, perché il codice compilato è generalmente abbastanza simile tra le versioni. Naturalmente, se l'utente non esegue la versione più recente, dovrai comunque scaricare il tutto.


Esistono un paio di implementazioni di algoritmi diff binari generici: bsdiff e xdelta sono buone implementazioni open source. Non riesco a trovare alcuna implementazione per .NET, ma poiché gli algoritmi in questione sono piuttosto indipendenti dalla piattaforma, non dovrebbe essere troppo difficile portarli se ti senti come un progetto.

Altri suggerimenti

Se stai parlando di applicare patch alle applicazioni Windows, i file .MSP sono quelli che vuoi vedere. Questi sono simili a un .MSI ma solo patch e applicazione.

Dai un'occhiata a Patching and Upgradeing nei documenti MSDN.

Ciò che fa un file .MSP è caricare i file aggiornati su un'installazione dell'applicazione. Questo in genere è aggiornato dll e file di risorse, ma potrebbe includere qualsiasi file.

Oltre a correggere l'applicazione installata, vengono aggiornati anche i file di riparazione che si trovano in C: \ WINDOWS \ Installer. Quindi se l'utente seleziona " Ripara " dai programmi Aggiungi / Rimuovi vengono utilizzati anche i file di patch aggiornati.

Sto pensando che il metodo diff binario discusso da John Millikin debba essere usato in altri sistemi operativi. Anche se potresti farlo funzionare in Windows sarebbe un po 'alieno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top