Изменить путь ресурсов i18n для приложения .Net Windows - PullRequest
0 голосов
/ 18 июня 2010

Мы переносим приложение .Net windows на Windows 7. Это приложение может использоваться на нескольких языках, но по умолчанию установлен только английский. Существует пункт меню, который позволяет пользователям загружать дополнительные языки.
Это приложение использует стандартную организацию папок ресурсов .Net: http://msdn.microsoft.com/en-us/library/sb6a8618%28v=VS.80%29.aspx.
Проблема в Windows 7 заключается в том, что пользователи не являются администраторами и не имеют прав записи в папку «программные файлы», в которой установлено приложение. Это означает, что когда пользователи пытаются загрузить новый файл языковых ресурсов, они получают ошибку.
Есть ли способ заставить .Net искать файлы ресурсов в другой папке, например, в домашнем каталоге пользователя? Я знаю, что вы можете добавить ресурсы в кэш сборок .Net Global, но для этого вам также необходимы права администратора.

Редактировать : Мне известен параметр конфигурации (http://msdn.microsoft.com/en-us/library/823z9h8w.aspx),, но его можно использовать только для указания подкаталога базового пути приложения. Есть ли способ заставить его в папку за пределами дома приложения?

Редактировать : Думаю, я мог бы использовать событие AppDomain.AssemblyResolve для поиска подходящих ресурсов, но оно не будет вызываться для сборок ресурсов до .Net 4, и я не могу пользователи обновляются до этой версии.

Спасибо
Гильермо

Ответы [ 2 ]

0 голосов
/ 22 июня 2010

Мне наконец удалось заставить его работать, создавая ссылку на папку соединения из подкаталога (пользователя) в папке приложения в каталог в папке пользователя. Затем я добавил следующую строку в app.config под тегом assemblyBinding:

<probing privatePath=".;user" />

Приложение записывает файлы ресурсов в папку пользователя, и приложение обращается к ним, как если бы они находились по правильному пути.
Это не самое элегантное решение, но оно работает.

0 голосов
/ 18 июня 2010

VB.Net имеет класс SpecialDirectories, который можно использовать для доступа к каталогам, таким как каталог данных текущего пользовательского приложения (через член CurrentUserApplicationData).

Вы можете писать в этот каталог без прав администратора, хотя я бы обязательно создал в нем уникальную структуру каталогов для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...