Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не корректно устанавливается под WIN 7  (Прочитано 12252 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« : 14-10-2011 13:31 » 

Итак, ситуация следующая есть программа, которая в данный момент пишется мной, при установке ее на W7 под User требует поставить от Admin (вываливается окошко, в котором нужно ввести пароль администратора). Ставлю от Admin, в папке  C:\Users\Admin\AppData\Roaming создается папка с config.xml, без которого прога не стартует. После установки прога стартует сама, корректно, и чудесно отрабатывает, я ее закрываю и запускаю заново. После перезапуска она стартует некорректно т.к. при установке config.xml записался в appdata к Admin, и даже если я руками скопирую его в appdata к user прога его не видит, ну а у admin ей, естественно, прав не хватает прочитать. Подскажите пожалуйста как красиво выйти из этой ситации и сделать мое приложение рабочим?
« Последнее редактирование: 17-10-2011 10:27 от Джон » Записан
zubr
Гость
« Ответ #1 : 14-10-2011 16:21 » 

1. Все действия по установке, которые требуют прав админа выделить в отдельную прогу.
2. Установочная прога устанавливая программу под юзером, для действий требующих админских полномочий, через RunUs (ShellExecuteEx( ..."runas"...)) вызывает прогу из п. 1
3. Установочная прога дожидается окончания работы вспомогательной проги и продолжает или завершает процесс установки.

Правда в этом есть недостаток. Недавно столкнулся с проблемой:
Установочная программа создает файл вспомогательной программы во временной папке и оттуда его запускает. На что срабатывает проактивная защита Каспера 2012 - ему видите ли данные действия  похожи на действия какого то вируса. Что, имхо, параноидально, потому как добрая половина программ, вполне добропорядочных, выполняет подобные действия.
Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 17-10-2011 08:34 » 

zubr,  спасибо буду разбираться. А как ручками запустить прогу от имени определенного User'a? Среди модулей программы есть апдейтер, в принцмпе он отрабатывает корректно, но опять таки по умолчанию стартует от админа, как мне его ручками запустить от Usera?
Записан
zubr
Гость
« Ответ #3 : 17-10-2011 09:14 » 

Вар. 1. Войти в систему из под данного юзера и запустить
Вар. 2. Запускать из команды контекстного меню проводника (или другого ф. менеджера) Run As.
Записан
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 17-10-2011 09:47 » 

Спасибо, пробовал по вар. 1, из под User, странно, но в диспетчере задач процес отображался как запущенный от Admin. Нашел потом фичу на win7 - нажимаешь Shift и Right Button выскакивает менюшка, в пунктах есть Run AS Different User, я так полагаю это GUIшный вариант описанного тобой вар.2.
Записан
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 17-10-2011 10:07 » 

dark_rain, Твоя программа настолько большая и сложная, с кучей файлов, которые ей требуется записывать в системные каталоги? Думаю нет. И вот зачем нужна установка этой программы да еще и от админских прав? Если программе требуется config.xml и она его не находит, следует создать его с параметрами по умолчанию в папке пользователя под которым запускается программа, а не выходить из программы, оставляя пользователя думать, почему же эта программа не запускается. К тому же программы, которые не требуют установки гораздо удобнее в использовании: запустил и работает. Ну, а если уж ооочень хочется сделать установку для программы, то полно готовых и бесплатных решений, например NullSoft Install http://nsis.sourceforge.net/Main_Page и ему подобных.
Записан

Любимая игрушка - debugger ...
dark_rain
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #6 : 17-10-2011 11:23 » 

RuNTiME,  пользуюсь другим средством создания инсталляций, а насчет того что программа создает какие-либо файлы в папке, где установленна, это одна из самых распространенных ошибок, по которым Microsoft в последствии заворачивает сертификацию, тем более, если ты будешь под User'ом на Win7 попробуй что нибудь записать в каталог с установленной программой, предположим "...\Program Files\Programma\Cofig"? Ничего не выйдет. Тут вся заморочка с UAC я пологаю.
Записан
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 17-10-2011 11:31 » new

dark_rain, Я и не говорю писать в ту папку, где установлена программа. Создавай config.xml в C:\Users\<имя пользователя, от которого запущена программа>\AppData\Roaming при запуске программы.

Думаю для этого можно использовать функцию:  http://msdn.microsoft.com/en-us/library/ms891226.aspx
« Последнее редактирование: 17-10-2011 11:40 от RuNTiME » Записан

Любимая игрушка - debugger ...
zubr
Гость
« Ответ #8 : 17-10-2011 11:41 » 

RuNTiME, так в том и проблема, что если прога устанавливается из под админа, то и путь к C:\Documents and Settings\UserName\... будет админский.
Записан
zubr
Гость
« Ответ #9 : 17-10-2011 11:45 » 

Имхо, для определения юзерных каталогов, удобнее использовать SHGetSpecialFolderPath
Записан
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 17-10-2011 11:49 » 

zubr, Ну так я и пишу, что можно отказаться от установки... темболее от админа. А конфиг записывать при запуске программы (при необходимости) из под обычного юзера, тогда и путь будет к каталогу обычного юзера.

Цитата
Имхо, для определения юзерных каталогов, удобнее использовать SHGetSpecialFolderPath
Работаю последние несколько лет под linux'ом, так что могу и ошибаться насчет виндовых апи функций Улыбаюсь
Записан

Любимая игрушка - debugger ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines