:: Visual Foxpro, Foxpro for DOS
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Ну а почему принципиально нельзя обновиться без перезапуска?

Например при старте прога всегда запускает код, проверяющий апдейты. Этот код апдейтит основное тело проги на диске и потом стартует его.
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
spinz
Этот код апдейтит основное тело проги на диске и потом стартует его.
Это и написал Таран во втором посте


------------------
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Не так. Он написал "Dogovor запускает update и сама закрывается."

А я предлагаю запускать update до Dogovor
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
spinz
Ну а почему принципиально нельзя обновиться без перезапуска?
Например при старте прога всегда запускает код, проверяющий апдейты. Этот код апдейтит основное тело проги на диске и потом стартует его.

А, чота туплю. Апдейт запущенной программы в памяти, действительно, выглядит трудноосуществимым
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
spinz
Не так. Он написал "Dogovor запускает update и сама закрывается."
А я предлагаю запускать update до Dogovor
Ну просто надо уметь читать)))
Он и предлагал, то что ты написал.
Просто сформулировал не однозначно)


------------------
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Аспид
Ну просто надо уметь читать)))
Он и предлагал, то что ты написал.
Просто сформулировал не однозначно)

Может лучше уметь писать?

Что-то не припомню, чтобы посты, например, ИК вызвали неоднозначное толкование
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
spinz
Ну а почему принципиально нельзя обновиться без перезапуска?
Например при старте прога всегда запускает код, проверяющий апдейты. Этот код апдейтит основное тело проги на диске и потом стартует его.

Ну да, а если запущено несколько экземпляров родительской проги, то что код при старте проапдейтит?

Хорошо, нашли мы все родительские проги, послали им сообщение на закрытие, ... но не все проги закрылись (банально держит модальное окно "Сохранить данные"), что выбрать "рубануть" процесс для того что бы ехе-шник обновился или удовлетворить юзера дать ему выбор?

И "до кучи", иногда нельзя под пользовательским аккаунтом провести обновление, надо запускать обновлялку под выделенной учетной записью (ну такая политика безопасности).

PS собственно, что хотел сказать, что обновление не совсем тривиальная задача.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Аспид
spinz
Не так. Он написал "Dogovor запускает update и сама закрывается."
А я предлагаю запускать update до Dogovor
Ну просто надо уметь читать)))
Он и предлагал, то что ты написал.
Просто сформулировал не однозначно)

Спасибо за внимание. ;)

У меня было так:
Софтина лежит на локальной машине.
При старте главный EXE читает некоторый локальный файл возле себя типа .ini или .xml (~50 байт).
И аналогичный на файл-сервере.
При обнаружении чего-то там запускается обновление.
Обновляется не только сам EXE, но и еще малеха. В частности картинки и пр... флаги стран, гербы городов и пр... Ибо каждый раз тащить их с файл-сервера... ну лишнее это.

Реализация через запуск update, а из него уже главного EXE при каждом старте не делается.
Дабы избежать накладных расходов на старт нового процесса. Т.е. в большинстве случаев работает именно главный файл.
Также некоторый "пейджер" был. Т.е. рассылка уведомления о необходимости рестарта.
В каких-то "поделках" первый запуск с любого компа инициировал WEB-запрос для поиска новой версии.
Она (новая версия) собственно и копировалась на файл-сервер в главную папку приложения. А потом растаскивалась по локальным машинам по вышеприведенной схеме.
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
spinz
Не так. Он написал "Dogovor запускает update и сама закрывается."
А я предлагаю запускать update до Dogovor
Разница не велика. Просто запуск update ВСЕГДА, с последующим запуском main более накладный вариант по ресурсам (создание, работа и завершение доп.процесса), нежели отработка ВСЕГДА проверочного кода в main и запуск update только "если надо", а если не надо - просто в том же процессе продолжаем трудиться.
spinz
Апдейт запущенной программы в памяти, действительно, выглядит трудноосуществимым
Только если сама эта программа (ну и система программирования на которой она написана) не предусматривает соответствующие механизмы. Почитай про ksplice как вариант... Для фокса, теоретически, можно выгружать "модули" (например .app, не говоря уж про "отдельноживущие" frx/scx/fxp) после чего заменять их на новые версии и продолжать работу. Сложность будет лишь в замене "корневого" модуля, ну и в "сохранении и восстановлении состояния" - чтобы закрыть и заново открыть активную на момент обновления форму, к примеру...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
spinz
Может лучше уметь писать?

Что-то не припомню, чтобы посты, например, ИК вызвали неоднозначное толкование

Да ладно уж.
Вопрос то собственно "детский". У человека был вообще первый пост.
Зачем его перегружать лишними деталями?

P.S. ну собственно...
Нет у меня глобальных разногласий с великим гуру, Игорем.
Пред. два поста вроде технически не конфликтуют.



