![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как исполняемому файлу перезаписать самого себя ? [D7, Win2k, WinXP]
incm © (2007-12-17 17:39:00)Нужно программе которая в данный момент выполняется, заменить свой собственный *.exe файл.
clickmaker (2007-12-17 19:14:00) [21]лучше уж ОДИН доп. модуль, чем лишняя перезагрузка... Зачем она нужна, если системныекомпоненты не затрагиваются?
Джо (2007-12-17 19:08:00) [22]> [7] incm (17.12.07 19:05)
> Мне подходит вариант обновление моего файла после перезагрузки,
> но без дополнительных модулей.
1. MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT.
2. Записать в реестр в раздел RunOnce ссылку на коммандный процессор с соответствующими параметрами.
incm (2007-12-17 19:05:00) [23]Очень желательно все сделать ОДНИМ файлом.
Инсталятор тоже не подходит, все должно само обновляться.
ЗЫ.
Все же как винда после перезагрузки перезаписывает свои файлы?
Мне подходит вариант обновление моего файла после перезагрузки, но без дополнительных модулей.
clickmaker (2007-12-17 18:29:00) [24]
> [3] incm (17.12.07 18:12)
1. запускаем exe
2. смотрим, есть ли новая версия (на шаре, на фтп, ...)
3. если есть, запускаем другой экзе или батник, который забирает версию. Основной экзе при этом закрывается
4. другой экзе или батник, скачав свежак, запускает его
это один вариант
другой вариант - программа-стартер, которая следит за свежестью версии, скачивает и запускает основной экзе. Ярлык юзера, конечно, должен указывать на этот стартер
Rouse_ (2007-12-17 18:24:00) [25]
> Очень даже нужно. Версию поменять.
А использовать инсталятор религия не позволяет?
{RASkov} (2007-12-17 18:23:00) [26]> [3] incm (17.12.07 18:12)
> Версию поменять.
Здесь можно несколько вариантов придумать....
Но замена работающего екзэшника - это не верно и не нужно...
Например, сделай модуль(отдельное приложение) отвечающий за обновление программы, в задачах которого будет завершение работы обновляемой программы, замены екзэшника, запуск новой версии....
Если закрытие программы не допустимо, то тут изначально нужно было делать не одним файлом, а несколькими(dll,bpl). И по мере обновления менять отдельные модули....
incm (2007-12-17 18:12:00) [27]
> Leonid Troyanovsky
> Вовсе это ей не нужно.
Очень даже нужно. Версию поменять.
> DeBUGger13
> Нельзя :(
> Виндовоз не позволит(скажет ай-ай-ай, мол , и не даст доступ
> к исполняемому EXE-шнику).
Если бы все было так просто, то и не спрашивал бы. Но решение быть должно, винда то себя как то обновляет. Меня устроил бы вариант, что я копирую куда то файл на который надо заменить, а после того как прога будет закрыта, винда этим файлом подменит старый. Но нужно что бы подменяла при любых обстоятельствах, даже если ее резетом перезагрузят, то всеравно после загрузки она должна сделать это.
DeBUGger13 (2007-12-17 17:57:00) [28]Нельзя :(
Виндовоз не позволит(скажет ай-ай-ай, мол , и не даст доступ к исполняемому EXE-шнику).
Leonid Troyanovsky (2007-12-17 17:48:00) [29]
> incm (17.12.07 17:39)
> Нужно программе которая в данный момент выполняется
Вовсе это ей не нужно.
--
Regards, LVT.