亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

VBNET安裝工程的技巧與實現

2024-07-21 02:20:37
字體:
來源:轉載
供稿:網友
剛聽了smart client部署的講座,里面詳細講述了如果在.net安裝工程里運行自定義的dll或者exe,以后在自定義的工程中如何得到安裝工程的傳遞過來的參數。下面大致說一下自己的心得:
首先,是制作一個類工程。然后添加一個安裝類文件,并添加一個sql.txt文件,當作嵌入的資源,類的代碼如下,在后面再做說明:
dim cn as sqlconnection
'得到sql腳本字符串
private function getsql(byval name as string) as string
try
'通過反射取到程序集
dim asm as [assembly] = [assembly].getexecutingassembly()
'讀取資源文件資料,要將資源文件在編譯時設成嵌入的資源
dim sm as stream = asm.getmanifestresourcestream(asm.getname().name + "." + name)
dim rr as new streamreader(sm)
return rr.readtoend
catch ex as exception
msgbox(err.description, msgboxstyle.okonly, "出錯提示")
throw ex
end try
end function
'得到數據庫備份文件路徑
private function getbakfilepath(byval datfilename as string) as string
try
'通過反射取到程序集
dim asm as [assembly] = [assembly].getexecutingassembly()
'讀取資源文件資料,要將資源文件在編譯時設成嵌入的資源
dim sm as stream = asm.getmanifestresourcestream(asm.getname().name + "." + datfilename)
if file.exists("c:/" & datfilename) then
file.delete("c:/" & datfilename)
end if
dim fs as new filestream("c:/" & datfilename, filemode.create)
dim sw as new binarywriter(fs)
dim recbyte(sm.length - 1) as byte
dim strread as new binaryreader(sm)
strread.read(recbyte, 0, recbyte.length)
sw.write(recbyte, 0, recbyte.length)
sw.close()
fs.close()
return "c:/" & datfilename
catch ex as exception
msgbox(err.description, msgboxstyle.okonly, "出錯提示")
throw ex
end try
end function
private sub executesql(byval dbname as string, byval sqltext as string, byval uid as string, byval pwd as string, byval servername as string)
dim cmd as new sqlcommand(sqltext, cn)
if cn.state = connectionstate.closed then cn.open()
try
cn.changedatabase(dbname)
cmd.executenonquery()
catch ex as exception
msgbox("運行sql腳本出錯!", msgboxstyle.okonly, "提示")
throw ex
end try
cn.close()
end sub
protected sub adddbtable(byval dbname as string, byval uid as string, byval pwd as string, byval servername as string)
'判斷數據庫是否存在
try
cn = new sqlconnection("persist security info=false;user id=" & uid & ";initial catalog=master;data source=" & servername & ";password=" & pwd & ";max pool size=75000")
dim dt as new datatable()
cn.open()
dim cmd as new sqldataadapter()
cmd.selectcommand = new sqlcommand("exec sp_helpdb", cn)
cmd.fill(dt)
dim i as int16
for i = 0 to dt.rows.count - 1
if dbname.tolower = ctype(dt.rows(i).item(0), string).tolower then
'數據庫存在
cmd = nothing
cn.close()
exit sub
end if
next
catch ex as exception
msgbox(err.description & "連接數據庫出錯,請檢查所輸入的參數是否正確!", msgboxstyle.okonly, "出錯提示")
exit sub '如已存在則跳出
end try

