Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 16.01.2012, 17:55   #1
 Разведчик
Аватар для HAHo_tech
 
HAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краях
Регистрация: 16.01.2012
Сообщений: 11
Популярность: -210
Сказал(а) спасибо: 12
Поблагодарили 11 раз(а) в 9 сообщениях
 
Exclamation [Delphi] Пишем простой модуль авто-обновления

Нам понадобится:
1) Хост: 1 штука
2) Руки: 2 штуки
3) Delphi: 1 штука


Сразу пишу что способ не оригинальный. (вдруг кому-нибудь пригодится)

Реакция антивирусов:


Аваст:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Касперский:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Шаг 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
  
versionvers: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',nilnilSW_SHOWNORMAL);
    
Form1.Close;
    
end;
    
end;
  
except
    begin
    ShowMessage
('Ошибка'); // форма зависнет :(, можно поставить задержку чтоб пользователь успел нажать ок 
    
Form1.Close;
    
end;
  
end
Готово!

[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось VeTaL_UA; 17.09.2012 в 18:08. Причина: копипаст
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
3jhlty3 (24.01.2012), Shook† (17.01.2012)
Старый 17.01.2012, 19:01   #2
Заблокирован
 Пехотинец
Аватар для Shook†
 
Shook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражанияShook† блестящий пример для подражания
Регистрация: 01.01.2012
Сообщений: 95
Популярность: 2423
Сказал(а) спасибо: 231
Поблагодарили 229 раз(а) в 93 сообщениях
Отправить сообщение для Shook† с помощью ICQ Отправить сообщение для Shook† с помощью Telegram Отправить сообщение для Shook† с помощью Yahoo Отправить сообщение для Shook† с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Цитата:
Сообщение от HAHo_techПосмотреть сообщение
Реакция антивирусов

Почему идёт такая реакция? У программы вроде бы ничего опасного нет

Последний раз редактировалось Shook†; 21.01.2012 в 10:45.
  Ответить с цитированием
Старый 17.01.2012, 23:01   #3
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Цитата:
Сообщение от Shook†Посмотреть сообщение
У программы вроде бы ничего протизащещённого нет

Сам понял, что сказал?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 18.01.2012, 20:03   #4
 Разведчик
Аватар для 3jhlty3
 
3jhlty3 на правильном пути
Регистрация: 17.12.2011
Сообщений: 14
Популярность: 24
Сказал(а) спасибо: 50
Поблагодарили 7 раз(а) в 6 сообщениях
Отправить сообщение для 3jhlty3 с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Нечего не понял можно по подробней меня кокраз этот вопрос интересует!

Цитата:
Сообщение от HAHo_techПосмотреть сообщение
Открываем delphi. У формы ставим значение
alphablend := true
alphablendvalue := 0
В событие oncreate пишем:


PHP код:



var**Stream:TMemoryStream;begin**if*DeleteFile('им я.exe')*then**begin****Stream:=TMemoryStream.Creat e;****IdHTTP1.Get('тут*адрес*скачивания*новой*верс ии',Stream);****Stream.SaveToFile('имя*сохраняемог о*файла.exe');****Stream.Free;****Form1.Close;**en d**else****ShowMessage('Ошибка*Соединения');

Это вообще не понял куда встовлять...
Вернее понял, но если я напишу в свойствах oncreate, то втарой код куда вставлять?
И ещё где находится компонент Stream?
  Ответить с цитированием
Старый 20.01.2012, 16:37   #5
 Разведчик
Аватар для HAHo_tech
 
HAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краях
Регистрация: 16.01.2012
Сообщений: 11
Популярность: -210
Сказал(а) спасибо: 12
Поблагодарили 11 раз(а) в 9 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Цитата:
Сообщение от 3jhlty3Посмотреть сообщение
Нечего не понял можно по подробней меня кокраз этот вопрос интересует!


Это вообще не понял куда встовлять...
Вернее понял, но если я напишу в свойствах oncreate, то втарой код куда вставлять?
И ещё где находится компонент Stream?

точно я и незаметил что коряво написал через час исправлю (занят)
________________
Сделай красиво - поставь спасибо
  Ответить с цитированием
Старый 23.01.2012, 09:05   #6
 Разведчик
Аватар для HAHo_tech
 
HAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краях
Регистрация: 16.01.2012
Сообщений: 11
Популярность: -210
Сказал(а) спасибо: 12
Поблагодарили 11 раз(а) в 9 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Шаг 2. - создание отдельного exe'шника для обновления программы.
Т.е создаешь в делфи отдедьный проект, выполняешь инструкция, а потом уже
Шаг 3. - в свойстве "on create" твоего проекта пихаешь код из шага 3
p.s тут:
PHP код:
Stream.SaveToFile('up.exe');
ShellExecute(Form1.Handle'open','up.exe',nilnilSW_SHOWNORMAL); 
up.exe - это имя созданного exe'шники из шага 2
Понятно?
Вот [Ссылки могут видеть только зарегистрированные пользователи. ] есть про класс TStream
можешь еще [Ссылки могут видеть только зарегистрированные пользователи. ] про авто-обновление почитать
________________
Сделай красиво - поставь спасибо
  Ответить с цитированием
Пользователь сказал cпасибо:
3jhlty3 (23.01.2012)
Старый 24.01.2012, 09:25   #7
 Разведчик
Аватар для 3jhlty3
 
3jhlty3 на правильном пути
Регистрация: 17.12.2011
Сообщений: 14
Популярность: 24
Сказал(а) спасибо: 50
Поблагодарили 7 раз(а) в 6 сообщениях
Отправить сообщение для 3jhlty3 с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

А можно ли так сделать, чтобы после обновления старая программа после закрития удалялась, и новая переименовывалась?
________________
Глава Ордена Чёрных Рыцарей
  Ответить с цитированием
Старый 24.01.2012, 14:40   #8
 Разведчик
Аватар для HAHo_tech
 
HAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краях
Регистрация: 16.01.2012
Сообщений: 11
Популярность: -210
Сказал(а) спасибо: 12
Поблагодарили 11 раз(а) в 9 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

1) старый exe будет удаляться
2) В шаге 2 есть строчка.
Stream.SaveToFile('имя сохраняемого файла.exe');
________________
Сделай красиво - поставь спасибо
  Ответить с цитированием
