Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
Приветствую всех!
Некое фоксовое приложение, собранное как exe-модуль, запускается всеми пользователями из одной сетевой директории. Но встает такая проблема - если нужно обновить модуль, приходится выгонять всех из программы (а это порядка 200 человек). Может, существует какое-то решение, или другой вариант сборки, чтобы после запуска модуля юзерами exe-файл был доступен для изменения? |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Vladimir Sklyar Сообщений: 1397 Дата регистрации: 13.06.2002 |
сделал еще один ехе-шник, который все запускают
при запуске сканирует папку и ищет ехе-шник проги (по опр. маске файла) с максимальной версией файла (выставляется в св-вах проекта) и запускает его, все пред. версии пытается удалить чтобы запустить обновленную версию проги, достаточно выйти их нее и повторно запустить ------------------ С уважением Владимир. |
Re: Обновление exe-модуля в процессе работы | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
Вопрос этот уже подымался, ответ был НИКАК.
Я решил эту проблему перенеся программу на локальные машины пользователя, и при запуске она проверяет на наличие новых версий на сервере (AGETFILEVERSION), И если версии не совпадают, то программа запускает с параметрами отдельную программу (например update.exe), а сама закрывается. После обновление всех необходимых файлов на локальной машине, update.exe вновь запускает программу и пользователь продолжает работу. |
Re: Обновление exe-модуля в процессе работы | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Использую следующую схему:
1. Юзер запускает локльный ехе-шник. 2. EXE-шник с "сопутствующими" файлами и папаками лежит на разделяемом ресурсе. 3. В домене прописана политика на копирование "проги" на клиента при входе в домен. 4. Для "горячего" обновления exe-шника используется вызов из самой проги "обновлялки". 4.1. "Обновлялка" "гасит" все открытые экземпляры проги (если внутри них нет окрытых "не сохраненных" окон/форм ) 4.2. Затем запускает копирование проги с "файлами и папаками" на клиента. 4.3. Затем запускает саму прогу (если надо), после чего "обновлялка" заканчивает работу. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Обновление exe-модуля в процессе работы | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Почему никак. Пусть все запускают не сам EXE, а например такой VBS:
|
Re: Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
Что-то у меня так не получается. m:\po\Zapusk.exe - запускает m:\po\Proga.exe - после этого все равно файл Proga.exe не доступен для изменений. У вас не так? |
Re: Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
И что, после такого запуска MyFolder\myProg2.exe доступен для изменения? |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Vladimir Sklyar Сообщений: 1397 Дата регистрации: 13.06.2002 |
в папке лежит нескольно файлов проги с разными версиями proga.exe proga1.exe proga2.exe .... zapusk.exe ищет файл проги с максимальной версией и его запускает, все не нужные пытается удалить за не надобностью (старая версия файла) ------------------ С уважением Владимир. Исправлено 1 раз(а). Последнее : Vladimir Sklyar, 25.04.17 11:13 |
Re: Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
Цитата: ааа, теперь поняла - названия модулей разные )) |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Vladimir Sklyar Сообщений: 1397 Дата регистрации: 13.06.2002 |
у меня это целая прога(все в одном), а не отдельные модули
------------------ С уважением Владимир. |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Конечно не так. Запускать нужно не через DO - иначе это будет тот же самый процесс. Любой другой способ запуска - хоть бы и убогий RUN /N, но я предпочитаю ShellExecute(). Вторая программа вполне может быть и батником... Городить огород из 100500 prog1.exe, prog2.exe и т.д. в общем случае нецелесообразно. Равно как и давать возможность работать в "старой" версии. ------------------ WBR, Igor |
Re: Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
Вообще-то все это затевается для возможности удаленной работы с приложением через терминальный доступ, то есть фактически удаленные юзеры запускают exe-файл с одного компа, из одной директории. Идея с разными названиями exe-модулей пока как-то не привлекает, это на крайний случай.
К сожалению, мне не ответил пока OF63, хотя я никогда VBS не делала, но можно попробовать, если это сработает. |
Re: Обновление exe-модуля в процессе работы | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Идея с разными названиями exe-модулей пока как-то не привлекает, это на крайний случай. По другому никак, запущеный юзером EXE никак не заменить. Этот файл открыт юзером. Исправлено 1 раз(а). Последнее : of63, 25.04.17 11:35 |
Re: Обновление exe-модуля в процессе работы | |
---|---|
lili Автор Сообщений: 436 Откуда: Сыктывкар Дата регистрации: 07.11.2005 |
в общем, понятно, выход все-таки в разных названиях модулей
|
Re: Обновление exe-модуля в процессе работы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
На терминальном сервере вообще нет проблем разом выгнать всех пользователей и обновить версию ПО.
Т.к. во-первых весьма часто обновление фоксового ПО заключается не только в изменении exe, но и в изменении структуры БД с которой работает этот exe - работать в "старой версии" в этом случае либо нежелательно (т.к. будет сопровождаться ошибками), либо вообще невозможно. во-вторых "проверка при запуске" работает... ну да, только при запуске. Если пользователь месяц не будет выходить из программы, то он будет продолжать работать со старой версией. Впрочем, как всегда - хозяин-барин. Охота сделать плохо, зачем мешать ------------------ WBR, Igor |
Re: Обновление exe-модуля в процессе работы | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> во-вторых "проверка при запуске" работает... ну да, только при запуске
нет не только при запуске, а по таймеру на _SCREEN, раз в минуту, например, опрашиваем, смотрим изменение сигнатуры файла VBS. При изменении делаем CLEAR EVENTS, точнее, делаем искусственное нажатие кнопки "Выход из программы". Проблемы только с модальными окнами, но и их можно порешать таймерами на модальной форме. Конечно, нехорошо делать CLEAR EVENTS, но что-то другое можно изобрести, чтобы помаячить юзеру... |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Олег, а проверка при запуске и проверка по таймеру это по твоему одно и то же
Проверка по таймеру это и есть вариант реализации "выгонять пользователя из программы". Т.к. процесс их работы прерывается, формы закрываются, несохранённые изменения теряются и т.п. Это чуть другой подход (вполне рабочий, конечно же). Не знаю, кстати, о каких "сигнатурах" идёт речь... Обычно модуль который обновляЕТ программу (не важно на vbs он написан, или это просто команды cmd в батнике, или это полноценная программа на том же фоксе написанная) не меняется при обновлении - меняется модуль который обновляЮТ - т.е. сам exe программы. Иногда для удобства вообще отдельно делают мелкий файл-маркер (например пишут туда номер версии программы - банальным текстом), не тревожа для проверок собственно "большой" файл exe-ника. ------------------ WBR, Igor |
Re: Обновление exe-модуля в процессе работы | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Да... Вроде просто все. Этот файл VBS и есть:
- файл-маркер, - он же указатель, запускатель, на свежайший экзешник, - его же сигнатуру (дату время, размер) опрашивает экзешник на предмет "не сменилось ли что в нем с момента запуска" Если админ слазит в него текстовым редактором, (и поменяет в нем MyFolder\myProg2.exe на MyFolder\myProg3.exe, одновременно положив в рабочий каталог этот новый экзешник myProg3.exe), то датавремя файла VBS (т.е. "сигнатура" файла VBS) поменяется, что и увидят таймеры в запущенных копиях myProg2.exe, и самозавершат работу. Далее юзеры запустят снова этот VBS, а в нем уже запускается свежая версия - myProg3.exe Или я не о том? |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну, поскольку я не менял (точнее не хранил) никогда ни имени, ни места размещения нового файла в программе-обновляльщике (оно либо в другом файле настроек хранится, либо параметрами из "основного exe" передаётся), то у меня программа-обновляльщик практически никогда не меняется (хотя в "основной" программе есть специальная ветка для замены программы-обновляльщика).
И да, у меня программа-обновляльщик располагается локально, рядом с exe, не на сетевой шаре. В другом варианте эта самая программа-обновляльщик вообще генерируется каждый раз из основной программы (в виде командного файла bat). Из очевидных плюсов - система работает даже если файл-шара с "обновлениями" отвалилась - просто основной exe запускается и всё... Учитывая что программа в принципе может работать не с dbf-ами на том же файл-сервере, это хорошее решение - не зависеть от работоспособности "некритического" сервера. А необходимость обновлять определяется либо через AGETFILEVERSION для локального файла и файла в папке обновлений (в тех программах где ещё использовался "монолитный exe" - т.е. один exe файл со включенными в него всеми формами/классами/процедурами и т.п.), либо через файл-маркер (локально тоже хранится файл "с номером версии"), либо через сравнение ВСЕХ файлов в папке обновления с одноимёнными локальными файлами (последние 2 варианта - для случая маленького exe-запускальщика, который вообще практически никогда не меняется, и огромной кучи отдельных файлов vcx/scx/fxp и т.п.). Плюсы и минусы есть у каждого из вариантов... Да, разноимённых exe я не делал никогда - всегда у программы одно стабильное имя запускающего файла ------------------ WBR, Igor |
Re: Обновление exe-модуля в процессе работы | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
У меня много лет работает. Вызов стоит в начале самого exe-модуля.
Нам просто надо кинуть заказчику новый Exe под именем PamakCopy.exe Он не сразу его заменит. Но при вызове работать начинает сразу. А мы по 10 раз в день его не меняем. Короче, это реальный работающий код Кидаю, не глядя. Что-то он дергает из самого Pamak.exe Дополнительно напишу Исправлено 4 раз(а). Последнее : Ydin, 25.04.17 19:15 |
© 2000-2024 Fox Club  |