Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

Обновление программы динамически через интернет   Найти похожие ветки 

 
Ануфрий ©   (2007-08-10 08:58) [0]

Хочу сделать автоматическое обновление программы через интернет, без участия пользователя.

Программа проверяет наличие новой версии и скачивает свежий exe-шник из интернета.

Как теперь им подменить старый? Понятно, что пока запущена программа, этого не сделать. Но как сделать это во время его запуска, по типу того, как это делает FireFox?


 
Сергей М. ©   (2007-08-10 09:06) [1]

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


 
Slym ©   (2007-08-10 09:07) [2]

ДВА экзешника:
1. сама программа...
2. launch.exe - ее функция запустить "саму программу", и по возможности превдарительно обновить файл программы...
чтобы юзеры не пользовались программой в обход лончера меняем расширение у программы (наприм .bin)
или как консультант+: лончер выбирает файл vr{xxxxx}.res, где {xxxxx} - максимальный среди найденых, и его запускает


 
Ануфрий ©   (2007-08-10 09:11) [3]

[1] А какому другому процессу? Его надо создать из программы? Но он тогда наверное ей будет принадлежать... А можно пример?
[2] Я думал над таким вариантом... Но как-то это не красиво.


 
$OOFFOO   (2007-08-10 09:18) [4]


>  А какому другому процессу

другому


 
Сергей М. ©   (2007-08-10 09:20) [5]


> какому другому процессу?


Ну, например, тому самому launch.exe, о котором идет речь в [2].


> Его надо создать из программы?


Не обязательно, но это самый надежный способ.


> он тогда наверное ей будет принадлежать


Что значит "принадлежать" ?
Процессы не могут находиться во взаимоотношениях "принадлежности" - каждый процесс в ОС самодостаточен.


> можно пример?


Пример чего ?


 
Ануфрий ©   (2007-08-10 09:24) [6]

[5]

> Пример чего ?

вот этого:

> перед завершением старой версии делегировать (тем или иным
> подходящим способом) другому процессу полномочия на замену
> исп.файла


 
Сергей М. ©   (2007-08-10 09:27) [7]


> Ануфрий ©   (10.08.07 09:24) [6]


Все зависит от выбора конкретного "подходящего способа".

Ты его выбрал ?

Вариант [2] тебя почему не устраивает ?

Он самый простой, наглядный и надежный ..


 
$OOFFOO   (2007-08-10 09:29) [8]


> Пример чего ?

пример того...


 
Сергей М. ©   (2007-08-10 09:30) [9]


> $OOFFOO   (10.08.07 09:29) [8]


Иногда лучше жевать..


 
Ануфрий ©   (2007-08-10 09:32) [10]

Вариант [2] мне не нравится наличием дополнительных программ для запуска. У меня программа из одного файла, не хотелось бы, чтобы кроме него еще что-то мешалось.

А кроме [2] других вариантов я не знаю. Какие еще способы есть?


 
Сергей М. ©   (2007-08-10 09:35) [11]


> Какие еще способы есть?


Например, внедрить и запустить код замены и рестарта исп.файла в чужой ("суррогатный") процесс.

Этот способ ощутимо сложнее (вряд ли ты его потяшешь) и ощутимо менее надежен.


 
$OOFFOO   (2007-08-10 09:37) [12]


> Иногда лучше жевать..

а иногда - сосать..


 
Ануфрий ©   (2007-08-10 10:05) [13]

[11]
Этот вариант мне нравится больше. Мне бы имена функция, дальше, думаю, разберусь.


 
Сергей М. ©   (2007-08-10 10:37) [14]


> Ануфрий ©   (10.08.07 10:05) [13]



> Этот вариант мне нравится больше


А ненадежность тебя, надо понимать, не волнует ?


 
Ануфрий ©   (2007-08-10 10:43) [15]

[14] Волнует, но вариант с дополнительным файлом меньше нравится... Хотя я тут подумал, что в варианте [11] еще возможно, что Антивирусы будут ругаться о внедрении в чужие процессы и, возможно, блокировать программу.

Я еще все равно буду тестировать и думать над обоими вариантами. Просто в случае [2] я не вижу проблем с реализацией. А вот [11] я не знаю как делать. Потому и спрашиваю.


 
Сергей М. ©   (2007-08-10 10:52) [16]


> подумал, что в варианте [11] еще возможно, что Антивирусы
> будут ругаться о внедрении в чужие процессы и, возможно,
>  блокировать программу


Именно так.
Это и есть один из основных составляющих ненадежности.


> [11] я не знаю как делать


О внедрении своего кода в суррогатный процесс существует множество статей с примерами.

http://www.google.ru/search?q=Delphi+%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BE%D0%B4%D0%B0+%D0%B2+%D1%87%D1%83%D0%B6%D0%BE%D0%B9+%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a


 
Ануфрий ©   (2007-08-10 10:55) [17]

[16] Спасибо.


 
Сергей М. ©   (2007-08-10 11:08) [18]


> Ануфрий ©   (10.08.07 10:55) [17]


Есть еще один, на мой взгляд, оптимальный для таких задач способ - использование файла сценария, выполняемого с пом. штатной утилиты cscript.exe


 
Сергей М. ©   (2007-08-10 11:23) [19]


> Ануфрий ©   (10.08.07 10:55) [17]


http://www.google.ru/search?q=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+cscript.exe&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a

http://www.optim.su/cs/2000/1/wsh/wsh.asp
http://www.script-coding.info/WSH/WScript.html


 
MetalFan ©   (2007-08-10 23:05) [20]

алгоритм можно построить примерно так:
1) зашить в ресурсы осн.приложения "обновлялку"
2) приложение само проверяет, есть ли обновления. само их скачивает и предлагает пользователю перезапуститься для применения обновления.
3) сохранить в файл на диске "обновлялку", запустить, завершиться.
4) "обновлялка" заменяет необходимые файлы и запускает осн.приложение с опр.ключем, приложение стирает файл "обновлялки" и привет)))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.051 c
3-1182263931
Tonich
2007-06-19 18:38
2007.10.28
Трансакция


1-1187006465
Dio
2007-08-13 16:01
2007.10.28
Эмулировать прокрутку колеса мыши


2-1191689278
Nikfel
2007-10-06 20:47
2007.10.28
Над каким элементом в списке курсор.


15-1190773341
Slider007
2007-09-26 06:22
2007.10.28
С днем рождения ! 26 сентября 2007 среда


15-1191231333
User1999
2007-10-01 13:35
2007.10.28
Process View





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский