:: Visual Foxpro, Foxpro for DOS
Обновление версии программки
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Уважаемые знатоки!

Подскажите можно ли в vfp(9) запускать исполняемый файл, после завершения программы,
(когда уже сам ехе-шник программы "отпущен" ... )
Чтобы можно было его (ехе-шник) заменить, в плане обновления версии ...
Подскажите если кто практиковал такое ...
========================================
С уважением!
Ratings: 0 negative/0 positive
Re: Обновление версии программки
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Я так понял, что из основной программы нужно запустить нечто, что обновляет основную программу. Так можно сделать:
Проверка должна производиться в начале основной программы до загрузки таблиц, определения переменных, ну и прочего гем...
if (update)
shelexecute(null,"update.exe") && Не помню параметры
QUIT
endif


------------------
Без коментариев..




Исправлено 1 раз(а). Последнее : Перминов Игорь, 16.05.22 09:47
Ratings: 0 negative/0 positive
Re: Обновление версии программки
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
novik
Уважаемые знатоки!
Подскажите можно ли в vfp(9) запускать исполняемый файл, после завершения программы,
1.Какой программы? 2. А как завершившиеся программы влияют на запуск исполняемых файлов?
Цитата:
(когда уже сам ехе-шник программы "отпущен" ... )
Это когда?
Цитата:
Чтобы можно было его (ехе-шник) заменить, в плане обновления версии ...
Подскажите если кто практиковал такое ...
Какое такое?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Обновление версии программки
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
ssa
1.Какой программы?

Имеется в виду программа написанная скомпилированная в vfp(9)

ssa
А как завершившиеся программы влияют на запуск исполняемых файлов?

Я и спрашиваю, есть ли такая возможность запустить исполняемый файл (скажем cmd) по завершении программы,
чтобы он (cmd) мог заменить ехе-шник этой программы на другой (новой версии).

ssa
Какое такое?

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

(Я извиняюсь если мои вопросы коряво поставлены ...)



Исправлено 1 раз(а). Последнее : novik, 16.05.22 10:18
Ratings: 0 negative/0 positive
Re: Обновление версии программки
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Понятно, что просто запустить любой исполняемый файлик из фоксовской программы не проблема ...
Проблема чтобы фоксовская программа уже была завершена и выгружена из памяти.
Т.е. чтобы её ехе-шник был свободен для изменений.
Ratings: 0 negative/0 positive
Re: Обновление версии программки
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Ну вот Вы не договариваете, приходится клещами вытягивать.
Напишите ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ с программой: изменить, удалить, переписать.
Как сделать - я написал.
Ежу понятно, что пока приложение не закроется, ничего с ним сделать нельзя. Придется ждать когда оно будет полностью выгружено из памяти.
Как ждать: в циле, например, переименовываете в my_prog.exe.bac
if file("my_prog.exe.bac")
* все приложение выгружено
else
* дальше ждем
endif
Конечно ждать до бесконечности нет смысла.


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Обновление версии программки
1793

Сообщений: 290
Откуда: Озерск
Дата регистрации: 17.10.2001
проверять лучше при запуске
сваять запускающую прогу Start.exe
-----------------------------
If Agetfileversion(aVerS,FileExeOld)>0 And Agetfileversion(aVerD,FileExeNew)>0
If aVerD(4) # aVerS(4)
копируем FileExeNew в FileExeOld
Endif

запуск FileExeOld
Ratings: 0 negative/2 positive
Re: Обновление версии программки
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
копируем FileExeNew в FileExeOld

И тут оказывается, что запущено ещё 5 экземпляров проги


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Обновление версии программки
Vladimir Sklyar

Сообщений: 1397
Дата регистрации: 13.06.2002
1793
проверять лучше при запуске
сваять запускающую прогу Start.exe
-----------------------------
If Agetfileversion(aVerS,FileExeOld)>0 And Agetfileversion(aVerD,FileExeNew)>0
If aVerD(4) # aVerS(4)
копируем FileExeNew в FileExeOld
Endif

