用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的调用。在安装过程中的一些提示性界面及每一个步骤大家可以根据自己的需要而制作,这样做出来的安装程序精练,而且风格可以做的很特别。

责编:豆豆技术应用

正在加载评论...