Nous avons une application pour laquelle nous souhaitons installer un shell de base. Au fur et à mesure que les utilisateurs l'utilisent, il télécharge et installe les DLLs nécessaires pour les actions à effectuer (imaginez un scénario d'application avec plusieurs chemins possibles). Actuellement, tout est installé pour tous les chemins possibles via l'application shell. Pendant environ 3 mois sur l'année, les dll utilisées pour les chemins possibles subissent un taux de résiliation élevé avec des mises à jour, nous souhaitons donc commencer à nous assurer que les utilisateurs disposent de la version la plus récente de ces dll. L'idée est que, une fois toutes leurs sélections faites, nous ferions une vérification en ligne pour voir quelles DLL sont requises pour leur sélection et vérifierons si elles ont la version la plus récente de ces fichiers.Quelle est la meilleure façon de télécharger et d'installer à la demande des DLL dans .NET?
Tout cela, nous avons un plan pour la façon de le faire. Le problème que je me bats est quelle est la manière la plus appropriée d '"installer" ces fichiers. ClickOnce n'est pas une option ... trop de choses héritées ici. Notre application est installée dans "Program Files" qui a évidemment des restrictions pour l'écriture de fichiers aléatoires dans le dossier d'installation du programme sous Vista et plus tard.
En ce moment, je vois les options suivantes:
- On marque installer le répertoire d'installation en écriture pour le groupe « Tout le monde ». Je n'ai pas réellement testé pour voir si cela fonctionnerait encore, ou si Vista fait quelque chose de différent dans ce scénario.
- Fractionnez la partie téléchargement dans une deuxième application que nous pouvons utiliser pour obtenir des privilèges élevés afin de pouvoir télécharger et installer ces fichiers.
Je penche vers la deuxième option car cela maintient l'aspect sécurité du dossier Program Files. D'autres dans le groupe se penchent vers la première option parce qu'ils ne veulent pas avoir à s'inquiéter des choses. Ou y a-t-il une autre option qui me manque?
L'application est une application .NET, même si elle comporte certaines exigences relatives aux DLL tierces qui ne sont pas des assemblys gérés.