知识大全 用Delphi编制可自动升级程序
Posted 文件
篇首语:不畏过往,不惧将来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Delphi编制可自动升级程序相关的知识,希望对你有一定的参考价值。
用Delphi编制可自动升级程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在编制了一个应用程序后的维护阶段 我们会面临给应用程序升级的工作 无疑 手工升级的工作是十分繁琐的 你可能会需要到用户的机器上去更新文件 可是 如果能编一个自动升级程序 放在网络上 让用户下载 只需执行一下就完成升级工作 不是很方便吗?其实 用Delphi可以很方便地编制出这样一个程序以下是我们的例子 设我们已经有一个应用程序This exe 要对它升级 用来升级的程序为Upgrade exe
This的工程文件框架
program THIS;
uses
SysUtils
Windows
Forms
;
我们将它写入代码中 因为这在Delphi的工程文件中是没有自动生成的 … 部分是你创建的窗体部分.
Var
Fn : String;
TSI : TStartupInfo;
TPI : TProcessInformation;
$R * RES
begin
升级程序 使用FileAge来检查原来应用程序的建立时间 如果检测到的是旧版本 则提示升级:
IF FileAge( SomeServerSomeDirthis exe ) 〉 FileAge(ParamStr( )) THEN
IF Application MessageBox( 这是一个更新版本的THIS EXE +# 你要得到新版本的升级文件吗? Upgrade Time! ) = THEN
Begin
运行升级程序时 升级程序应与原主程序this exe在同一目录下 如果当它启动时 这个版本主程序应该退出 但要保证它不会删除任何文件 因为此时Application Initialize还没有被调用 代码如下:
Fn:= ExtractFilePath(ParamStr( ))+ UpgradeThis exe ;
FillChar(TSI SizeOf(TSI) );
TSI CB := SizeOf(TSI);
IF CreateProcess (PChar(Fn) NIL NIL NIL False
DETACHED_PROCESS NIL NIL TSI TPI)
THEN Exit
但是 如果 升级程序 由于某些原因没有运行 我们此时应该告诉用户 他能通过其他方法得到一个更新的程序版本 这时我们依然退出主程序以便用户升级 如果必要的话 也可以继续装入并运行旧版本
ELSE
Begin
messagebeep( );
Application MessageBox( 不能完成文件拷贝 + 请手工拷贝! Copy Error! );
Exit;
End;
End;
Application Initialize;
Application Title := This ;
Application HelpFile := This hlp ;
autocreate forms etc
Application Run;
end
如果自动升级程序是一个控制台程序 那么一定要保证正确的控制台程序连接选项设置
program UpgradeThis;
uses
Forms
SysUtils
Windows;
Var
Fn : String;
TSI : TStartupInfo;
TPI : TProcessInformation;
$R * RES
begin
用CopyFile来拷贝新版本的文件 同FileAge一样 它不考虑标准命名格式的路径和文件名
IF CopyFile( SomeServerSomeDirthis exe
PChar(ExtractFilePath(ParamStr( ))+ this exe ) False) THEN
Begin
一旦这些新版本的文件被拷贝到系统中 它就应该能够运行了 而且也没有理由不运行 所以 这里基本上不需要加入出错检测的代码
那么 例子中使它运行并简单处理错误的代码如下:
Fn := ExtractFilePath(ParamStr( ))+ this exe ;
FillChar(TSI SizeOf(TSI) );
TSI CB := SizeOf(TSI);
CreateProcess(PChar(Fn) NIL NIL NIL False DETACHED—PROCESS NIL NIL TSI TPI);
End
ELSE
Application MessageBox( 不能拷贝文件THIS EXE Error! mb_OK);
end
需要注意的是 在这些用来升级程序的代码中 并没有用到任何Application Initialize和Application Run 这些方法同样可以被引用来作检查新版本的帮助文件(用GetWindowsDir或GetWindowsDirectory并把 Help 加入到用来升级的程序中)或用来检测 升级程序 是否是新的版本
cha138/Article/program/Delphi/201311/24732相关参考
用Delphi编制趣味动画鼠标 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们经常可以看到许
用Delphi编制IP地址转换器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>> ()为了更好地说明QuickReport的使用我们将从头开始
用Delphi3.0编制MP3音乐点歌台 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delp
用Delphi制作录音程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi是Inpr
小技巧:用Delphi创建服务程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Windows/X
用Delphi编码实现程序自启动 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一程序自启动的原