MSDE自動安裝使用方法

來源:互聯網
上載者:User
自動安裝 一、 製作自動安裝的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下將應用程式所用的Database Backup成一個檔案名稱(如:DBBACK)。







四、 打包

A、工程列印包時,須將SQL的自動安裝程式(msde86.exe、unattend.iss)打到包內,打包時指定該2程式的解壓路徑為:

$(WinSysPath)

B、將製作的Database Backup檔案(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 :Database Backup檔案名稱



Dim Fso As Scripting.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("Scripting.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.Description

End If

Resume ExitCopyMDF

Exit Function

End Function





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。