|
|
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Всем здраствуйте. Подскажите пожайлуста, как можно при работающей программе заменить её exe-файл? Т.е. ситуация следующая: есть работающая программа, пользователь нажимает кнопочку "Обновление", программа берет новый екзешник(например из инета, иль с диска), заменяет его, вместо своего, и просит перезапуститься, при перезапуске работает уже новый екзе-файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 15:10 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Romka_84Всем здраствуйте. Подскажите пожайлуста, как можно при работающей программе заменить её exe-файл? Т.е. ситуация следующая: есть работающая программа, пользователь нажимает кнопочку "Обновление", программа берет новый екзешник(например из инета, иль с диска), заменяет его, вместо своего, и просит перезапуститься, при перезапуске работает уже новый екзе-файл. Программа переименовывает сама себя (скажем в MyProg.ex~) и на свое место пишет новый файл. После чего запускает его. Ну а при запуске файл MyProg.ex~ удаляется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 16:25 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Но пока программа не закрылась будет работать старая версия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 18:58 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
AndrF Romka_84Всем здраствуйте. Подскажите пожайлуста, как можно при работающей программе заменить её exe-файл? Т.е. ситуация следующая: есть работающая программа, пользователь нажимает кнопочку "Обновление", программа берет новый екзешник(например из инета, иль с диска), заменяет его, вместо своего, и просит перезапуститься, при перезапуске работает уже новый екзе-файл. Программа переименовывает сама себя (скажем в MyProg.ex~) и на свое место пишет новый файл. После чего запускает его. Ну а при запуске файл MyProg.ex~ удаляется... Спасибо, идея понятна. Теперь вопрос в следующем: а как работающий екзешник переименует сам себя, т.е. как собственно в коде это выглядеть будет? Чет я таких и функций то не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 10:48 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Учить DOS. Как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 13:09 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Я бы сделал так, есть программа Loader, который перед тем как запустить основную программу, проверяет наличие обновления, если есть обновление закачивает, затем запускает уже обновленную версию проги Если же в самой программе такая функция заложена, типа "Проверить наличие обновление", то просто проверить обновление если есть, где-то отметить что нужно обновить и запустить Loader затем закрыть себя, Loader же в таком случае, после запуска смотрит процессы и пока не исчезнет из списка процесс основной проги, будет ждать, затем когда основная программа закроется начнет процесс обновления, после завершения обновления может просто выдать сообщение или запустить процесс, можно еще добавить возможность отката последнего обновления, сохранить копию основной программы до обновления и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 13:21 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
orunbekЯ бы сделал так, есть программа Loader, который перед тем как запустить основную программу, проверяет наличие обновления, если есть обновление закачивает, затем запускает уже обновленную версию проги Если же в самой программе такая функция заложена, типа "Проверить наличие обновление", то просто проверить обновление если есть, где-то отметить что нужно обновить и запустить Loader затем закрыть себя, Loader же в таком случае, после запуска смотрит процессы и пока не исчезнет из списка процесс основной проги, будет ждать, затем когда основная программа закроется начнет процесс обновления, после завершения обновления может просто выдать сообщение или запустить процесс, можно еще добавить возможность отката последнего обновления, сохранить копию основной программы до обновления и т.д. Возможен и такой вариант. Но, дело в том, что получется уже несколько приложений. Пользователю сие не очень удобно - сначала запусти то, потом то...Запутаются. Уж поверь мне. А тут раз! на кнопку нажал и все готово - никаких проблем. Я не уверен, но вроде бы есть какойто активХ для этого дела, но вот какой я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 14:16 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Romka_84Спасибо, идея понятна. Теперь вопрос в следующем: а как работающий екзешник переименует сам себя, т.е. как собственно в коде это выглядеть будет? Чет я таких и функций то не знаю. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 22:19 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Romka_84Возможен и такой вариант. Но, дело в том, что получется уже несколько приложений. Пользователю сие не очень удобно - сначала запусти то, потом то...Запутаются. Уж поверь мне. А тут раз! на кнопку нажал и все готово - никаких проблем. Нафиг вообще какие-то кнопки. Пишется один загрузчик (в будущем он может использоваться для разных программ), который читает с сервера маленький файлик со сведениями (имя, версия, GUID, CRC32 и пр.) о всех файлах программы (exe, ocx, dll и др.). Сверяет их с имеющимися на компьютере, обновляет нужные и стартует указанный файл. В результате для юзера все абсолютно прозрачно - он просто запускает программу кликая иконку на столе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 22:27 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Да, загрузчик тоже должен уметь обновлять сам себя ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 23:20 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Поищите в интернете пример что-то типа "ЕХЕ удаляет сам себя"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2007, 01:07 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Когда-то мне пришлось реализовать подобное. Удаление собственного экзешника (или его переименование) у меня отрабатывало, равно как и на большинстве машин, на которых работала программа. Однако на некоторых (около 3%) - возникали проблемы, т.к. винды были на разных машинах разные - от 98 до XP. Поскольку искать причины проблем времени не было, всё было реализовано таки образом: При наличии новой версии - прога тянет так наз. uploader.exe, а потом уже новую версию 'себя'. Новую версию 'себя' кладёт напр. с расширением me.new. И запускает uploader.exe, а сама тут же прекращает свою работу. uploader.exe делает временнУю поправку на завершение работы старого exe (тут возможны варианты от опроса процессов и ожидания завершения целевого, до примитивной задержки напр. на 1-2 сек.). В свою очередь uploader.exe делает простую работу по удалению me.exe и переименованию me.new в me.exe и запускает me.exe а сам завершает работу. Остаётся только добавить, что me.exe по завершению своей работы каждый раз смотрит наличие uploader.exe и убивает его (дабы не захламлять свою директорию) Так ты получишь и обновление me.exe и в тоже время uploader.exe не будет статичным. Естественно необходимо позаботится о проверке - твои ли это файлы (ведь ты передаёшь им управление) !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2007, 15:20 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Rubber Про что я и говорю, хорошая идея закачки и uploader'а, теперь буду делать так ;) Romka_84 Возможен и такой вариант. Но, дело в том, что получется уже несколько приложений. Пользователю сие не очень удобно - сначала запусти то, потом то...Запутаются. Уж поверь мне. А тут раз! на кнопку нажал и все готово - никаких проблем. Я не уверен, но вроде бы есть какойто активХ для этого дела, но вот какой я не знаю. Почему же запусти это, запусти то... ВСЕГДА запускают одну программу, которая перед запуском проверяет наличие обновление, если есть, закачивает новую версию, обновляет (удаление старой версии, копирование новой версии), запускает основную прогу и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 07:56 |
|
||
|
Как заменить exe-файл?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 09:35 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34377529&tid=2164364]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 356ms |

| 0 / 0 |
