2009-06-13 5 views
9

J'ai actuellement un projet avec un installateur que j'ai fait avec NSIS, mais je voudrais avoir une mise à jour vers les nouvelles versions qui ont seulement les fichiers modifiés et montreront un changelog. La plateforme cible est Windows. Quelles méthodes/suggestions avez-vous pour le faire?Comment faire un programme d'installation de mise à jour avec NSIS?

+0

Avez-vous terminé votre projet? Qu'avez-vous utilisé à la fin? Peut-être que vous pourriez accepter l'une des réponses :) –

+0

Oui, je l'ai complété ... mais je n'ai pas utilisé aucune de ces méthodes car c'était plus compliqué que j'aurais aimé. J'ai donc fait une version complète pour les mises à jour et j'ai demandé à l'utilisateur de les télécharger avant de laisser l'application s'exécuter. – staackuser2

+0

Je viens d'accepter votre réponse ... même si je ne l'utilisais pas, cela ressemble à la meilleure méthode disponible. – staackuser2

Répondre

12

Vous voudrez peut-être reconsidérer en utilisant NSIS. Si vous voulez patcher et distribuer des mises à jour, vous aurez probablement l'avantage d'utiliser une technologie d'installation qui utilise les fonctionnalités de Windows Installer (msiexec). NSIS est fondamentalement un programme qui s'exécute et fait ce que vous voulez alors qu'un programme d'installation de type Windows Installer vous oblige à diviser votre application en fonctionnalités et en composants qui peuvent être gérés par le service Windows Installer msi. MSI va suivre des choses comme les versions des produits que vous avez installés, si le programme d'installation va fonctionner de nouveau en mode maintenance, si vous êtes autorisé à installer 2 produits de différentes versions, si un correctif peut être appliqué à une version particulière d'un produit ou toute autre question relative aux mises à jour et aux installations.

Fondamentalement la plupart des choses que vous demandez seront disponibles dès le début si vous passez à une technologie Windows Installer. Alors que si vous utilisez NSIS (qui n'utilise pas la technologie Windows Installer), vous devrez tout implémenter vous-même. Juste à titre d'exemple, il existe un constructeur d'installateur assez complet appelé AdvancedInstaller (http://www.advancedinstaller.com/) qui ressemble à ce que vous voulez. Si vous voulez passer le reste de votre vie sur les forums de trawling et les newsgroups, il y a un produit open source appelé WiX qui fait quelque chose de similaire;)

+5

Je ne sais pas pourquoi j'ai été marqué pour cela. Alors que NSIS est open source, vous devez penser au meilleur outil pour le travail après tout ce que vous utilisez sous Windows. –

1

Un moyen possible serait de stocker un fichier XML sur votre serveur de téléchargement qui a chaque version publiée et une liste de fichiers qui ont changé pour chaque version. Le programme d'installation écrit une clé de registre lors de l'installation de la version des fichiers installés.

Ensuite, lors de la mise à jour, le programme d'installation télécharge et analyse le fichier XML et trouve les nœuds dont le numéro de version est supérieur à celui actuellement installé. Vous affichez tous les fichiers dans une zone de texte sur une page d'installation, et lorsque l'utilisateur confirme, le programme d'installation télécharge tous les fichiers, puis met à jour le registre à la dernière version.

+0

J'ai seulement quelques fichiers, et ils seront changés avec presque chaque mise à jour. Donc, je voulais juste les regrouper dans un updater.exe, et avoir ce programme d'installation être différent du fichier exe d'installation complète. Toujours pas sûr de ce qui est le meilleur ... peut-être une installation complète à chaque fois est assez bon pour mon cas. – staackuser2

3

En dépit de mon précédent commentaire, j'ai écrit un programme d'installation de 5000 lignes en utilisant NSIS avec 13 pages personnalisées. J'ai même regardé les correctifs et c'est un peu un hack. Le conseil principal est de vous assurer que vous corrigez la version que vous pensez corrigez puis utilisez l'un des plugins de patch disponibles.

Il existe plusieurs technologies de correctifs qui permettent de comparer les fichiers et de produire des fichiers de modification des correctifs ainsi que le code NSIS requis pour les "installer". J'ai trouvé que NSIS Patch Gen a fait ce que je voulais plutôt bien avec le moins de tracas. La documentation est un peu mince mais une fois que vous vous en apercevez, vous pensez "Oh yeh".

Vous allez probablement avoir un peu de problème avec un journal des modifications généré automatiquement. Je vous suggère de créer vous-même le journal des modifications (ou au moins d'ajouter les modifications supplémentaires à chaque changement d'application) et de l'inclure comme s'il s'agissait d'un fichier d'application normal et de le mettre à jour.

http://sourceforge.net/projects/nsispatchgen/

0

Certains compilateurs comme Delphi font beaucoup de changements dans l'exécutable final même si vous changez une petite partie de votre code.

Alors d'abord vous devriez voir si cela vaut la peine de patcher.

Une autre considération est patcher par lui-même. Le blocage peut être bloqué par certains logiciels antivirus, en particulier dans certains dossiers système.

et enfin la taille des données de correction supplémentaire peut se développer au-delà des fichiers d'origine. Basé sur des sujets ci-dessus, je ne suggère pas que vous patcher

. Utilisez installateurs complets au lieu

1

connaissez-vous cURL? http://www.shininglightpro.com/products/Win32OpenSSL.html http://curl.haxx.se/download.html#openssl

il téléchargera tout protocole, et vous pouvez l'utiliser pour télécharger vos fichiers. c'est une application en ligne de commande. Dans le programme d'installation, planifiez un programme qui doit vérifier d'abord si le programme principal est en cours d'exécution ou non et quittez s'il est en cours d'exécution sinon, appelle curl pour télécharger un fichier batch de votre site avec les mises à jour, puis exécute le fichier batch.
le fichier de commandes qu'il télécharge met à jour l'application en téléchargeant les fichiers corrects à l'aide de curl. Le processus devrait être exécuté toutes les deux semaines ou une fois par mois, selon la fréquence de mise à jour.

la partie de désinstallation du programme d'installation doit être capable d'éliminer toutes les parties de l'application en question, y compris les mises à jour. Cela peut être accompli en supprimant tous les fichiers de ce sous-répertoire de fichiers programme. PRODUCT_NAME est un!! Que j'ai créé parce que j'utilise ces fichiers nsi comme un gabarit. Ceci est seulement une partie de la section de désinstallation du fichier d'installation.