2010-06-17 2 views
0

Nous migrons une application Windows .Net vers Windows 7. Cette application peut être utilisée dans plusieurs langues, mais seul l'anglais est installé par défaut. Il y a un élément de menu qui permet aux utilisateurs de télécharger des langues supplémentaires. Cette application utilise l'organisation standard des dossiers de ressources satellite .Net: http://msdn.microsoft.com/en-us/library/sb6a8618%28v=VS.80%29.aspx.
Le problème dans Windows 7 est que les utilisateurs ne sont pas des administrateurs et n'ont pas accès en écriture au dossier "Program Files" dans lequel l'application est installée. Cela signifie que lorsque les utilisateurs essaient de télécharger un nouveau fichier de ressources linguistiques, ils reçoivent une erreur.
Existe-t-il un moyen d'orienter .Net pour rechercher des fichiers de ressources dans un autre dossier, par exemple dans le répertoire personnel de l'utilisateur? Je sais que vous pouvez ajouter les ressources au cache d'assemblage .Net Global, mais vous avez également besoin de droits d'administrateur pour cela.Modification du chemin des ressources i18n pour l'application .Net Windows

Modifier: Je suis au courant du sondage < paramètre de configuration > (http://msdn.microsoft.com/en-us/library/823z9h8w.aspx), mais il peut être utilisé que pour spécifier un sous-répertoire du chemin de base de l'application. Y a-t-il un moyen de forcer à un dossier en dehors de la maison de l'application?

Modifier: Je pense que je pourrais probablement utiliser pour regarder l'événement AppDomain.AssemblyResolve pour les ressources appropiate, mais il ne sera pas appelé à des ensembles de ressources avant .Net 4 et je ne peux pas avoir la mise à jour des utilisateurs à cette version pour le moment.

Merci,
Guillermo

Répondre

0

J'ai finalement réussi à le faire fonctionner en créant un lien de dossier de jonction d'un sous-répertoire (utilisateur) sous le dossier de l'application vers un répertoire dans le dossier de l'utilisateur. Ensuite, j'ai ajouté la ligne suivante dans app.config sous l'étiquette assemblyBinding:

<probing privatePath=".;user" /> 

L'application écrit les fichiers de ressources dans le dossier de l'utilisateur et ils sont accessibles par l'application comme si elles étaient dans le bon chemin.
Ce n'est pas la solution la plus élégante mais ça marche.

0

VB.Net a une classe SpecialDirectories qui peut être utilisé pour accéder aux répertoires tels que le répertoire de données d'application utilisateur en cours (via l'élément CurrentUserApplicationData).

Vous pouvez écrire dans ce répertoire sans droits d'administrateur, même si je m'assurerais de créer une structure de répertoire unique pour votre application.

+0

Oui, je n'ai aucun problème pour écrire dans le répertoire utilisateur. Ce que je cherche est un moyen de contrôler le .Net sondant pour les fichiers de ressources d'autres langues. –

+0

@Guillermo - désolé, je ne connais pas de moyen d'éviter le chemin d'application ou gac :( – Oded

Questions connexes