запуск FileExeOld

принцип тот же, когда компилирую прогу ехе-шнмк обзываю по опр. маске, например MyProgXXXX.exe (где ХХХХ - какое-то число), таких файлов в каталоге может быть несколько

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


------------------
С уважением Владимир.
Ratings: 0 negative/0 positive
Re: Обновление версии программки
1793

Сообщений: 290
Откуда: Озерск
Дата регистрации: 17.10.2001
PaulWist
копируем FileExeNew в FileExeOld
И тут оказывается, что запущено ещё 5 экземпляров проги
Дык незапуск нескольких экземпляров решается в том же Start.exe
Ratings: 0 negative/0 positive
Re: Обновление версии программки
sphinx

Сообщений: 31184
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
PaulWist
копируем FileExeNew в FileExeOld

И тут оказывается, что запущено ещё 5 экземпляров проги

А по мьютексу сложно проверить, запущено ли приложение?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Обновление версии программки
sphinx

Сообщений: 31184
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
У нас обновление было организовано так (не стал ничего менять):

1. На сервере создаётся папка с программой, например TEST
2. В неё помещается последняя версия программы, предыдущие на всякий случай переименовываются.
3. У пользователя создаётся bat-файл, в котором прописано копирование ЕХЕ-файла в локальный каталог и запуск этого скопированного файла.

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


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Обновление версии программки
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
1793
Дык незапуск нескольких экземпляров решается в том же Start.exe

Это как, у тебя запущено 5 экземпляров проги, запускаешь шестой через start.exe, что он должен сделать с предыдущими, срубить все 5 предыдущих?



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

Сообщений: 290
Откуда: Озерск
Дата регистрации: 17.10.2001
PaulWist
1793
Дык незапуск нескольких экземпляров решается в том же Start.exe

Это как, у тебя запущено 5 экземпляров проги, запускаешь шестой через start.exe, что он должен сделать с предыдущими, срубить все 5 предыдущих?


Start.exe НЕ запускает прогу если она УЖЕ запущена
Ratings: 0 negative/0 positive
Re: Обновление версии программки
sphinx

Сообщений: 31184
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
1793
PaulWist
1793
Дык незапуск нескольких экземпляров решается в том же Start.exe

Это как, у тебя запущено 5 экземпляров проги, запускаешь шестой через start.exe, что он должен сделать с предыдущими, срубить все 5 предыдущих?


Start.exe НЕ запускает прогу если она УЖЕ запущена

+1024. Про мьютекс я писал еще в 2007, правда Равиль на Девконе пытался оспорить за терминальную сессию. А потом Володя Максимов и этот вопрос закрыл, подробности не помню, типа параметры нужные. Все есть здесь, на форуме, если поискать.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Обновление версии программки
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
novik
Уважаемые знатоки!
Подскажите можно ли в vfp(9) запускать исполняемый файл, после завершения программы,
(когда уже сам ехе-шник программы "отпущен" ... )
Чтобы можно было его (ехе-шник) заменить, в плане обновления версии ...
Подскажите если кто практиковал такое ...
========================================
С уважением!

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

************
* Start.app - программа "стартер".
* Запускающая программа, цель которой проверить актуальность версии и, если необходимо и возможно,
* выполнить обновление версии
************
if "Версия Work.app не последняя"
* Обновить версию Work.app
enfif
* Запустить текущую версию Work.app
* Завершить Start.app

Почему Start.app - это именно приложение, а не, скажем, просто командный файл, где "в лоб" копируют файл из общей папки? По той причине, что надо будет решить довольно много проблем. Это если говорить "в общем случае". А количество проблем будет непрерывно расти по мере развития рабочего приложения. Того самого Work.app

