Консультация № 59971
24.10.2006, 02:09
0.00 руб.
0 3 3
Доброго здоровья! Посоветуйте, как бы сделать самому (или может, есть что готовое) для создания автоапгрейда программы. Что б, запустил exe, а он сам все установил, путь и что куда - сидит в реестре, найти можно. Но вот всё остальное не ясно, чем и как паковать и что б был один setup.ехе не ясно, да и сценарии обновления тоже как грамотно реализовать не знаю. Можно конечно воспользоваться штатным InstallShield, но очень он тяжёл, 3.5 мБ добавляет - просто ужас. И как можно реализовать проверку доступности и загрузку обновления на HTTP сервере? Спасибо огромное откликнувшимся :-)

Обсуждение

Неизвестный
24.10.2006, 02:51
общий
это ответ
Здравствуйте!

Вместо InstallShield советую использовать Inno Setup. Очень гибкая настройка и бесплатный.

Неизвестный
24.10.2006, 12:49
общий
это ответ
Здравствуйте, SuperMaxx!

http://www.innosetup.com/
там свежая версия (5.1.18)
у меня 4.1.1 делала ехешник 320кб + мои упакованные данные

А по поводу обновления можно использовать простой "тупой" способ:
положить по определенному адресу текстовый файлик (например, UPDATE.txt),
в нем писать версию выложенного обновления (например, 1.0.0.18).
Ехешник клиента читает этот файл, проверяет версию обновления со своей, при несовпадении качает уже UPDATE.exe и потом его запускает, а сам завершает свою работу (для того чтобы UPDATE.exe смог его заменить).
Неизвестный
24.10.2006, 22:20
общий
это ответ
Здравствуйте, 1!
var
F:TStream;
F1:TextFile;
S:string;

function ExtractFileNameFromURl(URL:string):string;
var
i:integer;
begin
for i:=Length(URL) downto 0 do
if URL[i]=‘/‘ then
begin
Result:=Copy(URL,i,Length(URL));
Exit;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
F:=TFileStream.Create(GetCurrentDir+‘\new.txt‘,fmCreate);
IdHTTP1.Get(‘http://www.program.ua/upgrade/new.txt‘,F);
F.Free;
AssignFile(F1,‘new.txt‘);
Reset(F1);
While Not(Eof(F1)) do
begin
Readln(F1,S);
F:=TFileStream.Create(GetCurrentDir+‘\‘+ExtractFileNameFromURl(S),fmCreate);
IdHTTP1.Get(S);
end;
end;
Форма ответа