如何制作delphi程序安装盘 ? 在Delphi5的安装盘中有InstallShield Express 4专门用做Delphi的安装盘。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请看中国铁道出版社程序设计delphi5.0(高级编程篇)书402页 呵呵,最好是用DELPHI6里的那个做! 很多DELPHI5的光盘里都没有installshield,不过你可以找一下DELPHI4的光盘,里面有installshield for delphi4,经过我的测试,它可以用来打包DELPHI5的程序 利用Delphi5的安装盘,安装InstallShield Express 4,运行即可做Delphi的安装盘。 作专业的安装程序当然是:InstallShield6啦!!!现在,所有的软件都用它打包,专业!!!!不但可以将你的程序用到所有开发包打进去,而且可以制作安装效果(如:百叶窗、渐变等多多效果)、嵌入多媒体内容(如:AVI、WAVE等),最重要的是可以自己写脚本!!!不得了,再发展下去可以作为一门语言了(它的语法夹杂了BASIC、C++的特怔)!强烈推荐!!! 作专业的安装程序当然是:InstallShield6啦!!!现在,所有的软件都用它打包,专业!!!!不但可以将你的程序用到所有开发包打进去,而且可以制作安装效果(如:百叶窗、渐变等多多效果)、嵌入多媒体内容(如:AVI、WAVE等),最重要的是可以自己写脚本!!!不得了,再发展下去可以作为一门语言了(它的语法夹杂了BASIC、C++的特怔)!强烈推荐!!! 引用作者:俞文群 的一篇文章:用Delphi编写安装程序 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步,同时也是很重要的一步,因为运行安装程序往往是用户做的第一步操作。 很多报刊文章介绍了许多如何利用installshield等工具软件来制作安装程序的方法,这种办法可以很快建立起较常见的安装模式,但用这种办法也有一些不足,如做成的安装程序一般较大;风格较单一;不能灵活的控制启动方式和快捷方式。其实安装程序的的几个运行步骤较固定,我们完全可以自己来编写安装程序。下面就详细介绍如何用DELPHI编写具有自己软件特色的安装程序。 安装程序要达到的几个原则,如配置的一次性等,在有关杂志上已有许多文章介绍,就不再累述。这里主要介绍安装程序编写中几个主要过程: 1、将需要安装的程序制作成资源文件 Step 1:编写myres.rc资源脚本文件,可用记事本等编写。 MYDBSRC mydbsrcfile c:\resdemo\mynbdb.mdb MYDBJET mydbjetfile c:\resdemo\mdac_typ.exe MYDBAPP mydbappfile c:\resdemo\Tnbdemo.exe 7001 Icon c:\resdemo\setup.ico Step 2:利用BRCC32编译生成资源文件myres.res。 brcc32.exe myres.rc 2、编写安装程序代码 Step 1: 在setup.dpr文件中加入{$R mymyres.RES} 语句,这样在编译文件时包含资源文件。 Step 2: 编写安装程序背景界面。 //界面色彩渐变效果是通过用渐变的画刷刷绘依次相邻的矩形块实现的。 //也可以实现其它特殊效果的安装界面。 var i,j:Integer; Dct:TRect; begin form1.WindowState:=wsMaximized; j:=form1.width; //获得表单高度 for i:=0 to 255 do //此处设置RGB()中一个颜色值 begin Canvas.Brush.Color:=RGB(0,0,255-i); //每次画矩形的画刷颜色 (左,上,右,下) //Dct:=Rect(i*2,0,(i+1)*2,j); Dct:=Rect(0,i*2,j,(i+1)*3); //每次刷绘的矩形区域 Canvas.FillRect(Dct); Form1.Canvas.TextRect(Dct,30,40,'宁波大学课件管理系统 v1.0'); //填充颜色 end; end; Step 3:创建主程序工作目录 //设置目录环境及配置文件 if not DirectoryExists(EdtDir.Text) then // if MessageBox(getfocus,'该目录不存在,是否创建该目录?','询问',1) = idOK then try ForceDirectories(EdtDir.Text); except MessageBox(getFocus,'创建目录失败!','信息',0); Exit; end // else Exit; // ModalResult := mrOK; Step 4:生成主程序配置文件 变量: var setupinfo : TiniFile; //配置当前数据工作路径,选择与自己系统有关的驱动程序。 setupinfo:= Tinifile.Create( trim(FrmPathSelect.EdtDir.Text)+'\setup.ini'); setupinfo.WriteString('access','workdbpath',trim(FrmPathSelect.EdtDir.Text)+'\mynbdb.mdb'; setupinfo.WriteString('access','backdbpath',trim(FrmPathSelect.EdtDir.Text)+'\mynbdbbak.mdb'); setupinfo.Free; Step 5:从资源文件中还原有关文件。 变量: var res:tresourcestream; resname,resnewname:string; RegFile:TRegIniFile; begin //从资源文件中还原数据库文件 resnewname:=trim(FrmPathSelect.EdtDir.Text)+'\mynbdb.mdb'; resname:='MYDBSRC'; res:=tresourcestream.Create(hinstance,resname,pchar('mydbsrcfile')); res.savetofile(resnewname); res.free; //从资源文件中还原主程序文件 resnewname:=trim(FrmPathSelect.EdtDir.Text)+'\Tnbdemo.exe'; resname:='MYDBAPP'; res:=tresourcestream.Create(hinstance,resname,pchar('mydbappfile')); res.savetofile(resnewname); res.free; //在注册表中写入主程序路径名及执行文件名的信息,以便在 //升级主程序时用到。 RegFile := TRegIniFile.Create; RegFile.RootKey := HKEY_LOCAL_MACHINE; RegFile.WriteString('SOFTWARE\mynb','exepath',trim(resnewname)); RegFile.Free; end Step 6:安装数据库驱动(与SETP 4对应) //安装数据库驱动程序 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的调用。在安装过程中的一些提示性界面及每一个步骤大家可以根据自己的需要而制作,这样做出来的安装程序精练,而且风格可以做的很特别。(赛迪net 作者:俞文群 2001年03月16日 10:36) delphi中的edit的录入内容如何居中 怎么使listbox里的数值按大小排列? 怎么取得WinExec的执行结果? !!!控件的指针 delphi的门真难入!!!! 按照要求,我要自己写一个日期类,可以进行日期的基本运算,大家有什么好的建议? 请问这条插入语句对吗? 关于bde的一个问题 事务处理问题 Exe文件捆绑问题........... 谁想要D版delphi6? 怎样用猫来传文件
当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步,同时也是很重要的一步,因为运行安装程序往往是用户做的第一步操作。
很多报刊文章介绍了许多如何利用installshield等工具软件来制作安装程序的方法,这种办法可以很快建立起较常见的安装模式,但用这种办法也有一些不足,如做成的安装程序一般较大;风格较单一;不能灵活的控制启动方式和快捷方式。其实安装程序的的几个运行步骤较固定,我们完全可以自己来编写安装程序。下面就详细介绍如何用DELPHI编写具有自己软件特色的安装程序。 安装程序要达到的几个原则,如配置的一次性等,在有关杂志上已有许多文章介绍,就不再累述。这里主要介绍安装程序编写中几个主要过程: 1、将需要安装的程序制作成资源文件
Step 1:编写myres.rc资源脚本文件,可用记事本等编写。 MYDBSRC mydbsrcfile c:\resdemo\mynbdb.mdb MYDBJET mydbjetfile c:\resdemo\mdac_typ.exe MYDBAPP mydbappfile c:\resdemo\Tnbdemo.exe 7001 Icon c:\resdemo\setup.ico Step 2:利用BRCC32编译生成资源文件myres.res。 brcc32.exe myres.rc 2、编写安装程序代码
Step 1: 在setup.dpr文件中加入{$R mymyres.RES} 语句,这样在编译文件时包含资源文件。 Step 2: 编写安装程序背景界面。 //界面色彩渐变效果是通过用渐变的画刷刷绘依次相邻的矩形块实现的。 //也可以实现其它特殊效果的安装界面。 var i,j:Integer; Dct:TRect; begin form1.WindowState:=wsMaximized; j:=form1.width; //获得表单高度 for i:=0 to 255 do //此处设置RGB()中一个颜色值 begin Canvas.Brush.Color:=RGB(0,0,255-i); //每次画矩形的画刷颜色 (左,上,右,下) //Dct:=Rect(i*2,0,(i+1)*2,j); Dct:=Rect(0,i*2,j,(i+1)*3); //每次刷绘的矩形区域 Canvas.FillRect(Dct); Form1.Canvas.TextRect(Dct,30,40,'宁波大学课件管理系统 v1.0'); //填充颜色 end; end; Step 3:创建主程序工作目录 //设置目录环境及配置文件 if not DirectoryExists(EdtDir.Text) then // if MessageBox(getfocus,'该目录不存在,是否创建该目录?','询问',1) = idOK then try ForceDirectories(EdtDir.Text); except MessageBox(getFocus,'创建目录失败!','信息',0); Exit; end // else Exit; // ModalResult := mrOK; Step 4:生成主程序配置文件 变量: var setupinfo : TiniFile; //配置当前数据工作路径,选择与自己系统有关的驱动程序。 setupinfo:= Tinifile.Create( trim(FrmPathSelect.EdtDir.Text)+'\setup.ini'); setupinfo.WriteString('access','workdbpath',trim(FrmPathSelect.EdtDir.Text)+'\mynbdb.mdb'; setupinfo.WriteString('access','backdbpath',trim(FrmPathSelect.EdtDir.Text)+'\mynbdbbak.mdb'); setupinfo.Free; Step 5:从资源文件中还原有关文件。 变量: var res:tresourcestream; resname,resnewname:string; RegFile:TRegIniFile; begin //从资源文件中还原数据库文件 resnewname:=trim(FrmPathSelect.EdtDir.Text)+'\mynbdb.mdb'; resname:='MYDBSRC'; res:=tresourcestream.Create(hinstance,resname,pchar('mydbsrcfile')); res.savetofile(resnewname); res.free; //从资源文件中还原主程序文件 resnewname:=trim(FrmPathSelect.EdtDir.Text)+'\Tnbdemo.exe'; resname:='MYDBAPP'; res:=tresourcestream.Create(hinstance,resname,pchar('mydbappfile')); res.savetofile(resnewname); res.free; //在注册表中写入主程序路径名及执行文件名的信息,以便在 //升级主程序时用到。 RegFile := TRegIniFile.Create; RegFile.RootKey := HKEY_LOCAL_MACHINE; RegFile.WriteString('SOFTWARE\mynb','exepath',trim(resnewname)); RegFile.Free; end Step 6:安装数据库驱动(与SETP 4对应) //安装数据库驱动程序 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的调用。在安装过程中的一些提示性界面及每一个步骤大家可以根据自己的需要而制作,这样做出来的安装程序精练,而且风格可以做的很特别。(赛迪net 作者:俞文群 2001年03月16日 10:36)