Делаю механизм самообновления для проги, может ли exe скачивать обнову и на лету себя ею перезаписывать? Качаю в TMemoryStream. Делал с сохранением обновления на диск, замещением и т.д., но это не очень стабильно работало.
Сообщение отредактировано: Unconnected -
--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
Спасибо, но в принципе уже разобрался, сделал так (где-то нашел, что freeonTerminate:=true может мешать WaitFor-у. До этого у меня на нём вылетала ошибка №6, неверный дескриптор, как-то так).
try loaderl:=dcrypt(b64decode(getintxt(loaderlink+b64encode(crypt(mac,pas)))),pas); loaderthread:=Tread2.create(false); loaderthread.FreeOnTerminate:=false; loaderthread.WaitFor; if length(updatel)>5 then exitprocess(0); except end;
В самом потоке в секции finally выполняется loaderthread.terminate;
И такой код в начале обновления:
repeat deletefile(writepath+nname); sleeping(2000); until not(fileexists(writepath+nname)); //тут уже перемещение нового
Обновилось 100% (ну может без 1-2), это из 120 обновлений. На днях больший объем попробую.. Кстати, в KOL для работы с потоками достаточно так же унаследовать от TThread, как и делаю, хотя там и спецкомпонент есть.
Сообщение отредактировано: Unconnected -
--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."