-
> как отследить что завершился процесс
WaitForSingleObject
> как обеспечит надежное обновление файла, ..если комп
> резетом перегрузят
Никак.
-
> И как обеспечит надежное обновление файла, даже если комп
> резетом перегрузят?
то есть? в момент обновления?
а откуда новая версия скачивается?
-
> Сергей М.
> WaitForSingleObject
Все то хороше, но если начнется выключение компа. Кто тогда первый закроется, мое основное приложение или програмка обновлятель... А будет скорее всего именно так, ибо программа будет висеть у оператора постоянно и закрываться при выключении. Вариант насильно перезапустить не особо подходит - оператор можпет что-то делать в этот момент, а выдавать ему всякие окошки с вопросами - не особо хороше, операторы тупые и действия их малопредсказуемы.
> clickmaker
> то есть? в момент обновления?
> а откуда новая версия скачивается?
В момент, когда основная прога будет еще не закрыта, а обновлялка будет ждать закрытия. Хотя тут еще что-то придумать можно.
Обновляться будет из локалки.
-
> Кто тогда первый закроется
В дан.случае точно не твое, поскольку оно блокировано ожиданием сигнала объекта синхр.ции и не может вернуть ответ на сообщение WM_QUERYENDSESSION раньше чем объект просигналит.
-
if FileExists('project1.old') then DeleteFile('project1.old');
RenameFile('project1.exe', 'project1.old');
CopyFile('c:\updates\project1.exe', 'project1.exe');
WinExec('project1.exe');
Halt;
-
> [22] incm (18.12.07 12:54)
я бы все-таки написал стартер.
который сначала сравнивает даты бинарника в сети и локального, потом, если надо копирует и запускает.
Для пользователя это будет выглядеть как
YourApp.exe и ярлык к нему - на самом деле стартер
YourApp.bin - сам исполняемый модуль, переименованный экзе
-
> Сергей М.
> В дан.случае точно не твое, поскольку оно блокировано ожиданием
> сигнала объекта синхр.ции и не может вернуть ответ на сообщение
> WM_QUERYENDSESSION раньше чем объект просигналит.
Получается что, пока не прийдет ответ от каждого приложения на WM_QUERYENDSESSION винда не закроется ? И не может ли она насильно закрыть по истечении интервала времени так и не получив от всех ответ на WM_QUERYENDSESSION?
> clickmaker
Даты сравниваться будут по любому.
А как запустить файл *.bin? Или только переименовывать ?
-
а если "обновлятель" в ресурсы зашить и при необходимости из ресурсов доставать?
будет тогда тебе один файл-матрешка
-
> Strate (18.12.07 08:20) [12]
сорь, не заметил поста
-
> А как запустить файл *.bin? Или только переименовывать ?
CreateProcess