淺談C#安裝類(lèi)如何完整打包
首先,創(chuàng)建一個(gè)安裝和部署項(xiàng)目。步驟如下:
1.在 "解決方案資源管理器 "中的解決方案中添加一個(gè)新項(xiàng)目。
用鼠標(biāo)右鍵單擊解決方案,在彈出的菜單中選擇 "添加 "-> "新建項(xiàng)目 "。在打開(kāi)的對(duì)話(huà)框中選擇 "安裝和部署項(xiàng)目 ",并選擇 "Web安裝項(xiàng)目 "模板。在輸入項(xiàng)目名稱(chēng)后,點(diǎn)擊 "確定 "按鈕,將新項(xiàng)目添加到解決方案中。
2.將項(xiàng)目的輸出添加到安裝和部署項(xiàng)目中。
添加完安裝和部署項(xiàng)目后,vs.net2003 IDE會(huì)自動(dòng)打開(kāi)一個(gè)名為 "文件系統(tǒng) "的管理器。用鼠標(biāo)右鍵單擊此管理器右邊樹(shù)型結(jié)構(gòu)中的 "Web應(yīng)用程序文件夾 ",在彈出的菜單中選擇 "添加 "-> "項(xiàng)目輸出 "。在彈出的對(duì)話(huà)框中,選擇 "項(xiàng)目 "(這時(shí)只有一個(gè),就是你的web應(yīng)用程序項(xiàng)目),然后在下面的列表中選擇 "主輸出 "和 "內(nèi)容文件 "兩項(xiàng)(可以復(fù)選),接著在 "配置 "中選擇 "Release .NET ",點(diǎn)擊 "確定 "按鈕。
經(jīng)過(guò)上面兩個(gè)步驟,一個(gè)基本的安裝和部署程序就制作完成了,將此項(xiàng)目編譯后就得到了一個(gè)Web安裝程序包。
然而,在很多的情況下,我們做的Web應(yīng)用程序都要使用到數(shù)據(jù)庫(kù),能不能在安裝程序的同時(shí)也將數(shù)據(jù)庫(kù)一起安裝呢?答案是肯定的。那該怎么做呢?這個(gè)問(wèn)題李洪根先生已經(jīng)解決了,具體內(nèi)容可以參看下面的文章
http://blog.csdn.net/lihonggen0/archive/2004/05/17/13654.aspx在李洪根先生的這篇文章中詳盡的介紹了安裝程序的制作和如何同時(shí)安裝數(shù)據(jù)庫(kù)。在此大致敘述如下:
1.新建一個(gè)類(lèi)庫(kù)項(xiàng)目,刪除自動(dòng)生成的Class.cs,重新添加一個(gè)新項(xiàng)。鼠標(biāo)右鍵此項(xiàng)目,在彈出的菜單中選擇 "添加 "-> "添加新項(xiàng) ",在彈出的對(duì)話(huà)框中選擇 "安裝程序類(lèi) "。
2.創(chuàng)建一個(gè)自定義的安裝對(duì)話(huà)框。鼠標(biāo)右鍵點(diǎn)擊 "解決方案資源管理器 "中的安裝和部署項(xiàng)目,在彈出的菜單中選擇 "視圖 "-> "用戶(hù)界面 "。在打開(kāi)的 "用戶(hù)界面 "管理器中,鼠標(biāo)右鍵點(diǎn)擊 "啟動(dòng) ",在彈出的菜單中選擇 "添加對(duì)話(huà)框 "。在打開(kāi)的對(duì)話(huà)框中選擇 "文本框(A) "。選擇 "文本框(A) ",在屬性中,依次設(shè)置含Property屬性為CUSTOMTEXT1,CUSTOMTEXT2,CUSTOMTEXT3,CUSTOMTEXT4。
3.創(chuàng)建自定義操作。鼠標(biāo)右鍵點(diǎn)擊 "解決方案資源管理器 "中的安裝和部署項(xiàng)目,在彈出的菜單中選擇 "視圖 "-> "自定義操作 "。在打開(kāi)的 "自定義操作 "管理器中,鼠標(biāo)右鍵點(diǎn)擊 "安裝 ",在彈出的菜單中選擇 "添加自定義操作 "。在打開(kāi)的對(duì)話(huà)框中,在 "查找范圍 "中選擇 "Web應(yīng)用程序文件夾 ",選擇下面列表中的 "主輸出來(lái)自Install1(活動(dòng)) "(Install1是 "安裝程序類(lèi) "所在的項(xiàng)目名。如果列表中沒(méi)有,可以用上面提到的 "將項(xiàng)目的輸出添加到安裝和部署項(xiàng)目中 "的方法添加)。然后在 "自定義操作 "管理器中選擇剛添加的內(nèi)容,在屬性窗口中設(shè)置CustomActionData屬性/dbname=[CUSTOMTEXT1] /server=[CUSTOMTEXT2] /user=[CUSTOMTEXT3] /pwd==[CUSTOMTEXT4] /targetdir= "[TARGETDIR]\ "
注意:每個(gè)設(shè)置內(nèi)容以/分隔,且以空格分開(kāi)。
4.在此類(lèi)中重寫(xiě)Install方法,并添加下面的代碼
- string strConn=String.Format( "data source={0};user id={1};password={2}; ",this.Context.Parameters[ "server "],this.Context.Parameters[ "user "],this.Context.Parameters[ "pwd "]);
- this.ExecuteSQL(strConn, "master ", "CREATE DATABASE "+this.Context.Parameters[ "dbname "]);
- System.Diagnostics.Process pSQL=new System.Diagnostics.Process();
- pSQL.StartInfo.FileName= "osql.exe ";
- pSQL.StartInfo.Arguments=String.Format( " -U {0} -P {1} -d{2} -i {3}db.sql ",this.Context.Parameters[ "user "],
- this.Context.Parameters[ "pwd "], this.Context.Parameters[ "dbname "],this.Context.Parameters[ "targetdir "]);
- pSQL.StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
- pSQL.Start();
- pSQL.WaitForExit();
- pSQL.Close();
這樣,編譯后的安裝程序就可以連數(shù)據(jù)庫(kù)一起安裝了。
安裝數(shù)據(jù)庫(kù)的問(wèn)題解決了,還有一個(gè)問(wèn)題,那就是要使ASP.NET程序運(yùn)行,一個(gè)重要的條件就是目標(biāo)計(jì)算機(jī)上必須有.NET框架,那能不能在安裝程序時(shí)也一同將.NET框架一塊安裝了呢?答案還是肯定的。具體可以參看
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/
Nfdnnetdepvsredistdeploy1_1.mspx在這篇文章中提到了幾種不同的方法重新分發(fā).NET框架,其中最簡(jiǎn)單的一種應(yīng)該算是使用VS.NET2003了。大致的步驟如下:
1.安裝VS.NET框架引導(dǎo)程序插件。這個(gè)插件可以從微軟的網(wǎng)站上下載,下載地址如下:
http://www.microsoft.com/downloads/details.aspx?familyid=627921a0-d9e7-43d6-a293-72f9c370bd19&displaylang=en2.在 "解決方案資源管理器 "中,用鼠標(biāo)右鍵單擊安裝和部署項(xiàng)目,在彈出的菜單中選擇 "視圖 "-> "啟動(dòng)條件 ",打開(kāi) "啟動(dòng)條件 "管理器。
3.在 "啟動(dòng)條件 "管理器中,右鍵點(diǎn)擊 "目標(biāo)計(jì)算機(jī)上的要求 ",在彈出的的菜單中選擇 "添加注冊(cè)表啟動(dòng)條件 "。你會(huì)發(fā)現(xiàn)在 "搜索目標(biāo)計(jì)算機(jī) "中多了一項(xiàng) "搜索 RegistryEntry1 ",在 "啟動(dòng)條件 "中多了一項(xiàng) "Condition1 "。
4.選擇 "搜索 RegistryEntry1 ",在 "屬性 "對(duì)話(huà)框中填寫(xiě)如下內(nèi)容:
Property:MDACSEARCH
RegKey:Software\Microsoft\DataAccess
Root:vsdrrHKLM
Value:FullInstallVer
選擇 "Condition1 " ,在 "屬性 "對(duì)話(huà)框中填寫(xiě)如下內(nèi)容:
Condition:MDACSEARCH> = "2.6 "
進(jìn)行這一步是因?yàn)樵诎惭b.NET框架的時(shí)候需要MDAC。
【編輯推薦】