2009-05-25 4 views
3

Je travaille sur la création d'une application de mise à jour automatique et un problème que je rencontre sous Vista et Windows 7 nécessite des privilèges administrateur pour mettre à jour le client. J'ai rencontré des problèmes avec des clients qui ont leurs utilisateurs s'exécutant sous des permissions restreintes et ils devraient avoir une connexion informatique sur chaque machine qui avait besoin de mettre à jour le client puisque les utilisateurs n'étaient pas capables de le faire. Un travail possible que je considère est d'avoir l'application de lancement installée dans les fichiers programme comme d'habitude, et ayant l'application réelle qu'il met à jour dans les documents des utilisateurs quelque part, afin qu'ils puissent mettre à jour et exécuter de nouvelles versions sans IL devient impliqué. Je me demande quel potentiel me manque ici ou ce que je devrais savoir avant de me lancer dans cette voie. Je suis conscient que click-once fait quelque chose de très similaire, et je l'utiliserais, sauf que j'ai besoin de la possibilité de faire des mises à jour silencieuses, sans aucune interaction de l'utilisateur.Exécuter l'application à partir de documents au lieu des fichiers programme

Répondre

1

Voici comment c'est supposé être. La dernière chose que la plupart des départements informatiques veulent, c'est un utilisateur qui met à jour de manière aléatoire un logiciel. Cela peut avoir toutes sortes d'effets secondaires involontaires tels qu'une incompatibilité avec les fichiers de la version antérieure, des fonctionnalités nouvelles et potentiellement non sécurisées, etc. C'est pourquoi les services informatiques désactivent Windows Update et effectuent leurs mises à jour manuellement de manière contrôlée.

Si les utilisateurs veulent une version mise à jour du logiciel, ils doivent le demander à leur service informatique. Ces ordinateurs et cette infrastructure ne leur appartiennent pas, ils leur empruntent simplement du temps auprès de l'entreprise pour laquelle ils travaillent afin qu'ils puissent faire leur travail.

+0

Je suis d'accord avec vous en théorie. Une partie du problème est notre processus de développement qui est la libération précoce, la libération souvent. Nous avons déjà un processus qui détectera une mise à jour, puis invitera le téléchargement et le lancement du programme d'installation pour le mettre à jour. Cela a causé un problème avec un client en particulier qui a les ordinateurs verrouillés et IT doit faire les mises à jour. Comme nous avons à peu près une mise à jour par semaine, cela a été assez ennuyeux pour leur département informatique. Les plaintes de leur service informatique ont été la raison de s'engager dans cette voie. –

+0

Je recommande de travailler avec eux pour rendre le déploiement sur leurs réseaux aussi indolore que possible. S'ils mettent tout à jour à la main, ils le font à la dure. – Soviut

0

Un bout de chargeur est un bon moyen d'aller. Le seul gotcha est quand vous devez mettre à jour le chargeur; le même problème initial s'applique (bien que cela devrait être assez rare). Un problème que je peux penser d'emblée est que vous sortez de l'idée de garder les choses plus «sécurisées». Puisque votre exécutable existe dans un endroit qui devrait être complètement accessible à un non-administrateur, il est possible que quelque chose d'autre puisse claquer votre exe et ainsi corrompre la sécurité.

1

Y a-t-il un problème avec une seule installation de votre programme? Est-il particulièrement important, par exemple?

Avez-vous besoin de privilèges d'administrateur pour exécuter votre programme?

Sinon, vous n'avez pas besoin du dossier Program Files.

Je vous suggère de ne pas installer complètement les fichiers de programme et d'installer simplement votre programme dans le système de dossiers de l'utilisateur au <userfolder>\AppData\ProgramName. Si vous utilisez .NET, regardez dans ClickOnce deployment mechanism. Il a une fonction de mise à jour automatique qui vous facilitera la vie.

Modifier: Vous venez de voir votre dernière phrase. ClickOnce peut forcer l'utilisateur à mettre à jour.

+0

Il y a actuellement deux applications distinctes sur lesquelles je travaille. L'un est un kiosque qui doit être capable de mettre à jour sans aucune interaction de l'utilisateur. Clickonce nécessite que l'utilisateur clique plusieurs fois pour installer la mise à jour, donc il ne correspond pas à mes besoins pour cette application, et j'espérais utiliser la même méthode de mise à jour pour les deux applications. –

+0

Eh bien, je pense toujours que ClickOnce serait la meilleure solution - une mise à jour complètement silencieuse n'est pas exactement la meilleure interface utilisateur, mais vous pouvez toujours résoudre votre problème en installant sur le système de dossiers de l'utilisateur plutôt que sur le dossier Program Files . Votre programme s'exécute avec les autorisations de l'utilisateur et l'utilisateur peut lire/écrire sur AppData sans problème. Badabing, badaboom, pas besoin d'élever. – Randolpho

1

Quelques choses:

Si vous décidez de déplacer votre application à un endroit dans les documents, assurez-vous que votre application écrit données de manière transparente à l'endroit où votre programme est installé, par exemple s'il existe des chemins codés en dur dans le code qui pointent vers de mauvais endroits. Peut-être que ce n'est pas un problème pour vous, mais peut-être quelque chose à garder à l'esprit.

Nous l'avons résolu à peu près de la même manière lorsque nous avons décidé d'implémenter une fonctionnalité de «mise à jour en direct». Mais à la place, nous avons installé un service qui fonctionne avec des droits d'administrateur. Ce service peut à son tour exécuter les programmes d'installation une fois que le programme a besoin d'être mis à jour. Avec ce type de solution, vous n'avez même plus à déplacer votre applicaton hors des fichiers programme.

À la votre!

Edit:

Une autre chose intéressante d'avoir un service en cours d'exécution en tant qu'administrateur. Est-ce que vous pourriez créer une communication de pipe nommée avec elle et l'avoir faire des choses pour vous, comme vous ne seriez pas capable de faire comme un utilisateur normal.

0

Vous pouvez probablement tirer parti de AppLocker. Ce n'est peut-être que pour Win7, mais je ne suis plus sous Vista. ;)

Questions connexes