Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> автомотическое обновлений программы, как реализовать? 
V
    Опции темы
z-END
Дата 31.5.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Femida открою тебе секрет, что даже у виндовс ХП есть версия, и она выше чем у 95, 98, 2000, МЕ, щелкни правой мышкой на "мой компутер" и выбери свойства и посмотри вкладку "общие" smile)
Добавлено @ 17:09
Но вообще согласен, ситауцая такая возможна.. но по одной причине - нерадивые разработчики софтаsmile


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
mvdr
Дата 31.5.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



Это не секрет smile
ведь драйвера оповещают каким то образом?! (но некоторые, сволочи нет)


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Snowy
  Дата 31.5.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вот, нарисовал процедурку обновления с инета.
Для ее работы требуется, чтобы было подключение к инету.
Хотя... И без него не должно сглючить.
Код

procedure InetUpdate;
const
  url='http://www.mysite.ru/myprog.exe'; // откуда качать новую версию
  lm='last.ver'; // Файл, где храним дату последнего обновления
  tmp='temp.exe'; // временный файл, куда скачать новую версию
  bat='$$tmp$$.bat'; // временный батник
var
  http: TIdHttp;
  s,t:  string;
  m:    TMemoryStream;
  sl:   TStringList;
begin
  sl:=TStringList.Create;
  m:=TMemoryStream.Create;
  try
    sl.LoadFromFile(lm); // читаем из файла нашу дату
    t:=sl[0];
  except t:='-'; end;
  http:=TIdHttp.Create(nil);
  http.Head(url); // спрашиваем, какая дата у файла в инете
  s:=http.Response.RawHeaders.Values['Last-Modified'];
  if s<>t then // если в инете другая - закачать
    try
      // ShowMessage('Есть новая версия');
      http.Get(url,m); // закачать
      m.SaveToFile(tmp); // сохраняем во временный файл
      m.Position:=0;
      // ShowMessage('Готов к обновлению');
      sl.Clear;
      sl.Add(s);
      sl.SaveToFile(lm); // обновляем дату в файле с датой
    finally
      http.Free; m.Free;
    end;
  if FileExists(tmp) then begin // если есть новый файл, делаем батник
    sl.Clear;
    sl.Add(':start');
    sl.Add('del "'+ParamStr(0)+'" >nul');
    sl.Add('if FileExist "'+ParamStr(0)+'" goto start');
    sl.Add('copy '+tmp+' "'+ParamStr(0)+'"');
    sl.Add('del '+tmp+' >nul');
    sl.Add('"'+ParamStr(0)+'"');
    sl.Add('del %0 >nul');
    sl.SaveToFile(bat);
  end;
  sl.Free;
  if FileExists(bat) then begin // если есть батник, стартуем замену себя
    WinExec(bat,SW_HIDE);
    Application.Terminate;
  end;
end;

P.S. Сам не проверял, но работать должно.
P.P.S. Вопрос с прокси решайте уже сами.
P.P.P.S. Почему дату храню в отдельном файле? А потому, что мне нужно хранить ее в том же виде, какой выдает сервер. А разные сервера оформляют строку по разному.

