Релизы с нулевым временем простоя

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Релизы с нулевым временем простоя

Сообщение jangle » 21.02.2012 (Вт) 14:43

Я у себя внедрил такую технология на одном из проектов. Оказалось очень удобно для разработки и развертывания на любом количестве компов.
Во-первых зачем это все нужно. Есть большие проекты, которые разрабатываются месяцами или даже годами, или проект непрерывно разрабатывается и по-мере добавления функционала новые версии доставляется пользователю. Иногда с интервалом 2-3 версии в неделю. И вот возникает проблема, нужно установить измененную версию на машину пользователя. А если этих пользователей десятки и сотни, в пределах одной организации и нескольких территорий разбросанных в разных концах города. О ручном обновлении не может быть и речи. Это просто невозможно сделать силами нескольких программистов.

Поэтому: Режим обновления программы закладывается уже на этапе проектирования приложения.

Для этого, разбиваем приложение на 2 части. Первая которая запускается двойным кликом по-иконке приложения является загрузчиком новых версий.
Ее задача залезть в сетевую папку сервера и найти там обновленную версию приложения. А затем она просто сравнивает две версии, та что в сетевой папке и установленную у пользователя. Если версия в сетевой папке > установленной, загрузчик удаляет старую версию, и копирует новую из сетевой папки сервера, а затем запускает ее. Т.е. обновление происходит совершенно незаметно для пользователя. Разумеется можно усложнить загрузчик, сделать режим копирования по-списку, регистрации ActiveX и т.д. В результате получаем невероятно удобный механизм самообновления. Чтобы обновится, пользователю не нужно ничего деинсталировать, скачивать, а потом заново устанавливать. Достаточно просто запустить программу, и она сама скачает все обновления и запустится.
В общем рекомендую такой подход, для любых проектов с количеством пользователей больше трех. Для меня сразу решилась куча проблем с развертыванием.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Релизы с нулевым временем простоя

Сообщение Хакер » 21.02.2012 (Вт) 14:54

1) Во-первых, обязательно нужен сервис.
2) Во-вторых, неправильно без уведомления и согласования с пользователем скачивать и устанавливать что попало от его имени.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Релизы с нулевым временем простоя

Сообщение Proxy » 21.02.2012 (Вт) 15:33

Хакер писал(а):Во-вторых, неправильно без уведомления и согласования с пользователем скачивать и устанавливать что попало от его имени.

Так такое дело много где используется же и везде опционально.

Я вот только не вижу преимуществ работы с сетевыми папками перед использованием полноценного сервера обновления без каких-либо ftp и видимых со стороны клиента директорий вообще (который всегда доступен у разработчика и который можно установить в локалке самостоятельно как альтернативу при отсутствии доступа к глобальному серверу). Сервер, в отличие от обычной шары, может по умному работать с каждой версией и учитывать все её косяки, в т.ч. связанные с обновлениями же. Например с использованием принудительного поэтапного обновления, не допуская несовместимость между компонентами (в т.ч. отслеживая совместимость дополнений).
Follow the white rabbit.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Релизы с нулевым временем простоя

Сообщение jangle » 21.02.2012 (Вт) 15:46

Хакер писал(а):1) Во-первых, обязательно нужен сервис.


Что за сервис?

2) Во-вторых, неправильно без уведомления и согласования с пользователем скачивать и устанавливать что попало от его имени.


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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Релизы с нулевым временем простоя

Сообщение Хакер » 21.02.2012 (Вт) 15:50

jangle писал(а):Что за сервис?

«Служба» по-русски. Сущность в Windows, которой противопоставляют демонов в никсах.

jangle писал(а):О каком согласовании с десятками пользователей может идти речь?

«Вы действительно хотите установить обновление?».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Релизы с нулевым временем простоя

Сообщение jangle » 21.02.2012 (Вт) 15:57

Хакер писал(а):«Служба» по-русски. Сущность в Windows, которой противопоставляют демонов в никсах.


Зачем нужна служба? Вполне достаточно проверять версию в сетевой папке сервера.
Задержка на 100 мегабитной сетке не более секунды.

jangle писал(а):«Вы действительно хотите установить обновление?».


А что если пользователь будет жать кнопочку "Нет", в результате через несколько итераций билдов старые версии клиента перестанут работать с БД у которой изменится структура. Разумнее вообще не спрашивать пользователя об обновлении. Например WEB сайт не спрашивает клиента, надо ли ему обновить свои HTML странички, он просто показывает новую версию и все.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Релизы с нулевым временем простоя

Сообщение Хакер » 21.02.2012 (Вт) 16:03

jangle писал(а):Зачем нужна служба? Вполне достаточно проверять версию в сетевой папке сервера.

Затем что софт стоит в папке %ProgramFiles%. По-крайней мере нормальный софт должен стоять там. В системе рядовые пользователи не имеют прав W-прав доступа к %ProgramFiles%. По-крайней мере в нормальной организации.
В общем, процесс, запущенный от имени пользователя не сможет провести инсталляцию. Прав не хватит.
Тут уже остаётся два варианта — либо сервис, производящий установку (в конечном счёте это правильный вариант), либо работа процесса в сеансе текущего пользователя, но от имени админской учётки. Второй вариант плох хотя бы тем, что раз установка производится в тени, то пользователь не знает, что она производится. И по закону Мерфи как раз в момент установки ему захочется завершить свой сеанс, с самыми печальными для процесса установки последствиями.

jangle писал(а):А что если пользователь будет жать кнопочку "Нет", в результате через несколько итераций биолдов старые версии клиента перестанут работать с БД у которой изменится структура.

Ну, пользователь не будет жать «Нет» постоянно. В конечном счёте, если он продемонстирует тенденцию жать именно эту кнопку, он дойдёт до того, что клиентская версия перестанет работать с серверной, и он будет вынужден нажать «Да».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Релизы с нулевым временем простоя

Сообщение jangle » 21.02.2012 (Вт) 16:09

Хакер писал(а):Затем что софт стоит в папке %ProgramFiles%. По-крайней мере нормальный софт должен стоять там. В системе рядовые пользователи не имеют прав W-прав доступа к %ProgramFiles%. По-крайней мере в нормальной организации.
В общем, процесс, запущенный от имени пользователя не сможет провести инсталляцию. Прав не хватит.


В %ProgramFiles% стоит только загрузчик, он запускает и обновляет программу лежащую в C:\Documents and Settings\All Users\Application Data\MySOFT
по крайнем мере весь коммерческий софт так и поступает. Туда могут писать все юзеры.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Релизы с нулевым временем простоя

Сообщение Хакер » 21.02.2012 (Вт) 16:10

jangle писал(а):он запускает и обновляет программу лежащую в C:\Documents and Settings\All Users\Application Data\MySOFT

Образец кривоты.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Релизы с нулевым временем простоя

Сообщение jangle » 21.02.2012 (Вт) 16:18

Хакер писал(а):Образец кривоты.


В чем кривота? Так все антивирусы обновляются, через %All Users\Application Data%
Открой на своем компе эту папку, и посмотри сколько там установлено софта.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Релизы с нулевым временем простоя

Сообщение iGrok » 21.02.2012 (Вт) 16:36

jangle писал(а):
Хакер писал(а):Образец кривоты.


В чем кривота? Так все антивирусы обновляются, через %All Users\Application Data%
Открой на своем компе эту папку, и посмотри сколько там установлено софта.

ТАК обновляется только гуглхром. Антивирусы там хранят данные, а не сам софт.
label:
cli
jmp label


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

    TopList