автообновление ПО
Модератор: Модераторы
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
автообновление ПО
автообновлялку для своего ПО я писал еще давно под вендой.
там все было просто
1, качаешь новую версию.
2, переименовываешь paramstr(0) в paramstr(0).old
3, распаковываешь обновление
4, запускаешь его
5, сам выходишь.
если надо было сохронять какие-то настройки при выходе, тогда между 3 и 4 из ресурсов запускалась мелкий прог
которая дожидалась выхода первой программы и запускала новую.
в линуксе же процессы зависимы и все что я запускаю закрывается при выходе первого процесса.
при наличии ДЕ можно запустить от его имени, а при отсутствии ?
выходит варианта два.
1, использовать "запускатор" который при выходе процесса просто его перезапускает. и можно пропускать 4 шаг. (минусы, это прийдется везде переделывать структуру запуска)
2, запускать ПО по флагу при выходе из ПО. а первоначальный просто прятать. недостаток будет в том что процесс будет висеть в памяти,но даже при обновлении раз в неделю(у меня обычно реже) думаю что это не страшно и все компы перужаются хотябы раз в пару месяцев.
может еще какие будут предложения ?
там все было просто
1, качаешь новую версию.
2, переименовываешь paramstr(0) в paramstr(0).old
3, распаковываешь обновление
4, запускаешь его
5, сам выходишь.
если надо было сохронять какие-то настройки при выходе, тогда между 3 и 4 из ресурсов запускалась мелкий прог
которая дожидалась выхода первой программы и запускала новую.
в линуксе же процессы зависимы и все что я запускаю закрывается при выходе первого процесса.
при наличии ДЕ можно запустить от его имени, а при отсутствии ?
выходит варианта два.
1, использовать "запускатор" который при выходе процесса просто его перезапускает. и можно пропускать 4 шаг. (минусы, это прийдется везде переделывать структуру запуска)
2, запускать ПО по флагу при выходе из ПО. а первоначальный просто прятать. недостаток будет в том что процесс будет висеть в памяти,но даже при обновлении раз в неделю(у меня обычно реже) думаю что это не страшно и все компы перужаются хотябы раз в пару месяцев.
может еще какие будут предложения ?
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Отказаться от автообновления. Потом с пакетными менеджерами геморрой будет.
Добавлено спустя 1 минуту 18 секунд:
Выделить то, что обновлять реально надо в подгружаемые/выгружаемые библиотеки.
Добавлено спустя 1 минуту 18 секунд:
Выделить то, что обновлять реально надо в подгружаемые/выгружаемые библиотеки.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
пакеты мне не грозят, узкоспециализированое ПО + работает с БД.
то есть теоритически можно былобы собрать пакет прописать везде репозаритарии, и расписание на обновление.
но
1, обновлять всю систему не хочется, если сети с десятками компов с зоопарком машин и версий убунты
2, обновлять клиентов надо только после обновления БД. если обновятся раньше тупо не смогут работать.
3, пакетные менеджерыпри обновлении не будут перезапускать ПО
а про выгружаемые библиатеки, не стоит оно того.
во первых выделить что-то трудно
во вторых очень часто это касается ГУИ, а гуй и so в паскеле трудно совмещаются.
то есть теоритически можно былобы собрать пакет прописать везде репозаритарии, и расписание на обновление.
но
1, обновлять всю систему не хочется, если сети с десятками компов с зоопарком машин и версий убунты
2, обновлять клиентов надо только после обновления БД. если обновятся раньше тупо не смогут работать.
3, пакетные менеджерыпри обновлении не будут перезапускать ПО
а про выгружаемые библиатеки, не стоит оно того.
во первых выделить что-то трудно
во вторых очень часто это касается ГУИ, а гуй и so в паскеле трудно совмещаются.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Attid писал(а):а гуй и so в паскеле трудно совмещаются
Сказал бы уж «в Лазарусе»... Паскаль-то тут причем?
так блокировок исполняемых файлов в линуксе нет или я не прав? - можно обновляться без выхода.
а перезапускаться можно например шеллом
а перезапускаться можно например шеллом
Код: Выделить всё
fpexec('/bin/sh -с "'+ParamStr(0)+' &"'); // или что-то вроде того (точный синтаксис не помню)- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Иван Шихалев писал(а):Сказал бы уж «в Лазарусе»... Паскаль-то тут причем?
в МСЕ я тоже не рискну это делать =)
v-t-l писал(а):а перезапускаться можно например шеллом
получится цепочка
ПО-шелл-ПО и при выходе первого вся цепь закроется.
v-t-l писал(а):можно обновляться без выхода.
проблем обновится нет, есть проблема перезапуска.
Attid писал(а):получится цепочка
ПО-шелл-ПО и при выходе первого вся цепь закроется.
А амперсанд "&" в конце не помогает?
Добавлено спустя 8 часов 5 минут 15 секунд:
Странное поведение:
исполняемый файл проекта назвал restart1, рядом положил restart1.new (в тот же проект на форму налепил Label, скомпилил и переименовал бинарник).
Код: Выделить всё
uses BaseUnix;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
FpExecv(paramstr(0)+'.new', nil);
end;
Запускаю restart1, нажимаю кнопку Button1 - форма от restart1 исчезает, вместо нее появляется форма из restart1.new, но в списке процессов виден только restart1, restart1.new не наблюдается. Для обновлений - замечательно подходит, но не исправят ли это в будущем?
Вру, что не виден: gnome-system-monitor его по-прежнему показывает как restart1, а ps вот как отрабатывает:
до нажатия на кнопку
Код: Выделить всё
root@vitalin:~# ps aux | grep -i restart1
vital 6174 0.5 1.1 21356 10832 ? S 19:06 0:00 /home/vital/PROGR/lazarus/projects/restart1/restart1
root 6515 0.0 0.0 3016 844 pts/1 R+ 19:07 0:00 grep -i restart1
после нажатия
Код: Выделить всё
root@vitalin:~# ps aux | grep -i restart1
vital 6174 1.0 1.2 21356 11024 ? S 19:06 0:00 [restart1.new]
root 6662 0.0 0.0 3016 844 pts/1 R+ 19:07 0:00 grep -i restart1З.Ы.
Код: Выделить всё
root@vitalin:~# uname -a
Linux vitalin 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux