|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.09.2015, 06:03 | #1 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Автоматическое обновление программы. Варианты.
Здравствуйте.
В очередной раз столкнулся с задачей, являющейся типовой для каждого программиста, приложением которого пользуется не один человек - автоматическое обновление программы. Моя программа работает в закрытой локальной сети предприятия. Сеть работает досаточно устойчиво, потому много лет назад для её собратьев, работающих в локальной сети была реализована следующая схема: install.exe лежит в расшаренной сетевой папке, папка открыта на общий доступ, на сетевой машине отключен гостевой вход программа (при старте и по таймеру, во время работы) проверяет наличие новой версии файла, если файл новой версии - запускает инсталлятор и закрывается сама. На самом деле, всё устроено немного прикольнее: в той же папке лежит файл "Последние изменения", программа его с текущим, если файл увеличился - в сообщении пользователю выводит список новых изменений, с вопросом, обновлять или нет Вопрос вот в чём. Нарисовали системку, которой пользуются уже десятки человек, в ближайших планах сотни, и далее до тысячи-двух чел. Вопрос в следующем, в сетевых технологиях я не силён, поэтому меня немного напрягает даже функция FileExists, которой скармливаю сетевой путь, и которую вызываю по таймеру раз в три минуты. Где и на какие грабли можно напороться? Может, подобной схемой я тупо могу завесить программу? в Сети масса более универсальных решений, с использованием http-доступа, соответсвенно, компонентов idHTTP и иже с ними. Вопрос, какая схема в моём случае лучше? Возможны ли проблемы при прямом обращении к открытому сетевому ресурсу? Особенно при возрастании количества пользователей, хоть и до непомерного количества, но до тысячи? Спасёт ли доступ по http или ftp или ещё чему-то там от возможных проблем? Как правильно организовать обновление? Интересует именно стабильность как работы программы, так и самих обновлений. |
21.09.2015, 07:00 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Твоя программа обязательно требует инсталляции?
I'm learning to live...
|
21.09.2015, 07:54 | #3 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
В принципе, нет. Инсталлятор только копирует систему папок в program files. Щас проверил - даже в реестр ничего не пишет.
В подавляющем большинстве случаев достаточно перекопировать только exe (который уже весит 24 мб), но иногда необходимо добавление ещё нескольких файлов, поэтому поначалу даже было предусмотрено два варианта установки (нужный вариант определяется автоматически), но потом забили, и инсталлятор запускался каждый раз, благо пролетает процесс быстро. Вопрос понятен. В общем, думаю, можно ограничиваться каждый раз только заменой exe-файла кстати, непонятнки мои после Вашего вопроса теперь можно конкретизировать 1. проверка наличия обновления (по таймеру, раз в две-три минуты), реализуемая в проверки даты-времени изменения файла "История изменений", лежащего в сетевой папке - чем-либо может быть чревата? 2. собственно, сам запуск процесса обновления, из расшареной сетевой папки... ну а как пара десятков человек одновременно ломанутся...? Последний раз редактировалось AnTe; 21.09.2015 в 08:00. |
21.09.2015, 08:58 | #4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Я у себя в КБ делал так: Прога выкладывается на закрытую по доступам на запись папку. На клиента выношу ярлык или экзешник, который запускает методом ShellExecute() к примеру с расшарки. Короче все клиенты тупо запуск делают из расшарки, и никто себе ничего не качает. Если мне нужно обновиться, я на сервак в некую папку кидаю обновки, и в планировщике задач ставлю на полночь копирование обновок в ту расшарку. Вуаля - прогу утречком уже обновлена.
I'm learning to live...
|
||
21.09.2015, 09:04 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Ничего не трогайте и не парьтесь.
Я бы даже увеличил период проверки - какой смысл проверять каждые три минуты... Каждые 30 и то часто, раз в неделю - самое то. Грабли одни и те же, хоть по ftp, хоть по http, хоть что - что будет если все будут обновлятся *одновременно*, но тут протокол вам не помощник. |
21.09.2015, 09:43 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Че его вообще по таймеру проверять? В момент запуска программы обычно вполне достаточно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
21.09.2015, 11:25 | #7 | |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Случается исправление критических ошибок. К тому же, юзеры (идёт процесс внедрения) просто прутся от того, что как только они написали важную писульку (случается и такое) в багтрекер (реализовано в софте) - так сразу, через пару минут обнова, где это замечание учтено. Лепота!
Цитата:
да главное чтобы висяков никаких не возникло, я весь народ вокруг убедил, что БД работает на кластере, бэкапы "на горячую", то есть она даже не встанет никогда (ттт), не то, чтобы упасть, и тем более их данные не потеряются, мол не храните у себя копии документов - всегда их с БД откроете а вот будет весело, если в какой-то день повиснет намертво не база, а клиент, и именно по причине отсутствия где-то там сетевого соединения в отдельный поток, что ли, выделить опрос да, конечно же, базовый вариант - сделать обнову непосредственно из БД, но что-то переписывать сотню-другую надёжно работающих строк говнокода, ломящегося по сетке к шаре - нет желания. Последний раз редактировалось Stilet; 21.09.2015 в 11:44. |
|
21.09.2015, 11:45 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автоматическое обновление программы | dubailand | Общие вопросы Delphi | 9 | 02.01.2015 12:20 |
Автоматическое обновление разработанной программы | Programmer_St | C# (си шарп) | 8 | 03.12.2012 16:26 |
Автоматическое обновление программы | Paul Hindenburg | Работа с сетью в Delphi | 23 | 06.09.2011 15:51 |
Автоматическое обновление | ogololobov2009 | Microsoft Office Excel | 1 | 27.01.2011 19:19 |
Автоматическое обновление программы. | Casper-SC | Общие вопросы .NET | 0 | 22.05.2010 20:41 |