Application à mise à jour automatique - philosophie

15

C'est une question philosophique.

Étant donné une application de bureau hypothétique et un désir de fournir des mises à jour automatiques (plutôt que de forcer les gens à visiter un site Web, à rechercher une mise à jour, à télécharger une mise à jour, à installer), laquelle des deux est davantage une approche de «meilleure pratique»?

  1. Comme iTunes , il vérifie s'il existe une nouvelle version et invite l'utilisateur à télécharger la nouvelle version. Si c'est le cas, il télécharge un exécutable d'installation complète (dans ce cas, un fichier Windows Installer (.msi)) qui installe la version complète (pas seulement une mise à niveau vers la version précédente - trop à gérer s'il existe plusieurs versions) . Donc, disons, c'est la version 10.1.1 - que vous installiez une nouvelle version ou une mise à niveau, vous utilisez le même fichier. Après le téléchargement, il demande à l'utilisateur de fermer l'application et d'exécuter le fichier d'installation lui-même.

  2. Semblable à l'autre, il recherche une nouvelle version et invite l'utilisateur à le télécharger, mais au lieu de simplement télécharger un exécutable et inviter l'utilisateur à l'exécuter, il l'exécute en fait pour eux - arrêter le programme qu'ils ont ouvert, acquérir la sécurité nécessaire pour installer les fichiers.

Problèmes avec # 2: de nombreux problèmes liés à la fermeture du programme, car le programme peut ouvrir d'autres programmes ( Outlook et Excel ), ou si l'utilisateur était au milieu de quelque chose. Toujours en matière de sécurité, vous avez besoin d'un accès administrateur local pour installer, que faire si vous ne l'avez pas? Dans les versions ultérieures de Windows, vous ne pouvez pas simplement remplacer la sécurité de la personne.

Problèmes avec le n ° 1: certaines personnes pensent que ce sera trop difficile, trop d'efforts pour l'utilisateur final.

Je préférerais fortement opter pour le n ° 1 car cela permettra d'économiser 80 à 120 heures sur mon projet, et est plus simple à mettre en œuvre et à maintenir. Cependant, nous avons des gens qui se sentent fortement de tous côtés.

Quelle est la meilleure pratique pour ce genre de chose?

Shannon Davis
la source
Je ne suis pas sûr que ce soit philosophique, on dirait qu'elle cherche une solution pour moi.
Donc, ce n'est pas OK de poser des questions de conception / architecture ici?
Ma question est, pourquoi le # 2 nécessite-t-il que le programme s'arrête et redémarre? S'il s'agit d'une mise à jour de sécurité, cela est compréhensible, mais un utilisateur normal ferme et rouvre un programme au moins une fois par jour sinon plus, alors pourquoi ne pas l'installer en arrière-plan, laissez l'utilisateur exécuter le programme en utilisant l'ancienne version en mémoire , puis au redémarrage, utilisez la nouvelle version installée. Pas de chichi, pas de soucis.
Mike S
@Mike S: ce n'est pas possible sous Windows (ne peut pas écraser les fichiers exécutables en cours d'exécution) et même sous Linux ce n'est pas une très bonne idée (si vous ouvrez une autre instance, vous en aurez une exécutant l'ancien code et une exécutant le nouveau code - s'il y a un IPC, c'est encore pire)
Dean Harding
Par expérience: si vous recherchez des mises à jour, ne demandez pas à votre programme de le faire quotidiennement à minuit ou à 15 heures. Cela semble raisonnable, mais vous terminez DDOS sur vos propres serveurs. Ajoutez simplement jusqu'à 3600 secondes d'aléatoire; ce n'est pas si urgent.
MSalters

Réponses:

20

Personnellement, j'aime plutôt l'approche de Google Chrome. Un répertoire de base avec un lanceur et des sous-répertoires pour chaque version installée du logiciel. Le lanceur recherche simplement le numéro de version le plus élevé et l'utilise et supprime les anciennes versions selon les besoins. Une tâche de mise à jour s'exécute de temps en temps pour télécharger et créer de nouveaux répertoires. Lorsque de nouvelles versions sont installées, l'application en cours d'exécution demande un redémarrage pour utiliser la nouvelle version.

