8
votes

Mise à jour automatique du programme et Windows 7

Nous avons une suite de programmes qui recherchent de nouvelles versions au démarrage, puis de télécharger de nouvelles versions à exécuter si nécessaire. Ceci est évidemment un problème dans Windows 7, lorsqu'il est enfermé comme un «utilisateur standard», car ils ne peuvent pas écrire dans le répertoire C: \ Program Fichiers et ci-dessous. Quelqu'un a vu un exemple d'application qui se déplace avec le problème?

Nos applications sont écrites à Delphes, mais un exemple dans n'importe quelle langue serait utile.

Merci d'avance

mise à jour:

Nous avons déjà un système permettant de déterminer si une nouvelle version existe, le seul problème est le téléchargement et l'installation (si nécessaire), car cela nécessite une élévation. Je ne peux pas penser à une manière qui ne nécessite pas d'invite d'élévation, ni de nos utilisateurs de réduire leurs paramètres de sécurité.

Mise à jour 2:

J'ai demandé à un Question ultérieure , plutôt que d'ajouter un nouveau ici


0 commentaires

8 Réponses :


6
votes

Typiquement ce que vous verrez une application faire si elle doit escalader les autorisations est une chose comme celle-ci.

  1. application détermine si la mise à niveau est nécessaire
  2. Application lance un service "Updater" qui nécessite des autorisations "administrateur"
  3. L'application se met à jour avec cette mise à jour
  4. demande redémarre

    Il s'agit d'un scénario joliment courant, d'autant plus que puisque la mise à jour de votre propre DLL, vous devez passer à un processus secondaire de toute façon.


0 commentaires

1
votes

ou vous pouvez l'avoir afin que l'utilisateur exécute une application de lanceur.

  1. L'application utilise le dossier localAppath \ pour stocker un cache de l'application principale.
  2. Launcher vérifie si Internet possède une nouvelle version de fichier (s) de fichier (s) nominative (s).
  3. Launcher lance l'application mise en cache dans LocalAppPath

2 commentaires

Et si votre application lancée contient «Configuration» ou «Installer» dans le nom de son nom, elle est automatiquement élevée (après une invite de cours), ce qui lui permet d'écrire dans ces bits protégés.


@skamradt - Parfait, oui - N'oubliez pas qu'il doit être compilé avec configuration ou installer dans le nom du nom, il ne peut pas être renommé d'après!





7
votes

Il existe deux options pour l'installation d'applications:

  1. L'application est disponible pour tous les utilisateurs : installation ou mise à jour nécessite une élévation pour Windows Vista et UP
  2. L'application est disponible pour un utilisateur : Installez ou mettez à jour l'application dans le profil utilisateur dans % localAppData% , aucune altitude n'est requise

    AD 2: Google Chrome fait cela. Il installe la .exe ici:

    % localAppData% \ Google \ chrome \ application \ chrome.exe

    - Jeroen


3 commentaires

Jeroen, cela ressemble à presque la bonne réponse. Puis-je enregistrer des typlies localement (pour un utilisateur) aussi?


Vous pouvez, si vous conservez votre propre mécanisme d'enregistrement. Vous ne pouvez pas si vous utilisez le mécanisme d'enregistrement par défaut (écran large). Quel type de fonctionnalité voulez-vous vous inscrire?


Nous enregistrons des dactylographies. Il semble qu'il y ait un appel d'API Win pour le faire par utilisateur que Delphi ne publie pas. Nous utilisons ensuite ces typelibs pour fournir des capacités permettant d'utiliser pour agréger nos fonctionnalités distinctes dans une «application». Ceci nous faisons actuellement, mais dans XP, nous pouvons vous en tirer et, dans Windows 7, nous ne pouvons pas.



3
votes

Voici quelques conseils pour vous permettre de mettre à jour les défis:

  1. Si votre fichier est des noms 'update.exe' ou 'install.exe', il forcera automatiquement une invite d'élévation de l'UAC. Ceci est un moyen facile de faire fonctionner les autorisations Windows Vista / 7.
  2. Ce n'est pas une bonne idée d'avoir le processus de vérification de la mise à jour et de mise à jour gérée à partir de votre candidature. Le problème est que votre application est susceptible de verrouiller les fichiers et de mettre à jour lui-même. Une application externe devrait gérer vos mises à jour.
  3. La solution de mise à jour la plus simple consiste à créer un appel HTTP qui vérifie le numéro de version actuel du produit, puis téléchargez le binaire du programme d'installation si nécessaire. Cela ne vous donnera aucune flexibilité dans les mises à jour, mais c'est une solution rapide et facile.

    Notre société vend un logiciel qui aide spécifiquement les mises à jour automatiques sur Windows 7 UAC (vous pouvez visiter AutoUPDate + en cliquant ici: Link Text ). Les meilleures raisons d'utiliser une solution tierce - Toute solution - sont que vous aurez plus de flexibilité avec vos mises à jour et évitez également les défis finky de soutenir différentes libérations de fenêtres.


0 commentaires

1
votes

Si votre application utilise MSI (Windows Installer) pour son installateur, alors PATCHING DE CONTACTION DE COMPTE D'UTILISATEUR , Si configuré correctement, peut vous permettre d'installer des mises à jour sans élévation.


0 commentaires

0
votes
  1. Si votre installateur n'était pas exécuté sous admin - vous n'avez besoin de droits supplémentaires pour installer la mise à jour.

  2. Si votre installateur a été exécuté sous admin - il peut créer une tâche dans la tâche Sheduler. Dis, exécutez cette tâche une fois par semaine, sous ce compte (admin) et avec les plus hautes prêts privilégiés. Tâche sera votre mise à jour. Simple.