MSDE自动安装方法

来源:互联网 发布:程序员常用的设计模式 编辑:程序博客网 时间:2024/04/29 06:49

MSDE自动安装使用方法

一、 制作自动安装SQL

已制作完成,程序放在:

//工程项目/安装盘制作/MSDE

说明:自动安装目是在MSDE安装程序执行时不出现画面,并且自动按配置好步骤安装;

自动配置文件UNATTEND.ISS制作方法:

SQL SERVER安装程序开始安装,选择“高级选项”,再选择“无人值守”,接下来为安装所做选择配置均被存入c:/windows/SETUP.ISS文件中,该文件就是上面提到UNATTEND.ISS

制作为无人值守文件后,执行其中SETUP.bat文件就能自动安装SQL。只要能在我们应用程序安装盘中有办法自动执行该文件中内容即可自动安装SQL

二、 修改SETUP1.exe

为了VB工程打包后,安装程序除了正常执行应用程序安装功能外,另外再自动执行我们制作无人值守SQL安装程序,须修改VB打包工具。修改方法如下:

A、打开c:/program files/Microsoft visual studio/vb98/wizards/pdwizard/setup1目录下setup1工程

B、 basesetup1模块中exitsetup过程找到以下语句:

Case intExitCod

………

Case Else

C、Case Else前增加调动SQL自动安装语句

D、编译成EXE文件

E、 将编译好EXE文件复制到上级目录:

c:/program files/Microsoft visual studio/vb98/wizards/pdwizard

目前已编译好程序放在

//CHANCE-SERVER/工程项目/安装盘制作/SETUP1

三、 制作数据库文件

因本MSDE是基本SQL SEREVER7,故须有SQL SERVER7下将应用程序所用数据库备份成一个文件名(如:DBBACK)。


四、 打包

A、工程打印包时,须将SQL自动安装程序(msde86.exeunattend.iss)打到包内,打包时指定该2程序解压路径为:

$(WinSysPath)

B、将制作数据库备份文件(DBBACK)也打到包内,打包时指定该文件解压路径为:

$(AppPath)

C、将应用程序配置文件、使用说明书等同时打到包内,打包时指定该文件解压路径为:

$(AppPath)

五、 安装

应用程序安装时,执行完标准安装步骤后,会提问:

是否安装数据库?

若选择“是”则自动安装SQL(对已有SQL SERVER机器千万不要安装)。

说明:有时制作安装程序在Windows2000下安装时,复制完8个初始化程序后,提示“程序过时”要求重新启动再安装。但重新启动后还是同样问题,无法安装。此时修改安装包中SETUP.lst文件,在:

File3=@VB6CHS.DLL,$(WinSysPath),,$(Shared),10/2/00

前增加 REM ,这样重新安装时,只复制前2个文件,安装程序能顺利执行。

六、 运行程序

程序安装后,应用程序所须数据库并未被装入SQL SERVER。应在我们编写VB应用程序中增加自动向SQL SERVER添加数据库功能。

实现方法:每次启动应用程序时,判断SQL SERVER数据库中是否存在我们要数据库,若无则执行下以操作:

1、 将备份文件复制到MASTER数据库对应目录下;

2、 使用数据恢复命令将MASTER目录下备份文件恢复到指定数据库名中。

程序清单见下页:


===============本函数须在连接数据库前使用================

===============须在工程中应用SQLDMO================

Public Function sCopyMDF(sSvrName As String, sDBName As String, sUID As String, sPWD As String, sMDFName As String) As String

参数说明: sSvrName:服务器名

sDBName :数据库名

sUID :用户名

sPWD :密码,

sMDFName :数据库备份文件名

Dim Fso As s cripting.FileSystemObject

Dim strMessage As String

Dim db As Variant

Dim fDataBaseFlag As Boolean

Dim X, Osvr

On Error Resume Next

sCopyMDF = ""

fDataBaseFlag = False

Set Fso = CreateObject("s cripting.FileSystemObject")

Set Osvr = CreateObject("SQLDMO.SQLServer")

Osvr.Connect sSvrName, sUID, sPWD

Osvr.Start True, sSvrName, sUID, sPWD

X = Osvr.Databases.Count '如果失败,DMO 需要进行初始化

'通过在本地 MSDE 服务器上循环检查所有数据库名称,

'检查 DemoDatabase 是否存在于该服务器。

For Each db In Osvr.Databases

If db.Name = sDBName Then '该数据库存在

fDataBaseFlag = True

Exit For '退出循环

End If

Next

If Not fDataBaseFlag Then '不存在名为 DemoDatabase 数据库

Dim oRestore As New SQLDMO.Restore

oRestore.Action = SQLDMORestore_Database

oRestore.Database = sDBName

Fso.CopyFile App.Path & "/" & sMDFName, _

Osvr.Databases("master").PrimaryFilePath & sMDFName, True

oRestore.Files = Osvr.Databases("master").PrimaryFilePath & sMDFName

oRestore.ReplaceDatabase = True

判断有否”C:/mssql7/Data/”目录,没有则要先建此目录

oRestore.SQLRestore Osvr

Else

sCopyMDF = sMDFName & " 退出 MSDE 服务器"

End If

ExitCopyMDF:

Osvr.Disconnect

Set Osvr = Nothing

Exit Function

sCopyMDFTrap:

If err.Number = -2147216399 Then 'DMO 需进行初始化

Resume Next

Else

sCopyMDF = err.Des cription

End If

Resume ExitCopyMDF

Exit Function

End Function

原创粉丝点击