InstallShield---集成安装MSDE2000最小版本(二)

来源:互联网 发布:fc2最新域名 fc2cn.com 编辑:程序博客网 时间:2024/06/03 19:18

  原创文章,转载请注明出处。
  在这一节里,我们解决安装路径的更改问题。大家知道,MSDE2000安装后,数据库路径不能更改,这也是制约许多安装包无法与应用程序一并集成的首要原因,现在我们来解决这一个问题。
  主要思路是通过分离msdb和model数据库,然后更改master数据库的系统目录指向,改为相对目录,最后,通过附加msdb及model并重建tempdb数据库来实现。
  目标:实现集成包的任意目录安装。
  注意:以下操作在前一节基础上继续。
  一、准备数据库
  1、启动先前安装的MSDE2000服务;
  2、使用命令行工具分离并修改系统数据库;
  3、将下面SQL脚本内容保存至:C:/Program Files/Microsoft SQL Server/80/Tools/Binn,文件名命名为:detach.sql。

  4、在运行菜单中输入:cmd /k cd C:/Program Files/Microsoft SQL Server/80/Tools/Binn,单击确定,打开命令窗口,在窗口中输入:sc start mssql$fishout -T3608,启动SQL服务,服务成功启动后再输入:osql -S (local)/fishout -E -i detach.sql,执行相对目录更改及分离操作,操作成功后会出现如下画面:图一
  5、接着继续运行以下命令:net stop mssql$fishout,停止SQL服务,至此,数据文件已准备完成,复制C:/Program Files/Microsoft SQL Server/MSSQL$FISHOUT/Data/下的所有文件至工程文件夹下files/Data中,确认替换。
  二、在安装工程中使用进程方式附加数据库并安装服务
  主要设计思路:
  当文件复制到目标机器结束后,以单用户、跟踪模式启动服务,以便允许对系统目录进行更新,从而,可以在新的安装目录下附加系统数据库,当以进程方式启动服务成功后,通过调用InstallShield中SQL运行时间库函数,将SQL脚本中的路径替换为实际安装路径并执行附加系统数据库的脚本,成功附加后,中止SQL进程,最后安装并启动服务。
  1、建立SQL连接,为安装脚本中使用命令方式执行脚本提供准备。
  2、导入数据库附加脚本
  将以下脚本内容保存至:工程文件夹下的“Script Files”子文件夹中,文件名为:MSDE2000.sql,右击“NewSQLConnection1”,选择“Insert Script Files...”,浏览至工程文件夹下的“Script Files”子文件夹,将“MSDE2000.sql”脚本导入,在导入后的脚本“Text Replacement”处,单击“Add...”按钮添加一条替换记录,以便实现安装路径的变换,如图:图二

  3、导入进程中止脚本。
  引用前人已写的现成脚本,将以下脚本内容保存至:工程文件夹下的“Script Files”子文件夹中,文件名为:ShutDownRunningApp.rul,单击面板中“InstallScript”,右击“Files”,选择“Insert Script Files...”,浏览至工程文件夹下的“Script Files”子文件夹,将“ShutDownRunningApp.rul”脚本导入,需要使用这个脚本来实现SQL进程的中止。

  4、完善InstallShield脚本,实现任意目录的MSDE2000安装。
  修改“featureevents.rul”中的内容为如下代码:

  回到setup.rul脚本中,将下面相关行注释掉,阻止安装过程中出现SQL登录窗口,以便通过脚本程序控制SQL登录和执行SQL脚本,实现任意目录的安装。

  编译并重建安装工程,至此,可以在任意目录下安装的MSDE2000最小版本(仅数据库核心)成功建立,网上的一些绿色MSDE2000版本只需用于应用程序的测试,与应用程序一起集成分发,客户端的安全性可以得到有效保证(微软原始文件),安装包也显得非常专业,当然,实现安装时实例名及sa密码的更改就更理想了,这个问题留待下一步解决。
  参考文档:
  http://support.microsoft.com/kb/224071
  http://support.microsoft.com/kb/288809/zh-cn