自动安装mysql数据库_自动安装SQL Server数据库

先把关于MSDE打包进安装程序的心得于大家分享。

当你的项目基本完成测试,准备发布的时候,制作一个用户使用简便的自动安装包就成为编码完成后的又一个需要解决的问题,工程开发的是否完满,从安装中,用户应该会有个最初的体验。

下面简单介绍一下如何在工程中添加Microsoft SQL Server 2000 Desktop Engine (MSDE)的自动安装合并模块MSM:

2.下载完成,你可以安装或者用ZIP解压到本地硬盘,将可以看到:Msi、MSM、Setup这3个目录和setup等文件,其中的MSM文件夹中的东东就是本文要介绍的MSDE2000合并模块。

3.在你的工程中添加一个安装工程(假设为MySetup1,路径为c:\MySetup1),按照正常的步骤添加工程输出(Project Output),选择输出文件(primary output)和内容文件(content files)两项。

4.添加合并模块(Merge Moudle),选择浏览,指定到你的MSDE的MSM文件夹,选则MSM和msm\1033下的所有的文件(REPL.MSM、REPL_RES.MSM、 DMO_RES.MSM和DMO.MSM可以不选),打开。

5.设置安装工程的属性(Properties)中的SearchPath,指定为你的MSM所在路径(这时需要添加两个:path\MSM和path\MSM\1033)。

6.设置关于安装程序的其他属性咱们暂且不提,这是可以对你的安装工程进行编译了,当编译通过后,你可以在c:\MySetup1\Debug\看到你的打包工程MySetup.msi。

7.这是工程打包告一段落,下面我们需要修改打好的安装包,使它可以在安装完程序后自动安装

8.用ORCA打开安装包文件MySetup.msi,找到Property这个table,ADD Row 在Propetry中填入SqlInstanceName,value中填入实例名MyServer。其他的参数请参见:http://support.microsoft.com/?id=810826和http://support.microsoft.com/default.aspx?scid=kb;en-us;281983

9.所有的参数中有关密码的属性,我没有成功,就是SqlSaPwd,这个参数是和SqlSecurityMode一起使用的,但是我一直没有设置成功,密码总是为空的,不知何故!

10.选择InstallExecuteSequence这个table,找到SetPropSQLMSDEInstalled这个Action,修改206为102;找到RemoveExistingProducts,修改1525为6601。保存,退出!

这时,在没有SQL环境的机器上运行你的安装包,在程序安装完后,会自动安装MSDE的MyServer实例,并在重起机器后,自动启动Sql Server的实例。

=======================================================================

前一篇中介绍了如何连同Sql Server的桌面版本一同打包到安装程序的简单步骤,这里还想就自己对于:发布程序到已经有SQL环境的计算机时,自动使用SQL的Osql来恢复指定的数据库到你的SQL Server的Date中。

首先,在c:\创建一个临时目录,例如c:\TempBD,拷贝Osql.exe到目录下,拷贝你的数据库备份(TruckDB)到目录下;在目录下分别创建Restore.bat和Restore.txt文件,内容如下:

1.Restore.bat文件内容:

osql-E -S -i C:\TempDB\Restore.txt

2.Restore.txt文件内容:

use master

if exists (select * from sysdevices where name=‘TruckDB‘)

EXEC sp_dropdevice ‘TruckDB‘

Else

EXEC sp_addumpdevice ‘disk‘,‘TruckDB‘, ‘C:\Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB.mdf‘

restore database TruckDB

from disk=‘c:\TempDB\TruckDB‘

with replace

其次,在你的工程中添加一个Installer Class:选中Project主工程,添加Installer Class,名称假定为installer1。选择instller1的代码页,添加下面的代码:

PublicOverrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)

‘重写install方法

Dimfile As System.IO.File

If file.Exists("C:\Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB_data.mdf") = True Then Exit Sub

MyBase.Install(stateSaver)

Dim CheckedDir As System.IO.Directory

If CheckedDir.Exists("C:\Program Files\Microsoft SQL Server\MSSQL\Data") = False Then

CheckedDir.CreateDirectory("C:\Program Files\Microsoft SQL Server\MSSQL\Data")

End If

Dim FullPath As String

Dim Asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

Dim strConfigLoc As String

strConfigLoc = Asm.Location

Dim strTemp As String

strTemp = strConfigLoc

‘提取安装路径

strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - strTemp.LastIndexOf("\"))

‘CopyDateBase to computer.

If CreatDIR(strTemp) = False Then

‘失败,反安装

Me.Uninstall(stateSaver)

ExitSub

Else

End If

If InstallDB(strTemp) = False Then

‘失败,反安装

Me.Uninstall(stateSaver)

ExitSub

Else

End If

‘删除数据库临时文件

DeleteDIR(“c:\TempDB”)

DeleteDIR(strTemp +“\TempDB”)

EndSub

PublicOverrides Sub Uninstall(ByVal stateSaver As System.Collections.Idictionary)

‘执行反安装

‘利用反射提取安装路径

MyBase.Uninstall(stateSaver)

Dim Asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

Dim strConfigLoc As String

strConfigLoc = Asm.Location

Dim strTemp As String

strTemp = strConfigLoc

strTemp = strTemp.Remove(strTemp.LastIndexOf(“\”), Len(strTemp)–strTemp.LastIndexOf(“\”))

‘删除数据库文件和临时文件

DeleteDIR(strTemp +“\TempDB”)

DeleteDIR(“c:\TempDB”)

EndSub

PrivateFunction DeleteDIR(ByVal path As String) As Boolean

‘删除指定的文件夹

Dim dir As System.IO.Directory

If dir.Exists(path) = True Then dir.Delete(path, True)

EndFunction

PrivateFunction CreatDIR(ByVal path As String) As Boolean

‘创建指定的文件夹

Dim Files As System.IO.File

Dim Dirs As System.IO.Directory

Try

IfDirs.Exists(“c:\TempDB”) = False Then Dirs.CreateDirectory(“c:\TempDB”)

‘copy Creat DB files

CopyFile(path +“\TempDB”,“C:\TempDB”)

ReturnTrue

Catch

ReturnFalse

End Try

EndFunction

PrivateSub CopyFile(ByVal SourceDirName As String, ByVal DestDirName As String)

‘copy指定的文件夹的所有文件到目标文件夹(单层)。

Dim dir As System.IO.Directory

Dim File As System.IO.File

Dim sPath, oPath As String

Dim I As Integer

For I = 0 To dir.GetFiles(SourceDirName).Length–1

sPath = dir.GetFiles(SourceDirName).GetValue(i).ToString

oPath = Microsoft.VisualBasic.Right(sPath, Len(sPath)–Len(SourceDirName))

File.Copy(sPath, DestDirName + oPath, True)

Next

EndSub

PrivateFunction InstallDB(ByVal path As String) As Boolean

‘安装数据库,调用自动批处理。

‘Dim CheckedDir As System.IO.Directory

‘If CheckedDir.Exists(“C:\Program Files\Microsoft SQL Server\MSSQL\Data”) = False Then

‘CheckedDir.CreateDirectory(“C:\Program Files\Microsoft SQL Server\MSSQL\Data”)

‘End If

Try

Shell(“c:\TempDB\Restore.bat”, AppWinStyle.Hide, True)

Catch

EndTry

EndFunction

然后,在你的工程中添加一个安装工程,取名为MySetup1,按照正常的步骤添加工程输出(Project Output),选择输出文件(primary output)和内容文件(content files)两项,再添加文件夹到application Folder,文件夹的Name为TempDB,再给文件夹TempDB添加文件:osql.exe,Restore.bat,Restore.txt,TruckDB(数据库文件)。设定你的文件夹的properties的AlwaysCreate为True。对你的Setup工程进行编译。

这时,生成的安装包,将会在安装完程序后,自动调用Installer类的方法,恢复你的TruckDB数据库。

注意,TruckDB在生成的时候,应该备份保存到“C:\Program Files\Microsoft SQL Server\MSSQL\Data\”下,便于恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用说明: ===================================================================================================== 命令行自动安装脚本: mysql_install.bat的简单用法 确定一个完整的版本号,比如:5.6.14, 5.1.72, 5.5.34, 如何确定, 访问网址: http://download.softagency.net/MySQL/Downloads/MySQL-/ (主版本号为5.1, 5.6, 5.5之类) 找到win32.zip, 或者winx64.zip结尾的文件名,比如:mysql-5.5.34-win32.zip, 中间的串:5.5.34就是 完整的版本号. 选定是32位的, 还是64位的,32位用win32, 64位的用winx64, 默认为32位。 命令行用法: mysql_install.bat [arch] [ROOTDIR] [server_port] 参数: fullversion, 必须指定, 如5.6.14, 5.1.72, 4.1.22, 5.5.34, 6.0.11-alpha等等 arch, 可选,不指定时,为win32, 有效值可以是win32或者winx64 ROOTDIR, 可选,安装的最终根目录,默认值为d:, 不用带后边的"\".此目录必须事先存在或创建好 server_port, 可选,默认值为3306. 最终生成的服务名为: iihero- 如果你想卸载,也非常简单,先用sc delete iihero- 接着进到%ROOTDIR%\%MYSQL_HOME%, 直接删除整个目录就可以了. 非常方便。 也请尊重个人劳动。 http://blog.csdn.net/iihero/article/details/5596401 有相关的描述。 有什么问题,欢迎联系:iiihero AT hotmail.com http://blog.csdn.net/iihero http://blog.chinaunix.net/uid/40286.html http://blog.chinaunix.net/topic/hexiong/ ===================================================================================================== 示例: :: mysql_install.bat 4.1.22 :: mysql_install.bat 5.0.95 winx64 :: mysql_install.bat 5.6.14 winx64 :: mysql_install.bat 5.1.72 winx64 :: mysql_install.bat 5.5.34 winx64 :: mysql_install.bat 6.0.11-alpha win32

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值