try
'========方法一:運行sql腳本創建數據庫
' executesql("master", "create database " & dbname, uid, pwd, servername)
'executesql(dbname, getsql("mysql.txt"), uid, pwd, servername)
'========方法二:執行還原備份文件
dim cm as new adodb.command()
dim cn as new adodb.connection()
dim dbrs as new adodb.recordset()
cn.open("provider=sqloledb.1;persist security info=false;user id=" & uid & ";initial catalog=master;data source=" & servername & ";password=" & pwd)
cm.activeconnection = cn
'判斷該數據是否存在,存在就刪除
cm.commandtext = "exec sp_helpdb"
dbrs = cm.execute() '取所有數據庫名
if not dbrs.bof and not dbrs.eof then
do while not dbrs.eof
if trim(dbrs.fields(0).value) = trim(dbname) then '如果該數據庫存
cm.commandtext = "drop database " & trim(dbname)
cm.execute()
exit do
end if
dbrs.movenext()
loop
end if
' dbrs.close()
dim sfile as string = getbakfilepath("installdb.dat")
cm.commandtext = "restore database " & trim(dbname) & " from disk='" & trim(sfile) & "'"
cm.execute()
cn.close()
if file.exists(sfile) then
file.delete(sfile)
end if
catch ex as exception
msgbox(err.description & "a", msgboxstyle.okonly, "出錯提示")
throw ex
end try
end sub

'覆寫安裝方法
public overrides sub install(byval statesaver as system.collections.idictionary)
mybase.install(statesaver)
'取安裝程序中用戶界面中添回的文本框中的參數值
dim connstr as string = me.context.parameters.item("dbname")
dim cs as string() = split(connstr, "|")
adddbtable(cs(0), cs(1), cs(2), cs(3))
end sub

然后添加一個安裝工程,將上面的類的工程做為項目主輸出添進來.在用戶界面中加一個文本框

然后在文本框的四個屬性中輸入參數名稱..

這里設置了四個參數,在安裝運行的時候,會有界面讓你輸入四個參數,在自定義操作里的安裝項目上,將所加載進來的項目主輸入選中置入.

