请教一个安装程序的问题,高手请进

wanwangzhiwang 2003-12-25 09:11:31
在制作安装程序时,经常会在安装程序里加上installer的安装。
安装完installer会弹出系统需要重起的提示,但因为安装程序并没有结束,系统不会重起(即使结束,系统也不会自动重起),请问各位:能不能把installer的重起提示去掉?
...全文
76 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyangyao970 2004-01-06
  • 打赏
  • 举报
回复
学习
wanwangzhiwang 2004-01-06
  • 打赏
  • 举报
回复
感谢各位的参与;

installer的调用是在脚本里使用LaunchAppAndWait函数实现的,至于重起提示,完全是由installer自己提示的。我问的问题就是,如何不让installer出现重启系统的提示,因为这个提示在我的安装程序里不起作用,即使选择了立即重启,也不会执行。
gaozhu2003 2004-01-03
  • 打赏
  • 举报
回复
建義你自己寫安裝程序﹐那樣更為靈活﹐以下是我提供給你的資料﹕
用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的调用。在安装过程中的一些提示性界面及每一个步骤大家可以根据自己的需要而制作,这样做出来的安装程序精练,而且风格可以做的很特别。
mxk19791116 2004-01-02
  • 打赏
  • 举报
回复
UP
wanwangzhiwang 2003-12-26
  • 打赏
  • 举报
回复
靠,没人知道?不会吧?

谁解决了这个问题,我把分全给他!!!决不食言!!!
wanwangzhiwang 2003-12-25
  • 打赏
  • 举报
回复
还有,我的installshield是完全版的,6.2

谢谢!
wanwangzhiwang 2003-12-25
  • 打赏
  • 举报
回复
怎么屏蔽?各位老大给个提示之类的

我的msn:wanwangzhiwang@msn.com

随时恭候大家
siyu2002 2003-12-25
  • 打赏
  • 举报
回复
重起对话框应该可以屏蔽
delphiseabird 2003-12-25
  • 打赏
  • 举报
回复
我想你可能是改了系统的设置了,比如第一次装mdac好像就要重启的
抱朴守拙 2003-12-25
  • 打赏
  • 举报
回复
我一直都在用Install Shield6.22作安装程序,没有类似的问题,重起对话框应该可以屏蔽。
aiirii 2003-12-25
  • 打赏
  • 举报
回复
我印象中, d5自帶的installshield是可自己調整要不要出現 重啟 的提示, 但到d6,d7的installshield或, 一些完全版的installshield, 就是自動檢測的, 如果你更改了系統文件, 就會出現提示, 所以, 一般不要選擇更新如 odbc, XXX runtime就可!
hksl 2003-12-25
  • 打赏
  • 举报
回复
学习
wanwangzhiwang 2003-12-25
  • 打赏
  • 举报
回复
wanwangzhiwang 2003-12-25
  • 打赏
  • 举报
回复
codehunter008(代码猎手008)
我是运行微软的installer后,由installer自己弹出的重启提示。当然我自己也有重启的代码,不过那是在Onend事件里写的。

aushqh(crystal)
你的方法也许可以,可惜手头上没有安装盘

因为是调用微软的installer,所以它的重启提示不起作用,即不管你选择重不重启都不会重启,呵呵
aushqh 2003-12-25
  • 打赏
  • 举报
回复
建议楼主用installshield Developer 8或以上版本。其中可以自动调配!
codehunter008 2003-12-25
  • 打赏
  • 举报
回复
在你的脚本OnFirstUIBefore()中找

有没有 sdfinishReboot 之类的函数,有的话,自己找到把他删除
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