В целом, Вы сами все поймете когда начнете это делать.
Ratings: 0 negative/2 positive
Re: Обновление версии программки
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Суровые тут ребята. Я так не умею.
У меня при старте программа (myApp.exe) всегда знает где лежит корень приложения. В реестре читает или в своей папке файл .ini.
В корне всегда есть файл типа app.ver в котором сказано что надо, в том числе версия БД, версия App и пр..
Если требуется обновление, то ... в этой корневой папке есть файл типа Обновляка.exe.
Его и запускаем с некоторыми параметраметрами. В том числе и сслыка на myApp.exe
И прога закрывается если стартанули обновлялку.
Обновлялка ждет секунду-две и начинает копировать.
При ошибке копирования (запущен второй экземпяляр) вывешивается сообщение "ждать. и пр...".
Если все ок, то обновлялка запускает myapp.EXE полученный как параметр.

От повторных запусков есть в основной программе семафор на апи однозначно идентифицирующий прогу. Я не запрещаю повторный запуск программы, но предупреждаю.
Лет х.з. ...20 чтоли работает.
Ratings: 0 negative/0 positive
Re: Обновление версии программки
DmitryKn

Сообщений: 300
Дата регистрации: 06.04.2022
Владимир Максимов
...
В том виде, как Вы описали, проблему не решить. Но данную задачу решают по другому. Намеки Вам уже набросали. В общем случае это делается примерно так

************
* Start.app - программа "стартер".
* Запускающая программа, цель которой проверить актуальность версии и, если необходимо и возможно,
* выполнить обновление версии
************
if "Версия Work.app не последняя"
* Обновить версию Work.app
enfif
* Запустить текущую версию Work.app
* Завершить Start.app

Почему Start.app - это именно приложение, а не, скажем, просто командный файл, где "в лоб" копируют файл из общей папки? По той причине, что надо будет решить довольно много проблем. Это если говорить "в общем случае". А количество проблем будет непрерывно расти по мере развития рабочего приложения. Того самого Work.app

В целом, Вы сами все поймете когда начнете это делать.

Вот так организовано обновление:
start.exe запускает копирование основного приложения myproject.app в рабочую папку пользователя (пример). В ini прописываются cPathSystem (папка с основным приложением), cPathWork (рабочая папка пользователя)
* Контроль даты и времени создания стартового модуля
WAIT WINDOW 'Пожалуйста ожидайте. Идет анализ основного модуля...' NOWAIT
gcMainApp = GetIni('SYSTEM','MainApp',goApp.cPathWork+'SETUP.INI')
IF FILE(goApp.cPathSystem+gcMainApp) && есть модуль на сервере
IF FILE(goApp.cPathWork+gcMainApp) && есть модуль на сервере
IF ADIR(aSource,goApp.cPathSystem+gcMainApp)>0 AND ADIR(aTarget,goApp.cPathWork+gcMainApp)>0
IF (aSource(3)>aTarget(3)) OR (aSource(3)=aTarget(3) AND (CTOT('01-01-01 '+aSource(4)) > CTOT('01-01-01 '+aTarget(4))))
DO UpgrApp
ENDIF
ENDIF
ELSE
DO UpgrApp
ENDIF
RELEASE aSource,aTarget
DO (gcMainApp)
ELSE
=MESSAGEBOX('В системном каталоге нет основного модуля')
ENDIF
WAIT CLEAR
**************
PROCEDURE UpgrApp
WAIT WINDOW 'Обновление файлов...' NOWAIT
COPY FILE (goApp.cPathSystem + gcMainApp) TO (goApp.cPathWork + gcMainApp)
RETURN



Исправлено 1 раз(а). Последнее : DmitryKn, 17.05.22 11:48
Ratings: 0 negative/1 positive
Re: Обновление версии программки
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Всем откликнувшимся Большое Человеческое Спасибо!)
Ratings: 0 negative/0 positive
Re: Обновление версии программки
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
DmitryKn
aSource(3)>aTarget(3)) OR (aSource(3)=aTarget(3) AND (CTOT('01-01-01 '+aSource(4)) > CTOT('01-01-01 '+aTarget(4)))
А почему не просто сложить реальную дату с реальным временем и один раз сравнить?



Исправлено 1 раз(а). Последнее : akvvohinc, 17.05.22 14:56
Ratings: 0 negative/0 positive


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

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

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