并將屬性customactiondata設置為/參數名=[][][][]...以這種方式寫入在文件框中設置好的參數,我們再看一下上面類中的代碼:
dim connstr as string = me.context.parameters.item("dbname")
便會取到參數dbname的值,亦就是在安裝界面時要用戶輸入的值.
類中還覆寫了install方法.會自動運行,并執行用戶自定義的程序代碼.代碼與平時所編的vbnet一樣.
上面的代碼做了二種情況,一種是從嵌入的文本文件中取得sql語句,運行它創建數據庫.另一種是用
sql數據備份的dat文件做為嵌入資源,在安裝過程中,由用戶輸入的參數為條件,連接sql服務器并還原數據庫...


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品成人aaaaa网站| 91久久精品国产91久久| 亚洲老头老太hd| 欧美综合在线第二页| 91色p视频在线| 亚洲最大的成人网| 92国产精品久久久久首页| 91精品国产综合久久久久久久久| 亚洲午夜国产成人av电影男同| 在线性视频日韩欧美| 久久99久久99精品免观看粉嫩| 中文在线不卡视频| 精品久久久香蕉免费精品视频| 欧美日韩黄色大片| 91精品久久久久久| 亚洲free性xxxx护士白浆| 亚洲成人三级在线| 欧美国产精品人人做人人爱| 色吧影院999| 亚洲区中文字幕| 日韩精品在线观看视频| 精品国产成人av| 国产日韩在线观看av| 亚洲欧美在线免费观看| 亚洲精品电影网在线观看| 日韩久久精品电影| 亚洲网站视频福利| 国产亚洲视频在线观看| 精品中文字幕在线| 欧美激情xxxx| 裸体女人亚洲精品一区| 性欧美激情精品| 2021国产精品视频| 亚洲丁香婷深爱综合| 久久99久久99精品免观看粉嫩| 亚洲自拍偷拍网址| 中文字幕日韩欧美在线| 久久久成人精品视频| 精品女厕一区二区三区| 国产精品一区二区久久| 亚洲美女免费精品视频在线观看| 国产成人精品一区二区三区| 色老头一区二区三区在线观看| 中文字幕亚洲欧美在线| 欧美日本国产在线| 欧美激情欧美狂野欧美精品| 国产九九精品视频| 丝袜一区二区三区| 亚洲色图25p| 亚洲欧美日韩国产中文专区| 日韩小视频网址| 国产精品一区久久| zzijzzij亚洲日本成熟少妇| 久久综合国产精品台湾中文娱乐网| 亚洲成人网久久久| 亚洲成人网在线| 中文字幕欧美日韩在线| 精品国产依人香蕉在线精品| 国外视频精品毛片| 欧美日韩中文字幕| 久久国产精品电影| 国产成人av在线播放| 日韩在线免费高清视频| 欧美日韩亚洲一区二| 欧美一级大胆视频| 欧美夫妻性视频| 欧美性生交大片免费| 亚洲电影在线观看| 亚洲一区二区国产| 久久天堂电影网| 中文字幕亚洲综合久久筱田步美| 福利微拍一区二区| 国产精品入口尤物| 91精品国产高清| 欧美大片免费观看在线观看网站推荐| 精品呦交小u女在线| 91探花福利精品国产自产在线| 亚洲成人黄色在线观看| 亚洲男子天堂网| 欧美黑人xxx| 欧美精品一本久久男人的天堂| 国产精品中文久久久久久久| 中文字幕久精品免费视频| 亚洲人在线观看| 亚洲精品国产精品久久清纯直播| 欧美另类在线播放| 青青草99啪国产免费| 人人澡人人澡人人看欧美| 欧美另类xxx| 日韩av色在线| 国产欧美一区二区三区久久人妖| 欧美性猛交xxxx久久久| 亚洲一区二区三区四区在线播放| 午夜精品久久久久久久99热浪潮| 一级做a爰片久久毛片美女图片| 欧美精品做受xxx性少妇| 成人久久一区二区三区| 久久免费视频网| 在线不卡国产精品| 高清日韩电视剧大全免费播放在线观看| 日本精品久久中文字幕佐佐木| 日韩精品一二三四区| 亚洲网址你懂得| 亚洲成年人在线| 97欧美精品一区二区三区| 成人网页在线免费观看| 欧美床上激情在线观看| 久久在线免费观看视频| 欧美大尺度激情区在线播放| 一区二区日韩精品| 51色欧美片视频在线观看| 亚洲国产成人久久| 伊人久久久久久久久久久| 91精品国产91久久久| 97视频在线观看播放| 亚洲欧美中文日韩v在线观看| 欧美国产日韩一区二区在线观看| 亚洲第一色中文字幕| 清纯唯美亚洲综合| 日韩一区二区三区国产| 国产一区二区三区中文| 精品久久久久久电影| 欧美激情在线一区| 国产欧美婷婷中文| 欧美激情亚洲国产| 亚洲激情小视频| 91亚洲国产成人久久精品网站| 日韩在线欧美在线| 亚洲成av人影院在线观看| 亚洲国产成人精品电影| 中文字幕无线精品亚洲乱码一区| 久久久免费在线观看| 中文字幕av一区二区三区谷原希美| 日韩动漫免费观看电视剧高清| 成人精品在线视频| 欧美激情视频网站| 欧美激情国产高清| 亚洲国产高清高潮精品美女| 欧美巨乳在线观看| 亚洲第一精品久久忘忧草社区| 中文字幕av一区| 日本欧美一级片| 日韩美女在线观看一区| 成人黄色免费看| 国产精品日韩欧美大师| 日本a级片电影一区二区| 欧美性xxxxx| 欧美孕妇毛茸茸xxxx| 国产精品人成电影在线观看| 国产欧美在线播放| 国产精品老女人精品视频| 欧美精品在线网站| 亚洲精品视频免费在线观看| 亚洲色图激情小说| 欧美丰满少妇xxxxx| 日韩中文字幕视频在线| 欧美高清电影在线看| 在线观看成人黄色| 国产国产精品人在线视| 国产精品久久久久久久电影| 国产欧美最新羞羞视频在线观看| 亚洲国产精品久久久| 91久久精品一区| 色一区av在线|