Сразу пишу что способ не оригинальный. (вдруг кому-нибудь пригодится)
Реакция антивирусов:
Аваст:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Касперский:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Шаг 1.
Создаем txt файл, открываем его и пишем версию программы.
Кидаем на хост
Шаг 2.
Открываем delphi. У формы ставим значение
alphablend := true
alphablendvalue := 0
В событие oncreate пишем:
PHP код:
var
Stream:TMemoryStream;
begin
if DeleteFile('имя.exe') then
begin
Stream:=TMemoryStream.Create;
IdHTTP1.Get('тут адрес скачивания новой версии',Stream);
Stream.SaveToFile('имя сохраняемого файла.exe');
Stream.Free;
Form1.Close;
end
else
ShowMessage('Ошибка Соединения');
событие onshow:
PHP код:
Form1.Close;
компилируем и кидаем на хост
Шаг 3.
Закидываем код в свойство oncreate вышей программы:
PHP код:
var
version, vers:WideString;
Stream:TMemoryStream;
begin
vers := 'тут пишем версию';
try
begin
version:=IdHTTP1.Get('http://site.ru/version.txt'); // парсим последнию версию
if version = vers then
Form1.Label1.Caption := version
else
begin
Stream:=TMemoryStream.Create;
IdHTTP1.Get('http://путь к файлу.ru/имя обновлялки.exe',Stream);
Stream.SaveToFile('up.exe');
Stream.Free;
ShellExecute(Form1.Handle, 'open','up.exe',nil, nil, SW_SHOWNORMAL);
Form1.Close;
end;
end;
except
begin
ShowMessage('Ошибка'); // форма зависнет :(, можно поставить задержку чтоб пользователь успел нажать ок
Form1.Close;
end;
end;
Готово!
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось VeTaL_UA; 17.09.2012 в 17:08.
Причина: копипаст
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Это вообще не понял куда встовлять...
Вернее понял, но если я напишу в свойствах oncreate, то втарой код куда вставлять?
И ещё где находится компонент Stream?
Нечего не понял можно по подробней меня кокраз этот вопрос интересует!
Это вообще не понял куда встовлять...
Вернее понял, но если я напишу в свойствах oncreate, то втарой код куда вставлять?
И ещё где находится компонент Stream?
точно я и незаметил что коряво написал через час исправлю (занят)
Шаг 2. - создание отдельного exe'шника для обновления программы.
Т.е создаешь в делфи отдедьный проект, выполняешь инструкция, а потом уже
Шаг 3. - в свойстве "on create" твоего проекта пихаешь код из шага 3
p.s тут:
up.exe - это имя созданного exe'шники из шага 2
Понятно?
Вот [Ссылки могут видеть только зарегистрированные пользователи. ] есть про класс TStream
можешь еще [Ссылки могут видеть только зарегистрированные пользователи. ] про авто-обновление почитать
Апдейтер умел:
обновлять сам себя (долго мучался с удалением своего же файла)
обновлять свою dll (юзалась для подключения к обновляемой программе - писала версию программы в файлик, а так же юзалась апдейтером (или не юзалась, не помню))
Обновлять программу (состоящую из 1 exe файла, либо надо было все хитрым образом паковать в архив, архив после распаковки не удалялся)
Собирать статистику общего кол-во запусков программы и запусков в первый раз (нужен хостинг хотябы с php).
уже давно работает (почти 8000 запусков), пока никто не жаловался (хотя никто и не стал бы). Только на проект забил, вот думаю выкладывать его в для использования со стороны или нет.
Кстати, антивирусам пофигу
Последний раз редактировалось syne; 13.02.2012 в 17:53.
Прошу прощения что врываюсь в вашу тему. Хотел бы предложить свой вариант.
Я переменяю следующую схему обновления. На серваке хранится версии программы там название папки это версия проги в ней лежит exe-файл который обновляем. Доступ можно получить по 80 порту. Есть специальная таблица в базе на MySql где для каждого обновляемого файла хранится версия текущая, путь к программе и md5-хэш скачиваемого файла. Запускается программа она проверяет версию текущего файла, который лежит рядом. Если нужно то получает с сервера откуда качать и md5-хэш файла. Старую версию просто пока бэкапим. Скачался файл сразу проверяем его на целостность с помощью сравнивания md5-хэша. Все нормально удаляем бэкап, и запускаем прогу. Не все нормально удаляем скачанный файл, бэкап возвращаем наместо, а в лог в базе пишем что не удалось обновиться. Если интересно схема подробние расмотрена в статье [Ссылки могут видеть только зарегистрированные пользователи. ] . Есть примеры кода.
alphablendvalue := 0
таким значением ты закрываешь всю форму при компиляций! , можно-же проще! , просто твой вариант не делать , но делать дальше , если производить компиляцию в Delphi через F9 даже через контрл альт делит вытащить EXE сложно......