Lardons
la source
4
+1 pour avoir souligné le bon comportement de Google. Le contraste est Adobe Acrobat Reader qui, comme tous les 2 jours, certains correctifs apparemment urgents à installer, et dérange continuellement dans son travail.
Ingo
J'aime aussi cette approche. L'inconvénient est qu'il ne fonctionne que pour les installations par utilisateur qui ne nécessitent pas d'élévation. Une fois que vous avez une invite d'élévation, peu importe si vous avez besoin de quelques clics supplémentaires pour effectuer la mise à jour (ce n'est plus silencieux).
@Cosmin si vous ne souhaitez pas utiliser% appdata%, vous pouvez utiliser% ProgramData% pour stocker les fichiers téléchargés. Une façon plus correcte sur le plan philosophique serait de stocker les archives là-bas, puis de les élever pour les installer lors de la prochaine exécution du programme.
Bacon Bits
J'AIME cette réponse et je la mets dans ma poche arrière (pour l'instant, le téléchargement de style "Itunes" a trouvé un large attrait pour des raisons d'économies.)
Shannon Davis
3

Vous ne devez pas créer d'entrées de démarrage inutiles pour vérifier les mises à jour comme Adobe Flash Player (il est difficile de toutes les retrouver, et je ne peux pas trouver un moyen de désactiver les vérifications ...) ou iTunes. Cela agace l'utilisateur (geeks, de toute façon). Une meilleure option serait de vérifier les mises à jour au démarrage de l'application comme le fait Firefox .

Un simple "Installer les mises à jour?" la fenêtre n'ennuiera pas les utilisateurs. Laissez-le se mettre à jour en arrière-plan pendant que l'utilisateur fait d'autres choses, puis démarrez automatiquement votre application.

Assurez-vous simplement d'inclure une option:

Vérifiez les mises à jour à:

  • Connectez-vous (si vous voulez ennuyer les geeks)
  • Application de démarrage ( sur par défaut)
  • Toutes les quelques semaines ( désactivé par défaut)

Ou quelque chose de similaire.


Si cela en vaut la peine, je dirais allez-y. C'est ta décision.

Mateen Ulhaq
la source
2

Je pense que vous voulez une configuration "ClickOnce".

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce est une technologie de déploiement qui vous permet de créer des applications Windows à mise à jour automatique qui peuvent être installées et exécutées avec une interaction utilisateur minimale. Le déploiement ClickOnce résout trois problèmes majeurs de déploiement:

Difficultés de mise à jour des applications. Avec le déploiement de Microsoft Windows Installer, chaque fois qu'une application est mise à jour, l'utilisateur doit réinstaller l'intégralité de l'application; avec le déploiement ClickOnce, vous pouvez fournir des mises à jour automatiquement. Seules les parties de l'application qui ont été modifiées sont téléchargées, puis l'application complète et mise à jour est réinstallée à partir d'un nouveau dossier côte à côte.

Impact sur l'ordinateur de l'utilisateur. Avec le déploiement de Windows Installer, les applications reposent souvent sur des composants partagés, avec des risques de conflits de version; avec le déploiement ClickOnce, chaque application est autonome et ne peut pas interférer avec d'autres applications.

Autorisations de sécurité. Le déploiement de Windows Installer nécessite des autorisations administratives et n'autorise qu'une installation utilisateur limitée; Le déploiement ClickOnce permet aux utilisateurs non administratifs d'installer et n'accorde que les autorisations de sécurité d'accès au code nécessaires à l'application.


la source
Ce n'était pas une question d'avantages et d'inconvénients de cliquer une fois et de MSI (pour lesquels bon nombre de vos conclusions sont incorrectes et / ou incomplètes) mais plutôt une question de meilleures pratiques pour les solutions de mise à jour automatique.
Christopher Painter
J'apprécie quand même ces informations et je les partagerai avec le développeur pour voir s'il les avait considérées comme une option - peut-être pensait-il qu'il devrait développer lui-même le processus de mise à jour.
Eh bien Christopher, reprends-le avec MS, c'est directement depuis MSDN. C'est vraiment un commentaire utile aussi.
Quand il code pour les technologies de déploiement, il ne me surprend jamais lorsque quelqu'un publie sur MSDN se trompe. Nous sommes très peu d'experts qui comprennent vraiment ce genre de choses.
Christopher Painter
2

