數(shù)據(jù)庫安裝程序
2024-07-21 02:23:16
供稿:網(wǎng)友
引言
最近做了一個數(shù)據(jù)庫安裝程序,本打算用 installshield x 來做的,結(jié)果d版沒買到,用 visual studio.net 自帶的安裝工具又不能滿足要求,最后只好自己開發(fā)。
設(shè)計概要
設(shè)計一個窗體基類(wizardform),再根據(jù)所需安裝步驟創(chuàng)建不同的繼承自該類的子類,通過一個靜態(tài)的hashtable類型的全局變量來保存在這些安裝步驟窗體之間的參數(shù)值。安裝數(shù)據(jù)庫和初始化數(shù)據(jù)均使用sql腳本來生成,這些腳本統(tǒng)一保存在一個格式化的xml文件中,安裝程序通過配置文件中指定的路徑讀取該xml文件,并根據(jù)注冊表中保存的已經(jīng)安裝了的版本,截取安裝后續(xù)的腳本包,安裝成功后在目標計算機的注冊表內(nèi)保存最后一次安裝的腳本包版本號,以供以后升級安裝使用。
安裝程序通過配置文件來保存安裝界面顯示的客戶化的信息,如“窗口標題”、“橫幅圖片”、默認的“橫幅標題”、默認的“主體文本”等,具體配置文件內(nèi)容如下:
<?xml version="1.0" encodifg="utf-8" ?>
<configuration>
<appsettings>
<add key="companyname" value="sunwu software studio"/>
<add key="productname" value="imrp"/>
<add key="edition" value="標準版"/>
<add key="updatefile" value="update.xml"/>
<add key="licencefile" value="eula.rtf"/>
<add key="title" value="imrp 數(shù)據(jù)庫安裝"/>
<add key="bannertext" value="imrp 數(shù)據(jù)庫安裝" />
<add key="bannerimagefile" value="" />
<add key="warningtext" value="警告:本計算機程序受版權(quán)法和國際條約保護。如未經(jīng)授權(quán)而擅自復(fù)制或傳播本程序(或其中任何部分),將受到嚴厲的民事及刑事制裁,并將在法律許可的范圍內(nèi)受到最大程度的起訴。" />
<add key="welcome.bannertext" value="歡迎使用 imrp 數(shù)據(jù)庫安裝向?qū)?quot; />
<add key="welcome.bodytext" value="安裝程序?qū)⒁龑?dǎo)您完成在您的計算機上安裝 imrp 數(shù)據(jù)庫所需的步驟。" />
<add key="licence.bannertext" value="許可協(xié)議" />
<add key="licence.bodytext" value=" 現(xiàn)在請閱讀此許可協(xié)議。如果接受以下條款,請單擊“同意”,然后單擊“下一步”。否則,請單擊“取消”,以退出該安裝。" />
<add key="setting.bannertext" value="參數(shù)設(shè)置" />
<add key="setting.bodytext" value="安裝程序?qū)褦?shù)據(jù)庫安裝到下面的計算機中。
請指定安裝過程中需使用的數(shù)據(jù)庫系統(tǒng)的用戶及其口令。" />
<add key="confirm.bannertext" value="確認安裝" />
<add key="confirm.bodytext" value="安裝程序已準備在您的計算機上安裝 imrp 數(shù)據(jù)庫。
單擊“下一步”開始安裝..." />
<add key="processing.bannertext" value="正在安裝" />
<add key="processing.bodytext" value="正在安裝 imrp 數(shù)據(jù)庫,請稍候..." />
<add key="completed.bannertext" value="安裝完成" />
<add key="completed.bodytext" value="已成功安裝 ?mrp 數(shù)據(jù)庫。
單擊“完成”退出。" />
</appsettings>
</configuration>
界面截圖
我定義該數(shù)據(jù)庫安裝程序包含這幾個步驟:
歡迎(welcome)
授權(quán)(licence)
設(shè)置(setting)
確認(confirm)
進度(processing)
完成(completed)
步驟窗體截圖依次如下:
1、歡迎
2、授權(quán)
3、設(shè)置
4、確認
5、進度
6、完成
每個步驟均對應(yīng)一個繼承自基類wizardform的窗體類,他們通過配置文件中相關(guān)設(shè)置來設(shè)置各自的“橫幅標題”和“主體文本”屬性(詳情見配置文件)。
安裝文件
安裝程序使用安裝文件內(nèi)的腳本包來執(zhí)行數(shù)據(jù)庫操作,該xml格式的安裝文件包含創(chuàng)建數(shù)據(jù)庫和需要發(fā)布的每次改動的腳本,通過將這些腳本打包進行版本管理。具體安裝文件內(nèi)容如下:
<?xml version="1.0" encoding="utf-8" ?>
<database id="{98a217a6-c1a2-422a-81d8-41c9ec24abb1}" name="gmis" version="1.0" provider="sqlserver" remark="">
<packet name="standard" version="1.0" title="標準版" remark="該版本自2002年11月的更新。">
<script title="創(chuàng)建數(shù)據(jù)庫" remark="在目標計算機的數(shù)據(jù)庫服務(wù)器中創(chuàng)建指定名稱的數(shù)據(jù)庫">
<![cdata[
if $parameters[dbexist] = 0
begin
create database $parameters[database]
end
]]>
</script>
<script title="打開數(shù)據(jù)庫" remark="打開當前的數(shù)據(jù)庫,以確保后續(xù)的操作在當前數(shù)據(jù)庫內(nèi)進行。">
<![cdata[
/* 以下語句非常重要!*/
use $parameters[database]
]]>
</script>
</packet>
<packet name="sp001" version="1.1" title="補丁1.1" remark="補丁注釋">
<script title="腳本01" remark="腳本注釋-1.1.1">
<![cdata[
select * from master.dbo.sysobjects;
select * from master.dbo.sysmessages
]]>
</script>
</packet>
<packet name="sp002" version="1.2" title="補丁1.2" remark="補丁注釋">
<script title="腳本101" remark="腳本注釋-1.2.1">
<![cdata[
select * from master.dbo.sysobjects
]]>
</script>
<script title="腳本102" remark="腳本注釋-1.2.2">
<![cdata[
select * from master.dbo.sysobjects
]]>
</script>
</packet>
</database>
安裝信息
安裝完成后,需要在目標計算機的注冊表內(nèi)(具體位置為hkey_local_machine/software/<companyname>/<productname><edition>)保存當前的安裝實例編號(安裝文件根節(jié)點的id屬性值)和數(shù)據(jù)庫名稱以及腳本包版本,在以后的升級安裝時,在根據(jù)保存的信息進行匹對以從斷點處開始安裝。
本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。