Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2015, 06:03   #1
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию Автоматическое обновление программы. Варианты.

Здравствуйте.

В очередной раз столкнулся с задачей, являющейся типовой для каждого программиста, приложением которого пользуется не один человек - автоматическое обновление программы.

Моя программа работает в закрытой локальной сети предприятия. Сеть работает досаточно устойчиво, потому много лет назад для её собратьев, работающих в локальной сети была реализована следующая схема:

install.exe лежит в расшаренной сетевой папке, папка открыта на общий доступ, на сетевой машине отключен гостевой вход

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

Вопрос вот в чём. Нарисовали системку, которой пользуются уже десятки человек, в ближайших планах сотни, и далее до тысячи-двух чел.

Вопрос в следующем, в сетевых технологиях я не силён, поэтому меня немного напрягает даже функция FileExists, которой скармливаю сетевой путь, и которую вызываю по таймеру раз в три минуты. Где и на какие грабли можно напороться? Может, подобной схемой я тупо могу завесить программу?

в Сети масса более универсальных решений, с использованием http-доступа, соответсвенно, компонентов idHTTP и иже с ними.

Вопрос, какая схема в моём случае лучше? Возможны ли проблемы при прямом обращении к открытому сетевому ресурсу? Особенно при возрастании количества пользователей, хоть и до непомерного количества, но до тысячи?

Спасёт ли доступ по http или ftp или ещё чему-то там от возможных проблем? Как правильно организовать обновление?

Интересует именно стабильность как работы программы, так и самих обновлений.
AnTe вне форума Ответить с цитированием
Старый 21.09.2015, 07:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Твоя программа обязательно требует инсталляции?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2015, 07:54   #3
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Твоя программа обязательно требует инсталляции?
В принципе, нет. Инсталлятор только копирует систему папок в program files. Щас проверил - даже в реестр ничего не пишет.

В подавляющем большинстве случаев достаточно перекопировать только exe (который уже весит 24 мб), но иногда необходимо добавление ещё нескольких файлов, поэтому поначалу даже было предусмотрено два варианта установки (нужный вариант определяется автоматически), но потом забили, и инсталлятор запускался каждый раз, благо пролетает процесс быстро.

Вопрос понятен. В общем, думаю, можно ограничиваться каждый раз только заменой exe-файла

кстати, непонятнки мои после Вашего вопроса теперь можно конкретизировать
1. проверка наличия обновления (по таймеру, раз в две-три минуты), реализуемая в проверки даты-времени изменения файла "История изменений", лежащего в сетевой папке - чем-либо может быть чревата?
2. собственно, сам запуск процесса обновления, из расшареной сетевой папки...

ну а как пара десятков человек одновременно ломанутся...?

Последний раз редактировалось AnTe; 21.09.2015 в 08:00.
AnTe вне форума Ответить с цитированием
Старый 21.09.2015, 08:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
проверка наличия обновления (по таймеру, раз в две-три минуты), реализуемая в проверки даты-времени изменения файла "История изменений", лежащего в сетевой папке - чем-либо может быть чревата?
Ничем. Не напряг для современных компов.
Цитата:
сам запуск процесса обновления, из расшареной сетевой папки...
А нужно оно?

Я у себя в КБ делал так: Прога выкладывается на закрытую по доступам на запись папку. На клиента выношу ярлык или экзешник, который запускает методом ShellExecute() к примеру с расшарки. Короче все клиенты тупо запуск делают из расшарки, и никто себе ничего не качает.
Если мне нужно обновиться, я на сервак в некую папку кидаю обновки, и в планировщике задач ставлю на полночь копирование обновок в ту расшарку.
Вуаля - прогу утречком уже обновлена.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2015, 09:04   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Ничего не трогайте и не парьтесь.
Я бы даже увеличил период проверки - какой смысл проверять каждые три минуты... Каждые 30 и то часто, раз в неделю - самое то.

Грабли одни и те же, хоть по ftp, хоть по http, хоть что - что будет если все будут обновлятся *одновременно*, но тут протокол вам не помощник.
waleri вне форума Ответить с цитированием
Старый 21.09.2015, 09:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Че его вообще по таймеру проверять? В момент запуска программы обычно вполне достаточно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.09.2015, 11:25   #7
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Случается исправление критических ошибок. К тому же, юзеры (идёт процесс внедрения) просто прутся от того, что как только они написали важную писульку (случается и такое) в багтрекер (реализовано в софте) - так сразу, через пару минут обнова, где это замечание учтено. Лепота!

Цитата:
Сообщение от waleri Посмотреть сообщение
Грабли одни и те же, хоть по ftp, хоть по http, хоть что - что будет если все будут обновлятся *одновременно*, но тут протокол вам не помощник.
ок, спасибо!
да главное чтобы висяков никаких не возникло, я весь народ вокруг убедил, что БД работает на кластере, бэкапы "на горячую", то есть она даже не встанет никогда (ттт), не то, чтобы упасть, и тем более их данные не потеряются, мол не храните у себя копии документов - всегда их с БД откроете

а вот будет весело, если в какой-то день повиснет намертво не база, а клиент, и именно по причине отсутствия где-то там сетевого соединения

в отдельный поток, что ли, выделить опрос

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

Последний раз редактировалось Stilet; 21.09.2015 в 11:44.
AnTe вне форума Ответить с цитированием
Старый 21.09.2015, 11:45   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Лепота!
Надо этих Узеров отучать от благ цивилизации
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое обновление программы 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