社区
Delphi
帖子详情
请教一个安装程序的问题,高手请进
wanwangzhiwang
2003-12-25 09:11:31
在制作安装程序时,经常会在安装程序里加上installer的安装。
安装完installer会弹出系统需要重起的提示,但因为安装程序并没有结束,系统不会重起(即使结束,系统也不会自动重起),请问各位:能不能把installer的重起提示去掉?
...全文
76
16
打赏
收藏
请教一个安装程序的问题,高手请进
在制作安装程序时,经常会在安装程序里加上installer的安装。 安装完installer会弹出系统需要重起的提示,但因为安装程序并没有结束,系统不会重起(即使结束,系统也不会自动重起),请问各位:能不能把installer的重起提示去掉?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 之类的函数,有的话,自己找到把他删除
微信小程序系统教程C#版[3/3阶段]_微信小程序电商系统
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术
问题
可以
请教
老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088
高手
请进
,小妹
请教
一个
ASP。NET安装
问题
我安装好ASP。NET以后,想建立
一个
C#项目,结果弹出
一个
对话框告诉我:“已检测到WEB服务器运行的不是ASP。NET1。1版本,您将无法运行WEB应用程序和服务”,请问这个
问题
应该怎么解决呢^.^
linux下oracle死机,
高手
帮忙
请进
,linux系统oracle数据库死机?该如何解决
当前位置:我的异常网» Oracle技术»
高手
帮忙
请进
,linux系统oracle数据库死机?该如何解
高手
帮忙
请进
,linux系统oracle数据库死机?该如何解决www.myexceptions.net网友分享于:2015-08-26浏览:195次
高手
帮忙
请进
,linux系统oracle数据库死机???
请教
高手
帮忙分析一下
问题
,最近linux服务器经常出现死机,只装了oracle10...
c语言最简单的abc之间的运算,
高手
请进
,
请教
一道简单的c语言题!
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#include#include#include#includeusingnamespacestd;ifstreamfin("alpha.in");ofstreamfout("alpha.out");#definecinfin#definecoutfoutintnn;/////////////...
一个
计算机
高手
的成长
一个
计算机
高手
的成长 这些日子我一直在写
一个
实时操作系统内核,已有小成了,等写完我会全部公开, 希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年 一样没有方向,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点 点帮助。一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、 数据库,应用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章