Старый 24.01.2012, 16:06   #9
 Разведчик
Аватар для 3jhlty3
 
3jhlty3 на правильном пути
Регистрация: 17.12.2011
Сообщений: 14
Популярность: 24
Сказал(а) спасибо: 50
Поблагодарили 7 раз(а) в 6 сообщениях
Отправить сообщение для 3jhlty3 с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Хочешь тебя исправлю? Чтобы всё работало надо в Uses надо добавить ShellAPI у меня без этого компонента не работало..
________________
Глава Ордена Чёрных Рыцарей
  Ответить с цитированием
Старый 07.02.2012, 21:07   #10
Заблокирован
 Разведчик
Аватар для Evedence
 
Evedence на правильном путиEvedence на правильном пути
Регистрация: 11.01.2012
Сообщений: 19
Популярность: 190
Сказал(а) спасибо: 111
Поблагодарили 60 раз(а) в 27 сообщениях
Отправить сообщение для Evedence с помощью ICQ Отправить сообщение для Evedence с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Цитата:
Сообщение от HAHo_techПосмотреть сообщение
1) Хост: 1 штука

Просто любой сайт?? или что..
  Ответить с цитированием
Старый 13.02.2012, 18:49   #11
 Разведчик
Аватар для syne
 
syne на правильном пути
Регистрация: 11.03.2009
Сообщений: 2
Популярность: 24
Сказал(а) спасибо: 2
Поблагодарили 7 раз(а) в 2 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

в качестве хоста рекомендую сервисы типа dropbox.

Я вот более извращенно писал апдейтер - под несколько программ
Схема такая:
на хосте лежит ini файл:
Код:
[id програмы]
name=супер пупер программа
link=ссыль на ini файл от данной программы
ini файл от программы:
Код:
[update]
Version=x
Link=host/filename.exe
WhatsNew1=бла бла бла
WhatsNew2=бла бла бла
...
Апдейтер умел:
обновлять сам себя (долго мучался с удалением своего же файла)
обновлять свою dll (юзалась для подключения к обновляемой программе - писала версию программы в файлик, а так же юзалась апдейтером (или не юзалась, не помню))
Обновлять программу (состоящую из 1 exe файла, либо надо было все хитрым образом паковать в архив, архив после распаковки не удалялся)
Собирать статистику общего кол-во запусков программы и запусков в первый раз (нужен хостинг хотябы с php).

уже давно работает (почти 8000 запусков), пока никто не жаловался (хотя никто и не стал бы). Только на проект забил, вот думаю выкладывать его в для использования со стороны или нет.

Кстати, антивирусам пофигу

Последний раз редактировалось syne; 13.02.2012 в 18:53.
  Ответить с цитированием
Старый 14.09.2012, 19:50   #12
 Разведчик
Аватар для bedlam
 
bedlam никому не известный тип
Регистрация: 05.12.2010
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Офигеть, автор даже переписку скопировал:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Укажите копирайт.

Syne, не могли бы вы поделиться своим способом
  Ответить с цитированием
Старый 08.01.2015, 10:32   #13
 Разведчик
Аватар для Shinobi3456
 
Shinobi3456 никому не известный тип
Регистрация: 08.01.2015
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Прошу прощения что врываюсь в вашу тему. Хотел бы предложить свой вариант.
Я переменяю следующую схему обновления. На серваке хранится версии программы там название папки это версия проги в ней лежит exe-файл который обновляем. Доступ можно получить по 80 порту. Есть специальная таблица в базе на MySql где для каждого обновляемого файла хранится версия текущая, путь к программе и md5-хэш скачиваемого файла. Запускается программа она проверяет версию текущего файла, который лежит рядом. Если нужно то получает с сервера откуда качать и md5-хэш файла. Старую версию просто пока бэкапим. Скачался файл сразу проверяем его на целостность с помощью сравнивания md5-хэша. Все нормально удаляем бэкап, и запускаем прогу. Не все нормально удаляем скачанный файл, бэкап возвращаем наместо, а в лог в базе пишем что не удалось обновиться. Если интересно схема подробние расмотрена в статье [Ссылки могут видеть только зарегистрированные пользователи. ] . Есть примеры кода.
  Ответить с цитированием
Старый 29.09.2016, 22:35   #14
Заблокирован
 Разведчик
Аватар для Posbit
 
Posbit на правильном путиPosbit на правильном пути
Регистрация: 10.08.2016
Сообщений: 3
Популярность: 198
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

alphablendvalue := 0
таким значением ты закрываешь всю форму при компиляций! , можно-же проще! , просто твой вариант не делать , но делать дальше , если производить компиляцию в Delphi через F9 даже через контрл альт делит вытащить EXE сложно......
  Ответить с цитированием
Старый 07.10.2016, 12:57   #15
 Разведчик
Аватар для dieselryder
 
dieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нацииdieselryder гордость нации
Регистрация: 20.12.2013
Сообщений: 2
Популярность: 3344
Сказал(а) спасибо: 1
Поблагодарили 22 раз(а) в 15 сообщениях
Отправить сообщение для dieselryder с помощью Skype™
 
По умолчанию Re: [Delphi] Пишем простой модуль авто-обновления

Цитата:
ShowMessage('Ошибка');*//*форма*зависнет*,*можно*поставить*задержку*чтоб* пользователь*успел*нажать*ок

Нужно работать с процессами, чтобы все было по нормальному. Тогда и не будет зависать.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Тема с продажей Бонус-кодов
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Пишем простой Auto-Potter для Perfect World [Delphi 7] Хакерок:) Разработка ПО для Perfect World 53 08.08.2017 18:19
[Статья] Пишем брутфорс [Delphi] ReAct1[on] Pascal/Delphi 1 16.11.2012 20:34
[Баг] Авто Кик за простой (AFK) fanatik565 Читы и хаки для CS 1 21.07.2010 15:12

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 16:00.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net