
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.89] |
![]() |
|
Сообщ.
#1
,
|
|
|
Предлагаю сюда писать различные варианты обновления уже работающего ехе.
Вот недавно найденный мною способ: ![]() ![]() WCHAR BUF[MAX_PATH],NEW_FILE[MAX_PATH]={0}; //получаем имя программы GetModuleFileName(GetModuleHandle(NULL),BUF,sizeof(BUF)); wcscat(NEW_FILE,BUF); wcscat(NEW_FILE,TEXT(".bak")); MoveFileEx(BUF,NEW_FILE,MOVEFILE_REPLACE_EXISTING); //теперь мы можем спокойно создать файл с именем программы //скачиваем новую версию и сохраняем ее. DownloadAndSave(BUF,URL); //делаем перезапуск программы ShellExecute(NULL,TEXT("open"),BUF,TEXT("-updated"),NULL,SW_SHOW); //удаляем старую версию после перезагрузки MoveFileEx(NEW_FILE,NULL,MOVEFILE_REPLACE_EXISTING|MOVEFILE_DELAY_UNTIL_REBOOT); + Компактный код + Удобно обновлять переносные программы. - В общем случаи нужны права пользователя который делал установку программы. Проверено на: WinXP sp 3 x86, Win 7 x86 Еще как вариант можно использовать планировщик задач, для запуска программы обновления. Можно установить службу которая будет обновлять программу. |