Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / замена программой самой себя / 19 сообщений из 19, страница 1 из 1
21.09.2006, 10:23
    #34002051
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
есть программа, запускается при загрузке системы (от вин98 до ХР) через реестр
Хочу ее дописать таким образом, чтобы она при определенных условиях могла себя проапгрейдить, т.е. подменить свое запущенное тело, которое запустится заново после перегруза
Как попроще это можно организовать?
...
Рейтинг: 0 / 0
21.09.2006, 10:35
    #34002103
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
serg1905
s> есть программа, запускается при загрузке системы (от вин98
s> до ХР) через реестр Хочу ее дописать таким образом, чтобы
s> она при определенных условиях могла себя проапгрейдить,
s> т.е. подменить свое запущенное тело, которое запустится
s> заново после перегруза Как попроще это можно организовать?

тебе попроще или чтобы работало ?
в поиск, один словом, тема поднимается раз в неделю.
можешь в дельфийном форуме посмотреть

--
PS: Altera manu fert lapidem, panem ostentat altera
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
21.09.2006, 12:05
    #34002499
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
авторPS: Altera manu fert lapidem, panem ostentat altera
fortuna non ... est!
...
Рейтинг: 0 / 0
21.09.2006, 12:13
    #34002540
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
сама себя не может.
Можно написать что-то типа загрузчика, который при запуске:
а) лезет в реестр.
б) если надо - обновляет программу на диске.
в) запускает основную программу.
...
Рейтинг: 0 / 0
21.09.2006, 12:30
    #34002625
a_s_d
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Makar4ikсама себя не может.
Можно написать что-то типа загрузчика, который при запуске:
а) лезет в реестр.
б) если надо - обновляет программу на диске.
в) запускает основную программу.
Я б не стал так категорично. Как минимым прямую запись на диск никто не отменял:)
Хотя твой вариант, конечно практичнее.
...
Рейтинг: 0 / 0
21.09.2006, 12:38
    #34002679
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Makar4ikа) лезет в реестр
а зачем ?

--
PS: Altera manu fert lapidem, panem ostentat altera
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
21.09.2006, 12:51
    #34002743
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Карабас Барабас Makar4ikа) лезет в реестр
а зачем ?
Это к примеру.
Чтобы проверить версию.
...
Рейтинг: 0 / 0
26.09.2006, 11:54
    #34012099
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Я тут извратился немного и написал следующим образом.
Исходные данные
х1 - программа, которая работает и которую надо обновить
х2 - та же самая программа, но версия свежее

х1 видит, что есть ее обновление. запускает х2.
х2 убивает процесс х1. Меняет программу на х2 (х1 становится равной х2).
х2 запускает новую х1. Новая х1 убивает процесс х2 и удаляет лишние файлы.

Я немного упростил описание нового алгоритма. Но суть та же.
Тестировалось, вроде все работает.
Вопрос такой.
С точки зрения системы что тут может быть некорректно?
Оставить так?
...
Рейтинг: 0 / 0
26.09.2006, 12:59
    #34012378
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
serg1905Я тут извратился немного и написал следующим образом.
Исходные данные
х1 - программа, которая работает и которую надо обновить
х2 - та же самая программа, но версия свежее

х1 видит, что есть ее обновление. запускает х2.
х2 убивает процесс х1. Меняет программу на х2 (х1 становится равной х2).
х2 запускает новую х1. Новая х1 убивает процесс х2 и удаляет лишние файлы.

Я немного упростил описание нового алгоритма. Но суть та же.
Тестировалось, вроде все работает.
Вопрос такой.
С точки зрения системы что тут может быть некорректно?
Оставить так?

А если просто, написать менеджер обнавления x3, и если x1 находит x2, то запускает менеджер, а тот все далает сам?
...
Рейтинг: 0 / 0
26.09.2006, 13:07
    #34012411
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Я так и начал делать.
Типа всегда запускается такой менеджер, типа его задача тока обновлять основную задачу и сам он никогда обновляться не должен.
Но потом подумал, что лучше будет только один модуль, который будет сам обновляться и сам выполнят некоторые функции.
Думаю так будет лучше.
...
Рейтинг: 0 / 0
26.09.2006, 13:19
    #34012470
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
serg1905Я так и начал делать.
Типа всегда запускается такой менеджер, типа его задача тока обновлять основную задачу и сам он никогда обновляться не должен.
Но потом подумал, что лучше будет только один модуль, который будет сам обновляться и сам выполнят некоторые функции.
Думаю так будет лучше.

Думаю, это зависит от специфики твоего приложения. Тебе видней.
...
Рейтинг: 0 / 0
26.09.2006, 14:11
    #34012723
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Если же ктото считает, что такое обновление некорректно по отношению к системе, напишите
...
Рейтинг: 0 / 0
26.09.2006, 14:18
    #34012754
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
serg1905Если же ктото считает, что такое обновление некорректно по отношению к системе, напишите

убивать процесс - круто, но не правильно это... есть ресурсы, да и стиль программирования может страдать - когда такое прибивание может ойкнуться...

по мне - либо выносить фазу замена/запуск за полный останов...либо рассмотреть поддержание обновления на лету, заюзав технологию COM.

с уважением
(круглый)
...
Рейтинг: 0 / 0
26.09.2006, 14:53
    #34012896
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Ну я ж поэтому и спрашиваю
Конкретно меня ресурсы и интересовали
и мне так думалось, что ресурсы убитой программы системой освобождаются
...
Рейтинг: 0 / 0
26.09.2006, 15:00
    #34012920
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
serg1905Ну я ж поэтому и спрашиваю
Конкретно меня ресурсы и интересовали
и мне так думалось, что ресурсы убитой программы системой освобождаются

угумс...
какие нить Браши или Пены скажем, под 95 форточками
и не нуна думать что под 2003 будет по другому...гы...упасть - возможно не упадёт...

или какой нить порт HTTP под дот нетом...мигом раком станет...тьху...кверху жопой... :)) правда через некоторое время - может отмереть...но знает ли об этом оригинальная программа ? гы...

с уважением
(круглый)
...
Рейтинг: 0 / 0
26.09.2006, 15:22
    #34013001
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Спасибо за мнение, но ведь я ж тож перестраховывался.
Перед запуском процесса, который убивает запускающий процесс, я освобождаю все ресурсы, которые вручную занимал. И после команды WinExec простыми словами стояло тока "return в винды".
...
Рейтинг: 0 / 0
26.09.2006, 21:31
    #34013992
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
ну раз приложение само завершается, то убивать его зачем?
...
Рейтинг: 0 / 0
27.09.2006, 07:15
    #34014303
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
maXmoну раз приложение само завершается, то убивать его зачем?контрольный в голову
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
27.09.2006, 10:37
    #34014707
serg1905
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
замена программой самой себя
Карабас Барабас maXmoну раз приложение само завершается, то убивать его зачем?контрольный в голову
Posted via ActualForum NNTP Server 1.3
Ну если честно, то я просто не знаю, могут ли возникнуть ситуации, при которых после запуска WinExecом запускающая программа не успеет завершиться до запускаемой. А так как запускаемая должна удалять запускающую c диска, то я ее насильно снимаю.
Так что шутки шутками, а я действительно делаю "конрольный выстрел" :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / замена программой самой себя / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]