Это сообщение отредактировал(а) Snowy - 31.5.2005, 17:41
PM MAIL   Вверх
Гость_Юра
Дата 31.5.2005, 18:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот еще вопрос, может конечно не в тему(тогда сории smile

Например я сделал прогу версии 1.2.0 в ней оказался большой глюк(например "if ... then" забыл поставить коегде) и я быстро сделел версию 1.2.1 без глюка. И выложил новую версию. Но exe'шник моей проги весть 2,5 mb и юзеру качать каждый раз 2,5 метра просто влом(или дорого). Как бы сделать такую маленькую прожку(патч) которая бы "превращала" прогу версии 1.2.0 в 1.2.1.
  Вверх
z-END
Дата 31.5.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



в JEDI есть для этого компонет. или пиши сам, смысл патча я писал выше


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Гость_Юра
Дата 31.5.2005, 19:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подкить пример использования Джедаевскоко(JEDI) компонента, а то я сёдня туплю.
  Вверх
Snowy
Дата 1.6.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



У Кладова есть утилитка, которая делает маленький патч.
Как раз для таких целей, когда поменялся не байтик в коде, а сменилась версия..
Если сходить на страницу KOL (http://bonanzas.rinet.ru/) , там найдешь.
(http://bonanzas.rinet.ru/updater.zip - GUI версия)
(http://bonanzas.rinet.ru/CUpdater.zip - консольная версия)
PM MAIL   Вверх
Неназываемый
Дата 2.6.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



А я просто дистрибутив сделал с BPL а обновляется ASPack'нутый сжатый экзешник. У меня 40 кб. Я думаю это не много даже для диал аперов.
PM MAIL   Вверх
MacTep
Дата 8.2.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Snowy, можно небольшое пояснение по твоему коду??? Что-то не догоняю, что здесь и к чему?
Код

var
  sl: TStringList;
begin
  sl:=TStringList.Create;
  sl.Add(':start');
  sl.Add('del "'+ParamStr(0)+'" >nul');
  sl.Add('if Exist "'+ParamStr(0)+'" goto start');
  sl.Add('copy Новый_файл.exe "'+ParamStr(0)+'"');
  sl.Add('"'+ParamStr(0)+'"');
  sl.Add('del %0 >nul');
  sl.SaveToFile('$$tmp$$.bat');
  WinExec('$$tmp$$.bat',SW_HIDE);
  Application.Terminate;
end;



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Rodman
Дата 8.2.2007, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Код

var
  sl: TStringList;
begin
  sl:=TStringList.Create;
  sl.Add(':start'); //создание лэйбла
  sl.Add('del "'+ParamStr(0)+'" >nul');// удаление программы источника (старой)
  sl.Add('if Exist "'+ParamStr(0)+'" goto start');// проверка на удаление
  sl.Add('copy Новый_файл.exe "'+ParamStr(0)+'"'); // переименовка нового имени на старое
  sl.Add('"'+ParamStr(0)+'"'); // запуск новой версии
  sl.Add('del %0 >nul'); // удаления bat (сам себя)
  sl.SaveToFile('$$tmp$$.bat');// создание bat
  WinExec('$$tmp$$.bat',SW_HIDE); //запуск
  Application.Terminate;
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
MacTep
Дата 8.2.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Rodman, спасибо, сейчас попробую. smile Если работает, сразу плюс тебе в репутацию. smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Snowy
Дата 8.2.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А куда оно денется.
Проверено не один десяток раз smile
PM MAIL   Вверх
Rodman
Дата 8.2.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



я тоже его когда то реализовал... по этому примеру.
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MacTep
Дата 8.2.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Странно, но не работает. Как будто исходный файл просто не удаляется... Не понимаю, что такое...

Добавлено @ 12:50 
Извините, работает. smile Но... Если в названиях папок, в которой лежат эти два файла (старая прога и новая) встречаются русские символы или пробелы - все, прога не работает. Что делать? с этим можно как-то бороться?

И странно так: не работает удаление новой версии файла... странно... она же в конце удалиться должна.... как реализовать - не понятно...

Это сообщение отредактировал(а) MacTep - 8.2.2007, 12:57


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Snowy
Дата 8.2.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

var
  sl: TStringList;
  s:  string;
begin
  sl:=TStringList.Create;
  sl.Add(':start');
  sl.Add('del "'+ParamStr(0)+'" >nul');
  sl.Add('if Exist "'+ParamStr(0)+'" goto start');
  sl.Add('copy Новый_файл.exe "'+ParamStr(0)+'"');
  sl.Add('"'+ParamStr(0)+'"');
  sl.Add('del %0 >nul');
  s := sl.Text; AnsiToOEM(PChar(s), PChar(s)); sl.Text := s;
  sl.SaveToFile('$$tmp$$.bat');
  WinExec('$$tmp$$.bat',SW_HIDE);
  Application.Terminate;
end;

PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1210 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.