Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перезапуск программы 
:(
    Опции темы
admsasha
Дата 24.1.2012, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



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

Я попробовал через system(), под linux, вроде как, проблем нет. А вот под windows создается консольное окно, которое не закрывается даже после выхода из программы. Какие еще способы есть, либо какой выход из этого есть ?

PM MAIL WWW ICQ Jabber   Вверх
borisbn
Дата 24.1.2012, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Под Windows есть как минимум 3 варианта:
1) system( "start prog_name.exe" );
2) ShellExecute( ... );
3) CreateProcess( ... );


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
admsasha
Дата 24.1.2012, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



borisbn, спасибо, попробую.

Это сообщение отредактировал(а) admsasha - 24.1.2012, 09:13
PM MAIL WWW ICQ Jabber   Вверх
xvr
Дата 24.1.2012, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Под Windows есть засада - вы не сможете переписать исполняемый файл программы пока она работает. Если у вас система обновления и сама программа одно и то же, то будут проблемы  smile Решается через создание временного .bat файла, который копирует новый образ поверх старого, удаляет себя и запускает обновленную программу

PM MAIL   Вверх
500mhz
Дата 24.1.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Цитата

Решается через создание временного .bat файла, который копирует новый образ поверх старого, удаляет себя и запускает обновленную программу

не красивое решение )

из "учебника"

Цитата

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Создайте новое значение, используя следующую информацию:
Имя значения: PendingFileRenameOperations Тип данных: REG_MULTI_SZ Значение: \ ГК\c:\temp\win32k.sys !\??\c:\winnt\system32\win32k.s
Обратите внимание, что значение параметра введено на две строки.


делаем ребут


--------------------

PM MAIL ICQ   Вверх
borisbn
Дата 24.1.2012, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(500mhz @  24.1.2012,  11:27 Найти цитируемый пост)
делаем ребут

500mhz, ребут программы или системы ?
Если второе, то скажите, только честно, Вам нравятся программы, которые требуют ребута системы ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
500mhz
Дата 24.1.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



borisbn
системы ребут.

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


--------------------

PM MAIL ICQ   Вверх
xvr
Дата 24.1.2012, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(500mhz @  24.1.2012,  11:56 Найти цитируемый пост)
запущеный ехе скопирует себя с нужным именем. 

Он не сможет себя удалить, в отличие от батника
PM MAIL   Вверх
500mhz
Дата 24.1.2012, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



xvr
ну может я сумбурно написал
имеем процесс 1.ехе, он скачивает 2.ехе
процесс 1.ехе запускает 2.ехе и завершается
2.ехе копирует себя как 1.ехе


--------------------

PM MAIL ICQ   Вверх
Sahab
Дата 24.1.2012, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



и после этого процесс 1.exe удаляет файл 2.ехе... 
имхо с батником попроще вроде выходит....
PM MAIL   Вверх
500mhz
Дата 24.1.2012, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Sahab
на вкус и цвет все фломастеры разные )))


--------------------

PM MAIL ICQ   Вверх
Sahab
  Дата 24.1.2012, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



согласен)
PM MAIL   Вверх
xvr
Дата 24.1.2012, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(500mhz @  24.1.2012,  13:48 Найти цитируемый пост)
2.ехе копирует себя как 1.ехе 

А кто сотрет 2.exe ?

PM MAIL   Вверх
bsa
Дата 24.1.2012, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 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
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1223 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.