用Delphi编写安装程序
http://tech.ddvip.com 2007年03月20日 社区交流
本文详细介绍用Delphi编写安装程序
//安装数据库驱动程序
var
cmdlinepchar:array[0..120] of char;
startupinfo:tstartupinfo;
processinfo:tprocessinformation;
begin
screen.cursor:=crhourglass;
strpcopy(cmdlinepchar,trim(FrmPathSelect.EdtDir.Text)+'mdac_typ.exe /q');
fillchar(startupinfo,sizeof(startupinfo),#0); //置0
with startupinfo do
begin
cb:=sizeof(startupinfo);
dwflags:=startf_useshowwindow or startf_usestdhandles;
wshowwindow:=sw_hide; //隐藏被调用程序窗口
end;
if createprocess(nil,cmdlinepchar,nil,nil,true,0,nil,nil,startupinfo,processinfo) then
//创建进程
begin
waitforsingleobject(processinfo.HProcess,infinite); //等待进程结束
end
else
begin
exit;
end;
screen.cursor:=crDEFAULT;
DeleteFile(PChar(trim(FrmPathSelect.EdtDir.Text)+'mdac_typ.exe'));
end;Step 7:创建程序组
变量:
var
smacro:string;
szmacro:array[0..254] of char;
sgroupdesc,sgroupname:string;
sprogdesc:string;
sprogicon:string;
//创建主程序组
//打开对话通路
if ddeclientconv1.OpenLink then
begin
//建立组群
sgroupdesc:='宁波大学课件管理系统 ';
sgroupname:='宁波大学课件管理系统 v1.0';
//组成宏指令
smacro:='[creategroup('+sgroupdesc+','+sgroupname+')]';
strpcopy(szmacro,smacro); //转成null-term 字串
ddeclientconv1.ExecuteMacro(szmacro,false); //执行宏指令
//建立ICON图像
sprogicon:=trim(FrmPathSelect.EdtDir.Text)+'Tnbdemo.exe';;
sprogdesc:='宁波大学课件管理系统';
smacro:='[additem('+sprogicon+','+sprogdesc+')]';
strpcopy(szmacro,smacro);
ddeclientconv1.ExecuteMacro(szmacro,false);
ddeclientconv1.CloseLink;
end;
Step 8:创建桌面快捷方式
//uses shlobj,comobj,activex;
var
tmpObject:IUnknown;
tmpSLink:IShellLink;
tmpPFile:IPersistFile;
PIDL:PItemIDList;
StartupDirectory : array[0..MAX_PATH] of Char;
StartupFilename : String;
LinkFilename : WideString;
c1:THandle;
begin
StartupFilename := ''Tnbdemo.exe'';
tmpObject := CreateComObject(CLSID_ShellLink);
tmpSLink := tmpObject as IShellLink;
tmpPFile := tmpObject as IPersistfile;
tmpSLink.SetPath(pChar(StartupFilename));
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));
SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL);
SHGetPathFromIDList(PIDL,StartupDirectory);
LinkFilename := StartupDirectory + 'mynotepad.lnk';
showmessage(linkfilename);
tmpPFile.Save(pWChar(LinkFilename),FALSE);
c1:=windows.FindWindowEx(windows.FindWindowEx(windows.FindWindow('Progman','Program Manager'),0,'SHELLDLL_DefView',''),0,'SysListView32','');
PostMessage(c1,WM_KEYDOWN,VK_F5,0);
PostMessage(c1,WM_KEYUP,VK_F5,1 shl 31);
end;
Step 9:重新启动机器
begin
ExitWindowsEx(2,0);
end;以上是程序的主要语句部分,从本人的开发系统中剪出来,用到了一些WIN API的调用。在安装过程中的一些提示性界面及每一个步骤大家可以根据自己的需要而制作,这样做出来的安装程序精练,而且风格可以做的很特别。
责编:豆豆技术应用
正在加载评论...