![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Что тут описывать?....
И так вроде понятно Программа проверила наличие обновления Загрузила его на локальную машину .... а вот дальше финт ушами не проходит ибо заменить файлы находящиеся в "програм филей не получается" обидно... возможно соглашения по этому поводу есть? ЗЫЖ веть такие монстры как AVP NOD OutPost они то обновляются... ЗЗЫЖ прозьба далеко не посылать, только оттуда Это сообщение отредактировал(а) drkot - 2.9.2009, 03:55 -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
drkot, У монстров отдельный модуль обновления имееца...Т.е, отдельный экзешник, который стартует, качает, закрывает монстра, копирует, запускает монстра и кончает жизнь самоубийством
|
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
~FoX~, поражаюсь вашей эрудиции!
А то что стоит ограничение на запись в папку програм файлс это пустяк... Или Вы думаете что есть разница в том, где производить проверку и загрузку? Или это влияет на разрешения? Или Вы думаете что нет способов (абсолютно легальных) перезаписать эхэшник "из самого себя"? Пардон, эмоции. ЗЫЖ не люблю умников, сам такой. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Ну, есть несколько вариантов. Вариант самый простой: при запуске программы ломимся проверять обновление. Если нашли - показываем сообщение пользователю, мол: есть обновки, изменено то-то, сё-то, устанавливаем? Если пользователь даёт добро - проверяем: запрещена ли нам запись в нашу папку. Если да, то перезапускаемся с элевацией, нет - обновляем сразу.
Вариант посложнее: пишем отдельный апдейтер (вариант - основной exe, но с параметрами) и вешаем его в планировщик, на запуск раз в неделю. Плюс под системной учёткой, если программа устанавливалась в защищённую папку (под текущей - если в обычную). Разумеется, заносить такую запись должен установщик программы. Возможен выбор между вариантами, смотря по тому, какое обновление хочет пользователь - по запросу или автоматическое. Ссылка в тему. P.S. Если ещё и совсем примитивный вариант 3: проверяем, есть ли обновление, и, если есть, то показываем мессагу: новая версия, для скачивания пройдите по ссылке. Daemon Tools, например, так деляют. Лично я этот вариант ненавижу, поэтому не рассматриваю ;) -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| aliks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.12.2008 Репутация: нет Всего: 1 |
У TMS есть специальный компонент для обновлений. При запуске проги, проверяется наличие обновления, если обновление есть, автоматом подменяется экзешник и прога запускает в нормальном режиме. Есть в компоненте режимы обновления как и для локальной сети так и для инета. В течении 5 лет использую его для обновления прог в локальной сети - проблем никогда не было - рекомендую. Использовал его в D6,D7,D2007
--------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Ну поделитесь с общественностью, как же он работает с UAC
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Не хорошо так поступать....Вы спрашивали как обновить екзешник, а не как получить права на запись в защищенную папку, к тому же программ файлз расшарен под всех, кроме ограниченых, соответственно....А поправить первый пост и потом опустить нижеподписавшегось, это мерзко!
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Можно попробовать задействовать UAC Component (предупреждаю сразу - сам не пробовал, т.к. не было необходимости).
Вариант стандартный (с этим компонентом): экзешник скачивает обновление>спрашивает пользователя о повышении прав> в зависимости от ответа либо обновляемся (получили права админа) либо нет - не получили их. Можно апдейтер "засадить" в сервис, сервисы с аккаунтом Local System имеют доступ к папке Program Files. Можно задействовать планировщик (где-то мелькала тема о враппере планировщика на Delphi, но сейчас не могу найти), как сказал CodeMonkey. Можно попробовать отложенную замену файлов MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT (не проверял, сработает ли, но скорее всего нет - доступа к реестру не будет...) |
|||
|
||||
| CodeMonkey |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
В JCL есть.
Проскакивало на sources.ru. Ещё ссылка в тему. Добавлено через 1 минуту и 3 секунды
Совет: не надо так делать. Зачем мне крутящийся сервис, который выполняет работу два раза в месяц? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||
|
|||||||
| drkot |
|
||||||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Ничто не вечно под Луной ~FoX~,
Прошу прощения, внимательно изучил свой пост и пришел к выводу, что Вы, уважаемый, просто не умеете читать. Вы, повнимательнее посмотрите на даты сообщений. Из них легко сделать вывод, что отредактирован пост бул значительно раньше, чем Вы его увидели. CodeMonkey,
Именно такое решение и работает практически во всех программах под висту. А некоторый инсталяторы (не буду показвать пальцем) реализуют этот механизм внутри себя и обновляют программы "независимо от самой программы" (каламбур) Итог: Нормального решения НЕТ. Как таковой механизм автоматического обновления миную юзера неприменим (для мелкого софта) Наиболее уместен механизм диалога в котором пользователь хотябы запустит инсталяцию с апдейтом (а то и скачает) Обновление программ юзерами под юзером не имеющим админских прав НЕВОЗМОЖНО ЗЫЖ Все сказанное относится к легальным и честным методам. ДОБРО ПОЖАЛОВАТЬ В НОВЫЙ МИР VISTA Те кто еще не сталкивался готовтесь курить маны (их много на всех хватит) Это сообщение отредактировал(а) drkot - 28.9.2009, 23:22 -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
||||||
|
|||||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Вот из-за этого люди и пишут твикеры. Представь, что все разработчики начнут писать сервисы для обновления своих программ. О последствиях, думаю, говорить не надо. И так все ясно. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Эмм... нормальное - это с блек-джеком и голыми шлюхами? Будьте реалистом. Добавлено через 9 минут и 38 секунд P.S. Совершенно не понимаю причём тут Vista. В любой операционке, где работают "по-нормальному" (не под админами), обновить программу может только администратор. Vista ничем не отличается в этом плане от остальных (речь идёт не только о Windows). Единственное отличие, даже, преимущество - это UAC. Вы можете проверить обновление, если оно есть, то перезапустить себя с элевацией. Всё, что надо будет сделать пользователю - подтвердить разрешение. Вообще все нормальные программы (а не собранные за пять минут на коленке) должны заботиться о будущих обновлениях во время установки (которое проводится установщиком с правами администратора) - например, поместив себя на периодический запуск в планировщик заданий (под административной учёткой). Не хотите заморачиваться в плане безопасности - ставьте программу в папку без защиты (не в Program Files, или установщик поменяет права при установке), используйте виртуализацию, отключайте UAC (понятно, что всё это криво и не рекомендуется). -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |