IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Перезапись exe во время выполнения
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Делаю механизм самообновления для проги, может ли exe скачивать обнову и на лету себя ею перезаписывать? Качаю в TMemoryStream. Делал с сохранением обновления на диск, замещением и т.д., но это не очень стабильно работало.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
скачали новый, старый запускает его с параметром-своим хэндлом
Кого это "его"? Я тебе что выше писал? Как только обновление доступно - запускается Updater, который и производит скачку. Скачал - послал сообщение твоей основной программе. Она его приняла, аккуратно, без спешки закрыла все потоки (не Halt-ами, а /Terminate + FreeOnTerminate/ или /Terminate + WaitFor/, заодно отслеживая, что нет спящих потоков), и потом, перед самым своим завершением, послала Updater-у сообщение: "Все, все потоки удалены, все файлы закрыты, я никого не держу и делаю харакири". Твой Updater, приняв это сообщение, понимает, что основная программа уже вот-вот отбросит коньки, и, выждав контрольный промежуток времени (уже все закрыто, тормозов при выходе не будет, ага, тут можно и подождать), удаляет старый EXE-шник, заменяет его новым, и запускает его на выполнение. После чего завершается сам (его EXE-файл при этом удаляется автоматически, спасибо Дж. Рихтеру). Итог: обновленная программа работает, имя EXE-шника не изменилось, установщик исчез. Все как и было.

В твоем случае опять будет проблема. Скачал ты файл, запустил НОВОЕ приложение, старое закрылось. И что? Новое работает под новым именем. Чего ты добился? Нет уж, "разделяй и властвуй". Каждый делает то, что ему положено делать. Обновлялка качает обновления и занимается, собственно, его установкой, приложение ей в этом не мешает. А только помогает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Перезапись exe во время выполнения   7.05.2011 17:24
IUnknown   Размечтался... :) Что именно "не очень стабил…   7.05.2011 19:23
Unconnected   С DLL заморачиваться не хочу, не тот левел) Ну, я …   7.05.2011 21:43
IUnknown   Ты б делал правильно, проблем бы было меньше :) В…   7.05.2011 22:33
IUnknown   А нет. Только что попробовал еще один способ - раб…   8.05.2011 1:02
Unconnected   А я то думал, что память, выделенная под потоки, а…   8.05.2011 3:44
-TarasBer-   > В обнове была пауза в несколько секунд, чтобы…   8.05.2011 15:14
Unconnected   Хочешь сказать, что в моем случае после halt-а про…   8.05.2011 18:02
IUnknown   Ты сам это сказал. Вот тут: Закрывалась бы програм…   8.05.2011 19:14
Unconnected   Короче алгоритм я понял такой.. скачали новый, ста…   8.05.2011 20:58
IUnknown   Кого это "его"? Я тебе что выше писал? К…   8.05.2011 21:38
Unconnected   В смысле "Новое работает под новым именем…   8.05.2011 21:51
IUnknown   Ты из работающей программы его запускаешь, и оно т…   8.05.2011 22:47
Unconnected   Ну да, говорю же, запущенное обновление монитори…   8.05.2011 22:52
IUnknown   Это "почему бы и нет" у тебя уже было. Н…   8.05.2011 23:39
Unconnected   Ок, совет понял) Закрывание loaderthread:=Tre…   9.05.2011 6:01
IUnknown   У тебя, я надеюсь, не совершенно секретная разрабо…   12.05.2011 13:26
Unconnected   Спасибо, но в принципе уже разобрался, сделал так …   12.05.2011 16:32


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.12.2025 7:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name