Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Сокровищница
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  02:30[Войти] | [Зарегистрироваться]

Обсуждение материала
Обновление программы самой программой
Полный текст материала


Другие публикации автора: Евгений Бабенко

Цитата или краткий комментарий:

«... Постановка задачи: Автоматическое обновление программ клиента при внесении каких-либо изменений в эти программы. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]753.8%
 
  Ничего особенно нового и интересного
[2]430.8%
 
  Написано неверно (обязательно укажите почему)
[3]215.4%
 
Всего проголосовали: 13

Оценка стиля изложения

  Все понятно, материал читается легко
[1]770%
 
  Есть неясности в изложении
[2]330%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 10




Смотрите также материалы по темам:
[Установка ПО] [Удаленная установка] [Параметры процесса/приложения]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 21

29-08-2008 07:23
Если кого напрягает проблема %ProgramFiles% - просто поменяйте права доступа при создании каталога программы.
ps. Проблемы при запуске из-под "Пользователь" возникают у целого ряда программ, если предварительно не позаботиться о смене прав доступа по умолчанию.

Поменять права предстоит инсталлятору (если программа существует не в единственном экземпляре), что затруднит его написание, а , в случае удачи, обрушит безопасность системы. Админ спасибо вам не скажет.
Автоматическое обновление - всегда дыра в безопасности. Если уж оно вам сильно нужно, то делается это только через сервис с правами system. Т.е. файлы скачать прога должна сама, а затем сервис всё правильно расставит.
Кстати, в XP ограничения жестче. Там юзер ни чего не запишет и в корень диска.


14-07-2006 02:34
Несомненно, данная статья очень полезна для небольших проектов.
К сожалению, есть некоторые не очень приятные моменты:
- файл переписан на сервер, однако эта та же версия или старая (причен много)
Уже этот метод не работает. Я бы рекомендовал использовать алгоритм CRC32 или CRC64
Возможно отслеживать по номеру сборки. Но это уже детали
- если это серверное приложение, то необходимо остановить работу всех клиентов
- если изменяется структура БД, с которой работает клиент, то необходимо остановить все потоки
Как решение можно предложить программу составлять из динамически подключаемых DLL, и обновлять уже их. Хотя тоже есть некоторые неприятные моменты.
В любом случае нужно заранее определить, ЧТО ИМЕННО будет обновляться в программе и относительно этого выбирать способ обновления.


12-07-2006 01:28
Хотелось бы добавить, что Win98 переименовывать запущеные экзешники запрещает.


17-05-2006 11:41
Простое решение, как говорится, for most users. Если кого напрягает проблема %ProgramFiles% - просто поменяйте права доступа при создании каталога программы.
ps. Проблемы при запуске из-под "Пользователь" возникают у целого ряда программ, если предварительно не позаботиться о смене прав доступа по умолчанию.


06-03-2006 03:56
сообщение от автора материала
Да, действительно. С %ProgramFiles% засада. Мы не пользуемся инсталляторами. Копировали раньше вручную. Рабочий каталог лежит вне %ProgramFiles%.


06-03-2006 03:31
Особенно прикольно видеть, что проверено на NT,2000 и особых прав не нужно. Рекомендую автору попробовать ещё раз (на NTFS, а не на FAT) и убедиться, что простой юзер не имеет прав менять файл программы. Безопасность каталога %ProgramFiles% требует как минимум прав продвинутого юзера.


20-09-2005 10:17
Сейчас озаботился примерно этой же проблемой.
2Алексей Кошкин : Вы мощный апдейтер сами написали или используете готовое решение?
 AWOD


09-09-2005 01:15
Спасибо за "велосипед". Для небольших проектов по-моему очень удобное решение.
 RK


21-07-2005 01:26
сообщение от автора материала
В статье приведен код для самого простого варианта - обновление происходит только во время запуска программы.
При запуске программы проверяется наличие новой версии программы. Если такая есть - копируется. И только после следующего запуска программы - будет работать новая версия.
Но вам ничего не мешает доработать алгоритм -
в потоке сделать бесконечный цикл со Sleep(ом) и проверять периодически , при копировании новой версии принудительно закрывать приложение и т.д.


20-07-2005 03:40
если можно уточните пожалуйста один момент...
что произойдет в случае если в папку на сервере поместить апдейт программы в то время когда она уже запущена(для варианта обновления самой программой)... будет ли программа искать обновления или же для поиска обновлений необходимо перезапустить программу?


09-06-2005 06:29
Лично я сделал с двумя програмами, но обновление идет через ftp и проверкой версии. Правда коду намного больше получилось, но и удобства больше. У нас работа с програмой не только в разных сетях происходит.


04-06-2005 14:38
Прошу прощения, предыдущий пост - мой.
Алексей Кошкин


04-06-2005 14:36
Как тут уже правильно сказали, обычно кому это надо, тот сам уже всё придумал. С другой стороны, как говорит один неплохой программист, спортивное программирование и изобретение велосипеда в каждом проекте есть национальная черта (программистов). С третьей, нам-то за это платят...

Тема автообновления весьма интересна и важна. Особенно при отсутствии нормальных администраторов и/или квалифицированных пользователей (по роду работы занимаюсь сложными программными комплексами больших размеров, так что задача мне близка и понятна...) Исходя из своей практики, я бы выделил два, а точнее - три пути решения проблемы актуализации версии ПО. Первый: программный комплекс обновляет сам пользователь, когда сочтёт возможным. Второй - когда система сама занимается своей настройкой. Третий - когда система оценивает возможность продолжения работы и если работать нельзя - заставляет пользователя использовать первый путь =).

Дело осложняется тем, что программный комплекс на то и комплекс, что состоит из множества файлов, требующих обновления и часто зависимых от версий друг друга. Ещё сильнее путает работа с общей БД разных версий комплекса (да, и такое бывает, причём достаточно часто, к сожалению). Самый кошмар - когда система многоуровневая и распределённая ("Народ, зачем все так сложно - новая версия кладется в БД"? Ну-ну... версии, они разные бывают. Есть версии и версии...)

Собственно, обновление комплексов у нас обычно сводится к двум шагам: обновлению БД и обновлению программных модулей (к слову, оценивать по дате/времени чревато трудноопределимыми проблемами, а сверять версию ещё хуже, потому как девелоперы часто ленятся делать билд, а ограничиваются компиляцией, что, разумеется, недопустимо). Резюмируя - тема действительно большая и сложная, но это надо статью писать, а лень - можно сказать, что действительно хорошая подсистема обновления должна:

а) поддерживать он- и оффлайн хранилища
б) уметь проверять множество параметров (например, версию DCOM, BDE, драйвера БД, даже железо...)
в) поддерживать дерево версий (например, по операционным системам)
г) поддерживать инкрементальные апгрейды
д) и уж разумеется, работать в транзакционном режиме
е) поддерживать подсистемы, плагины, желательно исполнение скриптов,...

Кстати, по множеству требований апдейтер весьма коррелирует с инсталлятором. По идее, инсталляция это большое обновление с отсутствующей версии до актуальной =)

Сейчас я обычно использую для больших систем специальный весьма мощный апдейтер, который полностью (исходя из наших требований =) автоматизирует обновления, поддерживая деревья, взаимозависимости, FTP-хранилища и т.п., или другой, предельно простой. Этот второй просто держит на некоем сервере мастер-структуру ПО (понятно, файлы упакованы, шифрованы, индексированы) и по запросу клиента выполняет сверку версий рекурсивным сканированием и проверкой CRC. Используя некоторое количество ухищрений удаётся получить вполне приемлемую и прозрачную работу апдейтера через диалап-соединение на 70-ти мегабайтном комплексе из примерно 300 файлов.
Сообщение не подписано


03-06-2005 01:26
У нас в процедуру регистрации на сервере добавлен вызов лежащей на сервере программы.
Она по списку обновляемых приложений сверяет те что у юзера с лежащими на сервере, при необходимости - заменяет.
Итог - когда юзер сможет работать, всё уже обновлено.