Исправлено 1 раз(а). Последнее : Taran, 18.01.18 16:02
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Igor Korolyov
Почитай про ksplice как вариант

Да почитал уже, не сомневайся, просто реализация пока неясна
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Taran
Реализация через запуск update, а из него уже главного EXE при каждом старте не делается.
Дабы избежать накладных расходов на старт нового процесса.
Да какие там расходы?
Я например, что через update, что напрямую, органолептически, разницы не замечаю. (если нет обновления)
40 строк кода, и вся проблема


------------------
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Аспид
Taran
Реализация через запуск update, а из него уже главного EXE при каждом старте не делается.
Дабы избежать накладных расходов на старт нового процесса.
Да какие там расходы?
Я например, что через update, что напрямую, органолептически, разницы не замечаю. (если нет обновления)
40 строк кода, и вся проблема

Не вопрос. Ты и раньше всегда в адеквате насчет кода. Не буду спорить. ;)
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Зря, в спорах рождается истина, а стало быть правда.

Даже если и нет особого предмета для спора, всегда лучше что-то сказать для развития дискусии
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
spinz
Зря, в спорах рождается истина, а стало быть правда.
Даже если и нет особого предмета для спора, всегда лучше что-то сказать для развития дискусии

Хмм. Мне кажется что отнюдь. Истина не в спорах. В спорах грибы. ;)

Уезжаю я. Люблу. Целуйу. Не спинза канечна. Каровку, Надюшу, Татьяну. Чучелку эту нашу маленькую красивенькую, ангелку.
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Аспид
Да какие там расходы? Я например, что через update, что напрямую, органолептически, разницы не замечаю.
"Не замечаю" <> нет.
Да, на мощных современных компах создание нового процесса не настолько медленное и печальное как на каких-нить 15-летней давности. Тем более что для фокса заметное время из всего времени на "старт проги" займёт считывание в память библиотек рантайма - а т.к. вторая прога запускается сразу же после первой, то скорее всего библиотеки не успеют вытесниться из памяти/кэша, а значит старт второй фокс-проги после первой уже заметно веселее произойдёт... Плюс сама логика этих "40 строк кода" запросто может занять в несколько раз больше времени чем системная часть "старта/закрытия проги" - скажем открыть по сетевому пути файлик и прочитать там всего одну строчку с номером версии - одна команда FILETOSTR() - но запросто может занять и 2 и даже все 5 секунд (если сеть и файл-сервер на сверхбыстрые). На фоне этого 0.5 секунд на создание и убиение процесса совсем "незаметны".
Но то что потери есть, это несомненно. И для некоторых случаев - скажем сильно перегруженная процессами машина, или особо тупой АВ это уже будет заметно даже "на глаз".
Но я ещё раз уточню - эти варианты "в принципе" равноценны. Кое что лучше в одном, кое что в другом (скажем установить прогу БЕЗ контроля версий - одно дело просто main.exe кинуть и ярлык на него, и совсем другое ещё и где-то файлик рядом положить который код в main.exe проверяет на предмет надобности в обновлении, настройки прописать - путь к этому файлику, плюс терять каждый раз по 0.1 секунды при том что заранее известно что никаких обнов нет и не предвидится )
P.S. У нас и тот и другой варианты применялись - и ещё вариант когда "update.exe" на самом деле это батник динамически сгенерированный из main.exe с командами копирования "только нужных" (более свежих) файлов из сетевой папки Видать с xcopy у автора не заладилось, так он отдельных copy /y понаделал на каждый заменяемый файл...


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 18.01.18 17:47
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Igor Korolyov
Видать с xcopy у автора не заладилось, так он отдельных copy /y понаделал на каждый заменяемый файл...

Профессионал! Мое увожение
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну, дурное то дело нехитрое

FOR ln1 = 1 TO ALEN(aFilesToUpdate,1)
cScript = cScript + "copy /y " + aFilesToUpdate[ln1,1] + " " + aFilesToUpdate[ln1,2] + CRLF
ENDFOR
STRTOFILE(cScript, cFile)
RUN /N &cFile
QUIT

По пропагандируемым тут критериям качества кода "работает - значит хорошая" решение вполне себе


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
spinz

Сообщений: 5263
Дата регистрации: 21.01.2016
Igor Korolyov
По пропагандируемым тут критериям качества кода "работает - значит хорошая" решение вполне себе

Справеддливости ради, этого критерия придерживаются практически везде
Ratings: 0 negative/0 positive
Re: Закрыть запущенную программу
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
spinz
Igor Korolyov
Видать с xcopy у автора не заладилось, так он отдельных copy /y понаделал на каждый заменяемый файл...

Профессионал! Мое увожение
точно профи, ведь когда-то xcopy и не было
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика