Я долго думал как реализовать данную возможность.
Но тут куча нюансов
1) Как проверять выпуск новой версии
2) Если есть то как скачать и заменить старую
И вот что у меня вышло
Код: Выделить всё
//Auotoupdate
procedure TConnectForm.FormShow(Sender: TObject);
var
//Check version variables set
version: WideString;
curver: UnicodeString;
//Info message variable set
Reply, BoxStyle: integer;
begin
//Version check
curver := '2.111';
version := IdHTTP1.Get(updhttp);
//If ok exit from and continue
if version = curver then
begin
exit;
end
//In new version show update message
else
begin
BoxStyle := MB_ICONQUESTION + MB_YESNO;
Reply := Application.MessageBox('Появилась новая версия программы !' + #13#10 +
'Нажмите YES для обновления ...' + #13#13 +
'после обновления ПЕРЕЗАПУСТИТЕ ПРОГРАММУ ', 'Внимание', BoxStyle);
//If yes = update (launch bat file for update)
if Reply = idYes then
begin
ShellExecute(0, nil, PChar('cmd'), PChar('/c update.bat'), nil, 1);
ConnectForm.Close;
end
//If no exit from and continue
else
exit;
end;
end;
updhttp - ссылка на ресурс где лежит фаилик version.txt (просто вписываем номер актуальной версии)
Дальше просто сравниваем с версией что прописана и если номера не совпадают значит говорим пользователю что можно обновиться.
Если не хочет, продолжаем работу, если да то запускаем батник на обновления.
С батником всё просто, я использую curl иду на фтп, закачиваю новую версию, делаю бэкап старой и обновляю.
Думаю написать такой батник для винды сможет любой за 10 мин, тут постить нет необходимости.
Вот и всё, велком новая версия )))