知识大全 用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编制趣味动画鼠标

用Delphi编制趣味动画鼠标  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们经常可以看到许

知识大全 用Delphi编制IP地址转换器

用Delphi编制IP地址转换器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 编制报表程序[4]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 编制报表程序[1]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 编制报表程序[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>//tracklinktechcn/?m_id=dangdang

知识大全 编制报表程序[3]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>  ()为了更好地说明QuickReport的使用我们将从头开始

知识大全 用Delphi 3.0编制MP3音乐点歌台

用Delphi3.0编制MP3音乐点歌台  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Delp

知识大全 用Delphi制作录音程序

用Delphi制作录音程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Delphi是Inpr

知识大全 用Delphi创建服务程序

小技巧:用Delphi创建服务程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Windows/X

知识大全 用Delphi编码实现程序自启动

用Delphi编码实现程序自启动  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一程序自启动的原