如何做一个在线更新程序?(50分)

  • 主题发起人 主题发起人 yhaoli
  • 开始时间 开始时间
Y

yhaoli

Unregistered / Unconfirmed
GUEST, unregistred user!
如何做一个在线更新程序,检查是否有新版本,如果有就下载安装。
 
一般是这样的:
用一个类似Thttpget的控件,就是能用http协议下载的控件;
在主页的空间上建一个.ini放着版本信息,更新时先下ini,判断是否有新版本,有的话就下
那个文件啦[:)]
 
旧资料中有类似问题 怎么还有人这么懒不想动手啊?查一下就OK了.可惜的分分哦:)
 
dingbaosheng你给我贴出来我给你25分。
 
不想自己实现的化使用
AutoUpgrader.Pro.v3.0.3.For.Delphi.And.BCB.WinALL.Cracked-EMBRACE
它吧
 
Appcontrols Suite里面有一个acAutoUpgrader,可实现程序自动更新!
 
faint ~~~~~~现在才看到这个贴子浮出来:
下边是你要的东东
有三种特殊方法可以使程序完成自升级
1. 批处理文件法。 在主程序中调用另一个程序.此程序经过延时(等待主程序关闭,释放内存后),生成一个批处理文件.然后主程序关闭,然后运行批处理
批处理文件中写
delete main_exe.exe
ren update_exe.exe main_exe.exe
delete %0 //删除自己.(批处理文件自删除)
2. 主程序将自己改名为 main_exe.old
然后将 update_exe 改为 main_exe.exe
后一法最简单. 却容易被人忽视.
附加说明:
Windows NT 有一个函数 MoveFileEx 可以在重新启动后删除文件(参数MOVEFILE_DELAY_UNTIL_REBOOT) 但是, Windows 9x 不支持这个标志
每次我们重新启动机器后, Windows自动在Windows目录中寻找一个叫 WININIT.INI 的文件.这个文件可以包含删除,改名,COPY文件的操作. 所以我们可以放置 'DESTINATION=SOURCE'字符串在[Rename] 区
. 如果 Destination 设置为 NUL, 那么 Source 文件将被删除. 注意此操作中文件名必须是短格式文件名
(因为此操作的加载是在 系统加载长文件名支持前完成的)

举例:
[rename]
NUL=C:/TEMP.TXT
NUL=C:/TEMP2.TXT
C:/NEW_DIR/EXISTING.TXT=C:/EXISTING.TXT
C:/NEW_DIR/NEWNAME.TXT=C:/OLDNAME.TXT
C:/EXISTING.TXT=C:/TEMP/NEWFILE.TXT

下面是一个函数, 演示如何进行上述操作. 此函数添加 NUL=FileName 到Wininit.ini.如果Wininit.ini
不存在.这个函数会自动建立它.
procedure DeleteLater(Filename: string);
var
Wininit : string;
Buffer : array[0..MAX_PATH] Of char;
I,J : integer;
Ini : TStringList;
begin

FillChar(Buffer, SizeOf(Buffer), 0);
GetWindowsDirectory(Buffer, SizeOf(Buffer));
Wininit := IncludeTrailingBackslash(Buffer) + 'Wininit.ini';

Ini := TStringList.Create;
try
if FileExists(Wininit) then
Ini.LoadFromFile(Wininit);
for I := 0 to Ini.Count - 1do
Ini := Uppercase(Ini);

J := Ini.IndexOf('[RENAME]');
if J = -1 then

begin

Ini.Add('[Rename]');
J := 0;
end;

FillChar(Buffer, SizeOf(Buffer), 0);
GetShortPathName(PChar(Filename), Buffer, SizeOf(Buffer));
Ini.Insert(J+1, 'NUL=' + Buffer);
Ini.SaveToFile(Wininit);
finally
Ini.Free;
end;

end;


 
补充说明:
实现在线升级步骤:
1。找一个FTP服务器
2。将要升级的文件与版本记录文件上传。
3。下载版本记录文件, 检查是否要升级。
4。如要升级的话用FTP控件下载。
5。覆盖原文件。如何覆盖法见上面我所贴三种方法.......
FTP的程序Delphi中有例子。
 
接受答案了.
 
那就给分吧!
 
后退
顶部