Delphi制作安装程序


======================================================
注:本文源代码点此下载
======================================================

用delphi制作安装程序时,如何制作程序工作组、如何注册bde、如何重新启动计算机、以及如何获取你想要的路径?下面笔者把制作安装程序时的心得体会和你共享。

■ⅰ:制作程序工作组

本文采用比较简单的一种安装方法,就是调用windows目录下面的一个progman应用程序,用它来制作程序组和程序项,可是如何调用这个应用程序呢?当然是采用dde了,在system区(palette)上有一个tddeclientconv控件,它可以和其他应用程序进行通信,只需把tddeclientconv控件的属性name设为ddeclient,ddeservice设为progman,其他属性默认就可以了。下面就是一段运用tddeclientconv创建程序组的程序。

procedure tform1.button1click(sender: tobject);

var

ac: array [0..$ff] of char;

filename: pchar;

exepath : string ;

begin

filename := @ac;

with ddeclient do

begin

openlink;

//下面三行是建立一个“测试程序组”那样的程序组

exepath := '[creategroup(测试程序组)]' + #13#10;

strpcopy (filename, exepath);

executemacro(filename, false);

begin

//下面三行建立一个“asystem说明文件”程序项。

exepath:= '[additem(c:\windows\system.ini,asystem说明文件)]'+ #13#10;

strpcopy (filename, exepath);

executemacro(filename, false);

//建立一个“bwin应用程序” 程序项

exepath := '[additem(c:\windows\win.ini, bwin应用程序)]' + #13#10;

strpcopy (filename, exepath);

executemacro(filename, false);

end ;

closelink;

end;

end;

图1

把“测试程序组”改成自己想要建立的程序组,“asystem说明文件”、“bwin应用程序”改成自己想要的应用程序名称就可以了,是不是很简单,动手试一下吧。

■ⅱ:如何注册bde

笔者采用的方法很俗,就是简单把注册表里的东西导出来,注册表里的位置是:

hkey_local_machine -〉 software -〉 borland -〉 database engine -〉 settings -〉 drivers 导出注册表文件就ok了。

1.bde动态连接库文件位置设置

key : "hkey_local_machine\software\ borland\database engine"

item : "dllpath"

value : bde动态连接库文件所在位置,如"c:\program files\borland\common files\bde"

(打开"c:\program files\borland\common files\bde\bde32.hlp",

查找"core files"即可了解bde各动态连接库文件的作用)

[hkey_local_machine\software\borland]

[hkey_local_machine\software\borland\ database engine]

"dllpath"="〈insdir〉\\bde"

"resource"="0009"

"configfile01"="〈insdir〉\\bde\\idapi32.cfg"

"usecount"="9"

"saveconfig"="win31"

2.bde语言驱动文件路径设置

key : "hkey_local_machine\software\ borland\blw32"

item : "blapipath"

value : bde语言驱动文件所在路径,如"c:\program files\borland\common files\bde"

(bde语言驱动就是那些*.bll文件)

指定可用的bde语言驱动文件

key : "hkey_local_machine\software\ borland\blw32"

item : "locale_lib#" (#表示数字, 如"locale_lib1"、"locale_lib3"等)

value : 指定各bde语言驱动文件,如"c:\program files\borland\common files\bde\usa.bll"

(一般必需的语言驱动文件有“usa.bll”、“europe.bll”和“fareast.bll”,为保险起见,建议将所有语言驱动都设置上。在安装了delphi3的机器上,用regedit打开注册表,一看你就明白怎么设了。)

[hkey_local_machine\software\borland\ blw32]

"blapipath"="〈insdir〉\\bde"

"locale_lib1"="〈insdir〉\\bde\\usa.bll"

"locale_lib2"="〈insdir〉\\bde\\europe.bll"

"locale_lib3"="〈insdir〉\\bde\\other.bll"

"locale_lib4"="〈insdir〉\\bde\\charset.bll"

"locale_lib5"="〈insdir〉\\bde\\ceeurope.bll"

"locale_lib6"="〈insdir〉\\bde\\fareast.bll"

3.实现注册

知道需要注册哪些内容了,可是怎么注册呢?别着急,接着看,要知道如何注册,这里介绍一种简单的方法,直接调用regedit就可以了。

第一步先把需要注册的内容存为临时文件filename;第二步得到windows目录;第三步调用regedit.exe,regedit.exe的参数就是你要注册的文件filename。

注册文件filename:

procedure regs(filename: tfilename);

begin

//getwindowsdir是获取windows目录,在最后一部分里面详细介绍

myprocess(getwindowsdir + '\regedit.exe filename');

end;

下面这个过程是在regs过程中调用的,就是在delphi中调用一个应用程序,让其在后台运行。

procedure myprocess(execfile:string);

var

mystartupinfo : tstartupinfo;

myprocessinfo : tprocessinformation;

returnword : dword;

mymsg : tmsg;

begin

getstartupinfo(mystartupinfo);

createprocess(nil, pchar(execfile), nil, nil, true, create_default_error_mode,

nil, nil, mystartupinfo, myprocessinfo);

while true do

begin

getexitcodeprocess(myprocessinfo.hprocess, returnword);

if returnword 〈〉 still_active then break;

peekmessage(mymsg,0,wm_paint,wm_paint,pm_remove);

if mymsg.message = wm_paint then dispatchmessage(mymsg);

end;

end;

如果你的安装程序里不需要安装bde,接着往下看其他方面的内容。

■ⅲ:重新启动计算机

只需要调用winapi exitwindowsex就可以了,其中windows 95(或windows 98)下用exitwindowsex(ewx_reboot, 0),windows nt下用exitwindowsex(ewx_logoff, 0)。

■ⅳ:如何获取路径

最后一点,就是如何获取你想要路径,如何获取当前运行程序的路径、获取系统路径、获取windows路径、获取桌面路径,且听我一一道来:

1.获取当前路径:函数返回值即为当前路径

function getinsdir: string;

var

str: string;

begin

str := extractfilepath(application.exename);

result := str ;

end;

2.获取桌面路径:函数返回值即为桌面路径

function getdesktopdir: string;

var

r: tregistry;

begin

r := tregistry.create;

r.openkey('software\microsoft\windows \currentversion\explorer\shell folders', false);

result := r.readstring('desktop');

result := uppercase(result);

r.free;

end;

3.获取windows路径:函数返回值即为windows路径

function getwindowsdir: string;

var

ac: array [1..20] of char;

pc: pchar;

begin

pc := @ac;

getwindowsdirectory(pc, 20);

result := pc;

end;

4.获取系统路径:函数返回值即为系统路径

function getsystemdir: string;

var

ac: array [1..20] of char;

pc: pchar;

begin

pc := @ac;

getsystemdirectory(pc, 20);

result := pc;

end;

以上是制作安装程序的部分解答,详细内容见中国计算机报infocd 2001年第一期。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值