自动安装SQL Server 2000(无人值守安装)

首先了解一下,基本操作步骤: 

运行SQL   SERVER安装程序--安装   sql   server   2000组件--安装数据库服务器--连续两次<下一步>--现在到了"安装选择"这一步,选择第三项"高级选项"--在<下一步>,在"高级选项"中选择第一项"记录无人值守.iss文件"  
   
  剩下的步骤按照正常安装SQL   SERVER就步骤去做就可以了.  
   
  最后点击完成.  
   
  然后到   c:/winnt   (win9x/me是c:/windows/)目录下,将:setup.iss文件复制出来,比如复制到c:/setup.iss,这一步很重要,一定要将setup.iss复制出来,否则,一运行sql   server安装程序,你的setup.iss文件就会被重写.  
   
  这个setup.iss就是你的无人值守安装文件.你可以将它保存起来.

使用方法:  
  在运行对话框执行:  
  x:/x86/setup/setupsql.exe   -s   -m   -SMS   -f1   "c:/setup.iss"  
  x:是指你的sql   server安装光盘驱动器号  
   
  注意,这个安装过程不会有任何提示和窗口显示  
  你可以打开任务管理器,里面有个sqlstp的进程,这个就是sql   server无人值守安装的进程,这个进程结束后,整个sql   server的安装工作也就结束了.  

----------------------------------------------------------------------------------------------------------

知道了以上步骤,用编程实现就很容易,我这里是利用delphi来完成的。

首先保证得到那个setup.iss,接着代码如下:

//自动安装SQL Server
procedure TForm1.btnStep5OKClick(Sender: TObject);
var
  execCmd:String;
  execPara:String;
begin
  //execCmd:='"'+txtSqlPath.Text;
  execCmd:='"D://Justsee//Project//SQL2000DEVELOPER//x86//setup//setupsql.exe"';
  execPara:='-s -m -SMS -f1 "d://setup.iss"';
  //execCmd:=execCmd+'/x86/setup/setupsql.exe -s -m -SMS -f1 "d:/setup.iss"';
  ShellExecute(Handle, 'open', PChar(execCmd),PChar(execPara), nil, SW_HIDE);
  btnStep5OK.Enabled:=false;
  Timer1.Enabled:=true;
  //showmessage(execCmd);
end;

//监视自动安装进程,安装结束后提示 这里利用Timer控件监视进程结束后报告安装结束
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  functions.setTimeout(1500);
  if not(functions.FindProcess('sqlstp.exe'))  then
  begin
    Timer1.Enabled:=false;
    functions.setTimeout(3000);//延时3秒
    showmessage('自动安装SQL完成,必须重启后才能生效!');
  end;
end;

//这个要use TLHelp32
function FindProcess(AFileName:string):boolean;//检测进程是否存在
var 
  hSnapshot:THandle;//用于获得进程列表
  lppe:TProcessEntry32;//用于查找进程
  Found:Boolean;//用于判断进程遍历是否完成
begin
  Result:=False;
  hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);//获得系统进程列表
  lppe.dwSize:=SizeOf(TProcessEntry32);//在调用Process32First   API之前,需要初始化lppe记录的大小
  Found:=Process32First(hSnapshot,lppe);//将进程列表的第一个进程信息读入ppe记录中
while Found do
begin
  if((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName))
     or(UpperCase(lppe.szExeFile)=UpperCase(AFileName)))
  then
begin 
  Result:=True;
end;
  Found:=Process32Next(hSnapshot,lppe);//将进程列表的下一个进程信息读入lppe记录中
end; 
end;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值