Personnellement, j’ai apprécié les applications qui font quelque chose de similaire cadre Sparkle . Je suppose que c'est une chose Mac uniquement, mais cela fait essentiellement ce qui suit (du haut de ma tête - je suppose que le comportement peut être ajusté).

  1. Vérifier la mise à jour (généralement au démarrage de l'application)
  2. S'il y en a un, une fenêtre séparée s'affiche avec un journal des modifications bien formaté
  3. L'utilisateur peut ensuite ignorer cette version, l'installer ou choisir d'être rappelé plus tard
  4. S'il décide d'installer l'application, une barre de progression s'affiche sous le journal des modifications
  5. Après le téléchargement, l'utilisateur peut décider de quitter l'application et de l'installer immédiatement ou d'installer après avoir quitté l'application

Étant donné que vous parlez de .msi, ce cadre particulier n'est pas vraiment applicable, mais dans ce cas, je préférerais une solution existante plutôt que de réinventer la roue.

sebastiangeiger
la source
1

Je dirais que vous devez vraiment connaître votre utilisateur. S'ils sont avertis et ou ont un intérêt intense à rester à jour, # 1 fonctionnera.

Ne sous-estimez jamais la paresse d'un utilisateur car lorsque son programme ne fonctionne plus car il n'est plus pris en charge, vous serez inondé d'appels au service d'assistance plus tard.

Le temps viendra soit du développement (# 2) soit du support (# 1).

maple_shaft
la source
1

Et ça?

  • Au démarrage de l'application, vérifiez la nouvelle version et (éventuellement après avoir demandé à l'utilisateur) la télécharger.
  • Une fois le téléchargement terminé, fournissez un bouton à l'utilisateur qui permet de réinstaller et de redémarrer l'application (n'utilisez aucune boîte de dialogue sauf si la mise à jour est critique).
  • À l'arrêt de l'application, (éventuellement après avoir demandé à l'utilisateur) démarrer le programme d'installation. Si l'utilisateur refuse de faire l'installation à ce stade (il est peut-être pressé), faites-le la prochaine fois avant le démarrage de l'application.

Vous n'avez pas besoin de déranger l'utilisateur, vous n'avez rien à fermer ...

maaartinus
la source
1

Pourquoi pas quelque chose au milieu?

Invite à télécharger (ou faire l'option "télécharger automatiquement"), après avoir terminé l' invite à installer la mise à jour téléchargée (exécutez le .msi). De cette façon, vous annulez les inconvénients du n ° 2 (fermeture au milieu du travail de l'utilisateur) tout en conservant le confort avec le coût d'un clic de plus.

La boîte de dialogue " Fermer et installer la mise à jour? " Devrait être facilement accessible (mais pas gênante) lorsque l'utilisateur refuse au début. Avec avoir "Lancer <nom du programme>?" la case à cocher à la fin de .msi sera presque comme # 2 avec pas vraiment plus de travail

@ Les
programmes de sécurité dans Windows moderne peuvent demander la permission d'effectuer des actions nécessitant des droits d'administrateur (l'utilisateur affiche une invite où il saisit le mot de passe de l'administrateur, puis sélectionne "oui / non" pour accorder l'autorisation)

NoxArt
la source
1

J'ai 124 prêteurs sur gages qui utilisent mon application de bureau Pawnshop Management. Chaque fois que j'ai une nouvelle mise à jour, je leur diffuse un e-mail l'informant de la mise à jour et des détails de celle-ci. Ensuite, ils ont la possibilité de le FTP en se connectant à mon site Web. Ils ont également la possibilité d'annuler la mise à jour. Mon site Web garde également une trace de chaque version installée de prêteurs sur gages.

Frank R.
la source