2008-09-28 6 views
9

Une chose dont je me suis toujours demandé est de savoir comment fonctionnent les correctifs logiciels. Beaucoup de logiciels semblent juste publier de nouvelles versions sur leurs binaires qui doivent être installés sur des versions plus anciennes, mais certains logiciels (systèmes d'exploitation comme Windows en particulier) semblent être capables de libérer de très petits correctifs qui corrigent des bugs ou ajoutent des fonctionnalités Logiciel.Comment les petits correctifs logiciels corrigent-ils les gros logiciels?

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

Comment ces types de correctifs sont-ils implémentés? Quelqu'un pourrait-il me signaler des ressources qui expliquent 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 vraiment modifier que des parties de fichiers binaires, est-ce possible de le faire dans .NET? Si c'est le cas, j'aimerais l'apprendre puisque c'est le cadre que je connais le mieux et que j'aimerais comprendre comment cela fonctionne.

Répondre

14

Ceci est généralement mis en œuvre en utilisant des algorithmes de diff binaires - diff la version la plus récemment publiée par rapport au nouveau code. Si l'utilisateur exécute la version la plus récente, il suffit d'appliquer le diff. Fonctionne particulièrement bien avec 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 télécharger le tout de toute façon.


Il y a des implémentations couple d'algorithmes diff binaires génériques: bsdiff et xdelta sont bonnes implémentations open source. Je ne trouve aucune implémentation pour .NET, mais comme les algorithmes en question sont plutôt indépendants de la plate-forme, il ne devrait pas être trop difficile de les porter si vous vous sentez comme un projet.

+0

Je remplacerais "peut être" par est ou au moins est habituellement. –

2

Si vous parlez de patcher des applications Windows, alors ce que vous voulez regarder sont des fichiers .MSP. Ce sont similaires à un .MSI mais juste un patch et une application.

Jetez un coup d'œil à Patching and Upgrading dans les documents MSDN.

Qu'est-ce qu'un fichier .MSP charge les fichiers mis à jour dans une installation d'application. Il s'agit généralement de fichiers dll et de ressources mis à jour, mais ils peuvent inclure n'importe quel fichier. En plus de patcher 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" dans Ajout/Suppression de programmes, les fichiers de correctif mis à jour sont également utilisés.

Je pense que la méthode binaire diff discuté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.

Questions connexes