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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обновление программы, как реализовать? 
:(
    Опции темы
MacTep
Дата 7.2.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У меня есть программа... Она может стучаться в интернет и в зависимости от какого-либо события хочу сделать ее обновление. Как это сделать? Как можно заменить экзешник программы только что скачанной версией? Сломал голову...


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


CIO
****


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

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



через bat-ник
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MetalFan
Дата 7.2.2007, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(MacTep @  7.2.2007,  11:05 Найти цитируемый пост)
заменить экзешник программы

с пом.другой программы имхо)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rodman
Дата 7.2.2007, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



вот таким....

Добавлено @ 11:08 
Цитата(MetalFan @  7.2.2007,  10:07 Найти цитируемый пост)
с пом.другой программы имхо) 

не вариант...

у меня с батником все работает...
Цитата(MacTep @  7.2.2007,  10:05 Найти цитируемый пост)
Сломал голову...
 и голова целая...

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


Опытный
**


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

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



Через bat - лучший способ на мой взгляд.
PM   Вверх
Sunvas
Дата 7.2.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Хм. Я бы предложил способ, которым пользуется Download Master: он скачивает свою новую инсталку. Все, что требуется - это ее запустить.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
aktuba
Дата 7.2.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


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

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



Есть такой вариант:

1. Скачиваются два или более файла. Первый - установщик, остальные - новые файлы программы.
2. Запускается установщик, который в свою очередь закрывает программу.
3. Установщик копирует все новые файлы поверх старых и, если необходимо, дописывает новые.
4. Установщик запускает программу, а программа закрывает установщик и удаляет его.

Принцип не сложный...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Akella
Дата 8.2.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



а может лучше сделать утилиту?
PM MAIL   Вверх
aktuba
Дата 8.2.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


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

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



Цитата

а может лучше сделать утилиту? 


Можно и так. В этом случае качать доп.файл не нужно. Но я дал лишь алгоритм, а менять его можно как угодно. Например, сделать утилиту, которая будет заменять не целиком файлы, а только измененные фрагменты... Здесь уже дело фантазии...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MacTep
Дата 8.2.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А как можно при помощи бат файла сделать?


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


Эксперт
***


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

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



MacTep, посмотри ссылку в ответе Rodman`a
PM MAIL   Вверх
MacTep
Дата 8.2.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ага, я там уже отписал. Не сильно понимаю, что и к чему там в это батнике. По шагам бы кто объяснил...


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


Опытный
**


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

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



Я делаю обновление одной программы так:
1) Программа скачивает новую верисю во временный файл.
2) Затем запускает батник и закрывается.
3) Батник удаляет (или переименовывает) старую версию и перемещает новую версию на место старой.
4) Затем батник запускает новую версию.
Вроде все.

Вот код из моей программы (все происходит в отдельном потоке):
Код

FileName:=ExtractFilePath(paramstr(0))+'aaspy.upd';
    If DownloadFileToEXE(SourceFile,FileName) then
    begin
      If not fileexists(FileName) then exit;
      SourceFile:=GetTempDir+'aaspy.bat';
      hfile:=CreateFile(Pchar(SourceFile), GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE, 0);
      If hfile=INVALID_HANDLE_VALUE then exit;
      s:='CD '+ExtractFilePath(paramstr(0))+#13#10;
      s:=s+':LOOP'+#13#10;
      s:=s+'ERASE '+ChangeFileExt(ExtractFileName(paramstr(0)),'.bak')+#13#10;
      s:=s+'RENAME '+ExtractFileName(paramstr(0))+' '+ChangeFileExt(ExtractFileName(paramstr(0)),'.bak')+#13#10;
      s:=s+'If EXIST '+ExtractFileName(paramstr(0))+' GOTO LOOP'+#13#10;
      s:=s+'RENAME '+ExtractFileName(FileName)+' '+ExtractFileName(paramstr(0))+#13#10;
      s:=s+'CALL '+ExtractFileName(paramstr(0))+' %1'+#13#10;
      s:=s+'CD '+ExtractFilePath(SourceFile)+#13#10;
      s:=s+'Erase "'+ExtractFileName(SourceFile)+'"'+#13#10;
      WriteFile(hfile,s[1],Length(s),NumWritten,nil);
      //s:='pause'+#13#10;
      //WriteFile(hfile,s[1],Length(s),NumWritten,nil);
      CloseHandle(hfile);
      MessageBox(hAppHandle,Pchar(STR_REBOOT),Pchar(STR_RELOAD),0);
      ShellExecute(hAppHandle, 'Open', PChar(SourceFile), nil, nil, sw_hide);
      SendMessage(hAppHandle,WM_CLOSE,0,0);
    end;


Это сообщение отредактировал(а) Voyager - 8.2.2007, 16:05
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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