02-06-2005 09:29
Народ, зачем все так сложно - новая версия кладется в БД, при ее обнаружения она скачивается в темповый файл, запускается с параметром навроде /update, основное приложениие закрывается, запущенная копия копирует свой бинарник в основной файл и запускает его, опосля чего темповый файл удаляется. И никаких расшареных папок, скриптов, апдейтеров и т.п.


01-06-2005 05:11
Необходимость публикации этой статьи действительно может вызвать некоторые сомнения - все, кому это может пригодиться, легко придумают такое сами.

А с технической точки зрения недостатков я не вижу, у меня такое работает на сотнях компьютеров и проблем я не знаю.

У моих клиентов есть сети как с нормальным администрированием, исходящим из принципа что сотрудники фирмы не недоумки, не враги и не хулиганствующие подростки, так и с параноидальным, когда пользователи спрашивают у сисадмина разрешение сходить в таулет.

Количество проблем в тех и других сетях примерно одинаковое, но работать приятней там, где тебе доверяют.

Зато во втором случае щеки у системных администраторов надуты гораздо красивее.
 kkk


01-06-2005 04:16
Можно использовать единый клиент для всех. Формы хранить в базе. Пример: ДПИ. www.parus-idel.ru
Очень удобно. Есть демо версия.


31-05-2005 10:36
Tricky, это несомненно велосипед. Но очень удобный в своей области. У нас локалка. Порядка 50 клиентов (использующих наши программы), около десятка АРМов. Изменения, патчи, добавления в программы идут постоянно. Постоянная нехватка времени. Обновление программ начинает отнимать много времени. Кого- нибудь забудишь обязательно. Вот и выкручиваемся.
Нормальные конторы - пока не видел в наших краях. Большие боссы на администрирование не выделяют людей и времени. Я думаю, эта проблема не только в нашей конторе.


31-05-2005 10:01
Много где эту тему поднимали. Все нормально.
Раньше (да и сейчас возможно) применялся bat-файл,
и не надо другой проги. Сейчас VBScript, хорошая вешь. Своя прога - это удобней, можно написать больше контроля.
Все это зависит от области применения, выполняемой задачи, и т.д.
В общем кому как удобно.
А если клиентов, работающих с вашим ПО, пусть тоже 20, но они на дальнем востоке, или еще где. Думаю поняли.
Да, есть инет. Можно предоставить здесь удобства.
Есть инет, проверяем новые данные (грубо говоря). Предложить проверку обновления (пример с доп. прогой).
Вариантов тут много.
А вот как работать с тем, когда в проге меняется просто обработка документа (на пример), т.е. не значительное изменение кода, но без него...
Обсудим.


31-05-2005 09:36
Изобретения велосипедов продолжаются?
В нормальных конторах у пользователя есть права только на запуск приложения.
Уж лучше рассмотреть вариант создания инсталляшки по 100%й технологии Windows Installer (в терминологии Install Shield: Basic MSI Project).
Честно говоря, очень не хочется расписывать, ПОЧЕМУ ТАК надо делать - список будет большой и содержать будет в основном банальные вещи.
Впрочем, для простых приложений и при отстутсвии нормального администрирования у потребителей, подход, описанный в статье, может быть приемлемым.


31-05-2005 06:38
Я бы еще выделил один способ обновления программы.
Правда для этого требуется другая программа. Суть, я думаю понятна: при старте приложения оно проверяет свою версию и версию файла в сети (мне кажется лучше проверять именно версию файла, а не дату файла). Если требуется обновление, то вызывается "программа-обновитель" (updater) и выполняет обновление. Основное приложение, естественно завершается. Т.к. этой дополнительной программе интерфейс не нужен, но исполняемый файл будет небольшой (десятки кб). После этого updater выдает мессагу что программу обновили (или не выдает - дело вкуса) и заново запускает основную программу. Может быть и не очень красиво, но в 2-х моих проектах в небольшой локальной сетке (~20 компов) это отлично работало.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Два кольца, два конца, посередине гвоздик.
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования