![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Есть программа, которая автоматически обновляется и требуется сделать её самоперезапуск.
Я попробовал через system(), под linux, вроде как, проблем нет. А вот под windows создается консольное окно, которое не закрывается даже после выхода из программы. Какие еще способы есть, либо какой выход из этого есть ? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Под Windows есть как минимум 3 варианта:
1) system( "start prog_name.exe" ); 2) ShellExecute( ... ); 3) CreateProcess( ... ); -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
borisbn, спасибо, попробую.
Это сообщение отредактировал(а) admsasha - 24.1.2012, 09:13 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Под Windows есть засада - вы не сможете переписать исполняемый файл программы пока она работает. Если у вас система обновления и сама программа одно и то же, то будут проблемы
![]() |
|||
|
||||
500mhz |
|
||||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
не красивое решение ) из "учебника"
делаем ребут -------------------- |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
500mhz, ребут программы или системы ? Если второе, то скажите, только честно, Вам нравятся программы, которые требуют ребута системы ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
borisbn
системы ребут. ну можно и без батника, сохранить ехешник с другим именем,запустить его, закончить свой процесс, запущеный ехе скопирует себя с нужным именем. -------------------- |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
xvr
ну может я сумбурно написал имеем процесс 1.ехе, он скачивает 2.ехе процесс 1.ехе запускает 2.ехе и завершается 2.ехе копирует себя как 1.ехе -------------------- |
|||
|
||||
Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
и после этого процесс 1.exe удаляет файл 2.ехе...
имхо с батником попроще вроде выходит.... |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Sahab
на вкус и цвет все фломастеры разные ))) -------------------- |
|||
|
||||
Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
согласен)
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Вообще-то, система не запрещает переименовывать исполняющиеся файлы. Таким образом алгоритм меняется на:
1.exe загружает 2.exe 1.exe переименовывает 1.exe в 1.old 1.old переименовывает 2.exe в 1.exe 1.old запускает 1.exe (как вариант, со специальным параметром) 1.exe ждет пока 1.old завершит работу 1.old завершает работу 1.exe удаляет 1.old есть второй вариант: 1.exe загружает 2.exe 1.exe запускает 2.exe 1.exe завершает работу 2.exe переименовывает 1.exe в 1.old 2.exe переименовывает 2.exe в 1.exe Это сообщение отредактировал(а) bsa - 24.1.2012, 17:39 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |