Question

Je me suis toujours demandé comment les correctifs logiciels fonctionnent. De nombreux logiciels semblent ne publier que de nouvelles versions sur leurs fichiers binaires qui doivent être installés sur des versions antérieures, mais certains logiciels (systèmes d'exploitation tels que Windows) semblent être capables de publier de très petits correctifs qui corrigent des bogues ou ajoutent des fonctionnalités aux logiciels existants. logiciel.

La plupart du temps, les correctifs que je vois ne peuvent pas remplacer des applications entières, ni même de petits fichiers utilisés dans les applications. Il me semble que le binaire actuel est en cours de modification.

Comment ces types de correctifs sont-ils réellement mis en œuvre? Quelqu'un pourrait-il m'indiquer des ressources expliquant comment cela fonctionne ou est-ce aussi simple que de remplacer de petits composants tels que des bibliothèques liées dans une application?

Je n'aurai probablement jamais besoin de faire un déploiement de cette manière, mais je suis curieux de savoir comment cela fonctionne. Si je comprends bien que les correctifs ne peuvent réellement modifier que des parties de fichiers binaires, est-ce possible de le faire avec .NET? Si c’est le cas, j’aimerais le savoir car c’est le cadre que je connais le mieux et je voudrais comprendre comment cela fonctionne.

Était-ce utile?

La solution

Ceci est généralement implémenté en utilisant des algorithmes de diff binaires - diff la version la plus récente publiée par rapport au nouveau code. Si l'utilisateur exécute la version la plus récente, il vous suffit d'appliquer le diff. Fonctionne particulièrement bien contre les logiciels, car le code compilé est généralement assez similaire entre les versions. Bien sûr, si l'utilisateur ne lance pas la version la plus récente, vous devrez tout de même télécharger l'intégralité du logiciel.

Il existe plusieurs implémentations d'algorithmes de diff binaires génériques: bsdiff et xdelta sont de bonnes implémentations open source. Je ne trouve aucune implémentation pour .NET, mais comme les algorithmes en question sont assez agnostiques pour les plates-formes, il ne devrait pas être trop difficile de les porter si vous vous sentez comme un projet.

Autres conseils

Si vous parlez de correctifs pour les applications Windows, vous souhaitez examiner les fichiers .MSP. Celles-ci ressemblent à un .MSI mais ne font que patcher et appliquer.

Consultez Correction et mise à niveau dans les documents MSDN.

Un fichier .MSP charge des fichiers mis à jour lors de l'installation de l'application. Il s’agit généralement de fichiers DLL et de ressources mis à jour, mais ils peuvent inclure n’importe quel fichier.

Outre la mise à jour de l'application installée, les fichiers de réparation situés dans C: \ WINDOWS \ Installer sont également mis à jour. Ensuite, si l'utilisateur sélectionne " Réparer " depuis Ajout / Suppression de programmes, les fichiers de correctif mis à jour sont également utilisés.

Je pense que la méthode des différences binaires évoquée par John Millikin doit être utilisée dans d'autres systèmes d'exploitation. Bien que vous puissiez le faire fonctionner dans Windows, ce serait un peu étrange.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top