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? P>
Nos applications sont écrites à Delphes, mais un exemple dans n'importe quelle langue serait utile. P>
Merci d'avance p>
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é. P>
J'ai demandé à un Question ultérieure , plutôt que d'ajouter un nouveau ici p>
8 Réponses :
Typiquement ce que vous verrez une application faire si elle doit escalader les autorisations est une chose comme celle-ci. P>
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. P>
ou vous pouvez l'avoir afin que l'utilisateur exécute une application de lanceur. P>
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!
Votre application peut vérifier si une nouvelle version est disponible sur le serveur distant. Si tel est le cas, il peut télécharger des fichiers de mise à jour dans l'un des dossiers spécifiques à l'utilisateur, tels que le dossier Temp de l'utilisateur. Vous pouvez obtenir une adresse de ces dossiers spéciaux à l'aide de Shgetspecialfolder A> Fonction API. Une fois le téléchargement terminé, vous pouvez afficher une boîte de dialogue indiquant que vous êtes prêt à être mis à jour. Si l'utilisateur est d'accord avec la mise à jour, vous pouvez exécuter le processus de mise à jour avec des privilèges élevés (en tant qu'administrateur) et le processus de mise à jour peut remplacer les fichiers existants dans votre chemin d'installation avec ceux déjà téléchargés dans le dossier Temp. Pour exécuter votre Updater en tant qu'administrateur, vous pouvez utiliser Shellexecute < / a>: p> Lors de la mise à jour terminée, votre processus de mise à jour peut redémarrer votre application. P> p>
Vous ne pouvez pas élever un processus déjà en cours d'exécution, mais vous pouvez démarrer un nouveau processus élevé aux privilèges administrateurs et le code ci-dessus correspond à cela.
Vous devez avoir un exécutable séparé pour mettre à jour le travail. Le programme de mise à jour doit avoir un manifeste qui le marque comme nécessitant une élévation. P>
Voir: http://msdn.microsoft.com/en-us /Library/bb756929.aspx P>
Il existe deux options pour l'installation d'applications: p>
AD 2: Google Chrome fait cela. Il installe la .exe ici: p>
% localAppData% \ Google \ chrome \ application \ chrome.exe p>
- Jeroen P>
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.
Voici quelques conseils pour vous permettre de mettre à jour les défis: P>
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. P>
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. P>
Si votre installateur n'était pas exécuté sous admin - vous n'avez besoin de droits supplémentaires pour installer la mise à jour. P> li>
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. P> li> ol>