2010-12-10 5 views
3

J'ai un programme Windows que j'ai fait avec python et py2exe. J'aimerais créer une fonction de mise à jour afin que le logiciel puisse être facilement mis à jour.Quelles sont les stratégies courantes pour mettre à jour les programmes python?

Quelles sont les façons les plus courantes d'y parvenir?

+3

Identique à tout autre système; Une fois que vous le faites avec py2exe, cela devient une question générale et il y a très peu de choses spéciales sur le fait qu'il s'agit de Python. –

+0

Trouvez une boîte à outils pour mettre à jour ou corriger les fichiers .exe (ou binaires) - ou écrivez vous-même un Python ou un autre langage (probablement pas si difficile). – martineau

Répondre

1

Lorsque vous empaquetez une application avec py2exe, le résultat est généralement un seul exécutable (peut-être avec certains fichiers de données). Ceci est plus simple à mettre à jour en proposant simplement à l'utilisateur de télécharger et d'installer une nouvelle version de temps en temps (la façon de vérifier avec un serveur que cette nouvelle version existe est une question différente).

Si vous voulez réduire la taille de téléchargement que l'utilisateur doit faire, l'application a souvent recours à la décomposition en plusieurs DLL et à la mise à jour uniquement des DLL pertinentes. Lorsque vous avez une application Python, vous n'avez pas de DLL mais vous avez une option encore plus simple - vous pouvez garder la plupart de la logique de votre application en dehors de l'exe dans les fichiers .pyc, et mettre à jour seulement certains de ces fichiers .pyc. Maintenant, gardez à l'esprit que les fichiers .pyc sont facilement "décompilables" en Python (une version quelque peu obscure de votre code original), mais avoir un exe fait avec py2exe n'est pas beaucoup plus sûr, parce que py2exe est un logiciel open-source et emballe tous les mêmes fichiers à l'intérieur de l'exe de toute façon. En conclusion, ma suggestion est ne dérange pas. Quelle est la taille de votre application? Avec les connexions rapides d'aujourd'hui, il est plus facile de demander à l'utilisateur de télécharger une toute nouvelle version que de consacrer beaucoup de temps à la création d'une fonctionnalité de mise à jour partielle dans votre programme.

+0

Merci, La sécurité du code n'est pas une affaire énorme, je vais probablement le rendre open source par la version 2.0. Existe-t-il de bons moyens de communiquer avec le programme pour que je puisse lui commander de faire une boîte de dialogue contextuelle? – rectangletangle

+0

@ Anteater7171: si la sécurité n'est pas un problème, alors emballez simplement toutes vos bibliothèques Python dans un répertoire (py2exe a une option pour cela IIRC). Je ne comprends pas votre dernière question –

3

Si vous pensez que votre code pourrait profiter à d'autres, vous pouvez le mettre sur PyPI. Ensuite, avoir des versions différentes est juste mettre à jour votre paquet, ou dire à vos clients d'utiliser easy_install pour obtenir la dernière version. Cela ne pousse pas les mises à jour, cependant.

Vous pouvez essayer Esky, qui est un cadre de mise à jour automatique pour la gestion de différentes versions, y compris l'extraction de nouvelles versions et l'annulation des mises à jour partielles. Il peut être trouvé sur PyPI.

Cela dit, je n'ai pas utilisé Esky. Si vous souhaitez lancer votre propre fonction de mise à jour automatique, vous pouvez regarder Boxed Dice pour voir comment ils se sont débrouillés.

Questions connexes