#windows #visual-studio-2010 #dll #wix
#Windows #visual-studio-2010 #dll #wix
Вопрос:
У меня есть приложение на C # и проект WiX для установки этого приложения в ProgramFilesFolder. В моем приложении есть элемент просмотра, который использует DLL-файл. Если я запускаю приложение с обычными правами пользователя, я получаю сообщение об ошибке, и элемент viewer в моем приложении не загружается с сообщением об ошибке, что мой элемент viewer не имеет доступа к dll-файлу. Как пользователь с правами администратора он работает нормально. В моем проекте WiX я установил свойство perMachine, и у меня есть несколько других DLL-файлов, используемых в моем приложении, и я не получаю такой ошибки.
Если я устанавливаю свое приложение вне ProgramFilesFolder, проблем нет. Что мне делать? В VS2010 я могу установить действие сборки и скопировать в выходной каталог для каждого файла, нужно ли мне устанавливать что-то особенное? Или в элементе File в WiX есть опция для установки свойств доступа?
Комментарии:
1. Вы пытались запустить программу установки с правами администратора?
Ответ №1:
Вы сталкиваетесь с таким поведением, потому что части вашего приложения (элементу viewer) требуются разрешения на запись в папку установки.
Решение заключается в запросе прав доступа через манифест вашего приложения. Таким образом, ваше приложение всегда запускается с правами администратора.
Комментарии:
1. Я не хочу, чтобы приложение запускалось с правами администратора.
2. Вам нужно найти способ сделать так, чтобы элемент viewer не требовал этих привилегий.
Ответ №2:
Вызывает ли это исключение при установке или при использовании приложения?
Если последнее, единственное предположение, которое у меня есть, это то, что рассматриваемая DLL пытается что-то записать в одну из защищенных папок, Program Files в данном случае. Вы должны устранить это, чтобы заставить его работать без прав администратора.
Комментарии:
1. Исключение генерируется при использовании приложения. Неужели нет другого выхода? Возможно, как и в системах unix, вы можете установить x-бит.
2. Нет, другого способа нет. Как сказал Космин, ваш компонент просмотра хочет выполнить запись в каталог установки, но это запрещено. Таким образом, вы либо даете ему разрешение на запись туда (с правами администратора), либо заставляете его записывать что-то в другой каталог, куда могут писать обычные пользователи. Это не имеет ничего общего с x-bit в Unix, и ситуация не похожа. Ваша проблема касается w-bit с точки зрения Unix.