自定义安装程序

原创 2005年04月29日 14:43:00
操作注册表,如下:
1.在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall键下建立一个主键,名称任意。
例HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2.在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall下键两个串值,
这两个串值的名称是特定的:DisplayName和UninstallString。
3.给串DisplayName赋值为显示在“删除应用程序列表”中的名称,如'Aiming Uninstall one';
  给串UninstallString赋值为执行的删除命令,如 C:/WIN97/uninst.exe -f"C:/TestPro/aimTest.isu"

ok.这下你的应用程序已经被注册到可由win95删除状态了

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

VS2008自定义安装程序

  • 2011年06月23日 10:53
  • 495KB
  • 下载

VS2010制作网站自定义安装程序

最近在把一个网站打包成安装程序,这方面的文章网上有很多,也看了不少,但因为开发环境的不同,遇到了一些问题,便写下这篇文章记下整个流程(有很多资源都来自互联网,由于条目颇多,所以无法说明其来处,敬请谅解...

在VC中使用自定义资源制作自解压安装程序

一、前言   在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用...

C# winform 安装程序打包(自定义操作)

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和We...

VS.NET中自定义安装程序制作经验总结

内容介绍:介绍自定义安装程序的一些注意事项介绍如何获取自定义界面和系统参数介绍如何在安装过程中添加自定义操作自定义安装程序的一些注意事项:CustomActionData 属性自定义操作的附加数据,读...

VS 制作自定义安装程序

(一)安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web...
  • skc361
  • skc361
  • 2013年07月27日 21:31
  • 704

C# winform 安装程序打包(自定义操作)

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装...
  • swarb
  • swarb
  • 2011年12月15日 16:23
  • 8473

VS 制作自定义安装程序

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装项...
  • fer_ba
  • fer_ba
  • 2012年01月13日 17:51
  • 776

winform程序自定义安装

  • 2016年06月17日 11:44
  • 1.16MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义安装程序
举报原因:
原因补充:

(最多只允许输入30个字)