安装部署中的数据库打包和快捷方式启动浏览器
1、? 數據庫腳本打包,如何修改Web.config文件中的數據聯接
2、? 數據庫腳本中的方法和視圖打包時要注意的問題
3、? 如何使創建的快捷方式啟動IE瀏覽器
對于如何打包,建立部署工程,MSDN和網上的一些資料說的很清楚,在這里不再贅述。針對上面兩個問題提做一下總結:
1、? 首先我們要生成數據庫腳本,保存在文件中,如:DBScript.sql。注意:腳本中的“go”要全部去掉,視圖和方法不要生成到一起,后面會講到。
2、? 要生成數據庫就需要用戶SqlServer的用戶名密碼,這時需要用戶自己輸入,我們要給用戶定義一個輸入界面,打開部署項目(比如:我這里叫SetUp)的用戶界面,在安裝-啟動中添加一個用戶界面
<?XML:NAMESPACE PREFIX = V />
我選擇的是文本框(A),然后設置此文本框的屬性,如下圖:
現在只需要輸入用戶名和密碼的兩個文本框,注意:有兩個屬性STRUSER、STRPASS
3、? 有了用戶的用戶名和密碼,我們就可以根據他們生成數據庫,這時,要建立一個用戶自定義操作,在這個過程中,我們先要建立一個安裝類,在項目中添加一個Install類庫,添加一個安裝程序類,這個類繼承自System.Configuration. Install.Installer。
定義這個類的目的是加入我們需要的一些步驟,這里我們要加入數據庫的建立和修改Web.Config中的數據聯接,主要是重寫Install方法。
第一步:獲得用戶輸入的用戶名和密碼
??????? private string strUser = "";
??????? private string strPass = "";
?
public override void Install(IDictionary stateSaver)
??????? {
??????????? this.strUser = this.Context.Parameters["strUser"];
??????????? if(this.Context.Parameters["strPass"] != null)
??????????????? this.strPass = this.Context.Parameters["strPass"];
}
第二步:建立數據庫及數據庫表
將剛才生成的數據庫腳本添加到Install項目下,修改其屬性中的生成操作為“嵌入的資源”,編寫相應的代碼
protected void? AddDBTable(string strDBName )
??????? {
??????????? try
??????????? {
??????????????? //Create the database.
??????????????? ExecuteSql("master", "CREATE DATABASE " + strDBName);
??????????????? // Create the tables.
??????????????? ExecuteSql(strDBName, GetSql("DBScript.sql"));
??????????????? ExecuteSql(strDBName, GetSql("Fuction.sql"));
??????????????? ExecuteSql(strDBName, GetSql("View.sql"));
??????????? }
??????????? catch(Exception ex)
??????????? {
??????????????? throw ex;
??????????? }
}
?
private void ExecuteSql(string DatabaseName , string Sql)
??????? {
??????????? SqlConnection sqlConnection1 = new SqlConnection("user id=" + strUser + ";password="+strPass+";database=master;server=(local)") ;
??????????? SqlCommand Command? = new SqlCommand(Sql, sqlConnection1);
??????????? Command.Connection.Open();
??????????? Command.Connection.ChangeDatabase(DatabaseName);
???????????
??????????? try
??????????? {
??????????????? Command.ExecuteNonQuery();
??????????? }
??????????? catch(Exception ex)
??????????? {
??????????????? throw ex;
??????????? }
??????????? finally
??????????? {
??????????????? Command.Connection.Close();
??????????? }??????
??????? }
?
??????? private string? GetSql(string strName)
??????? {
??????????? try
??????????? {
??????????????? Assembly Asm = Assembly.GetExecutingAssembly();
??????????????? Stream strm? = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + strName);
??????????????? StreamReader reader= new StreamReader(strm);
??????????????? return reader.ReadToEnd();
??????????? }
??????????? catch(Exception ex)
??????????? {
??????????????? throw ex;
??????????? }??????????????????????????????????????????????????????????????
}
注意:這里有兩個執行腳本Fuction.sql,View.sql,對于每一個Fuction和View要單獨使用一個腳本文件,因為每一個方法或視圖的建立要求在查詢語句的第一行,如果我們有兩個方法的話,就要這樣建立,如:要創建Function1和Function2。就要建立兩個腳本Function1.sql和Function2.sql分別用來創建Function1和Function2。(我沒有找到其他的方法解決這個問題,如果大家有更好的方法,歡迎給我指出)
第三步:修改Web.config中的數據聯接,我們可以用處理Xml的方式處理Web.config。
protected void WriteWebConfig()
??????? {
??????????? try
??????????? {
??????????????? FileInfo file = new FileInfo(this.Context.Parameters["targetdir"] + @"\Web.config");
??????????????? XmlDocument doc = new XmlDocument();
??????????????? doc.Load(file.FullName);
??????????????? XmlElement root = doc.DocumentElement;
??????????????? XmlNodeList list = root.SelectNodes("/configuration/appSettings/add");
??????????????? foreach(XmlNode node in list)
??????????????? {
??????????????????? if(node.Attributes["key"].Value == "DBConn")
??????????????????? {
??????????????????????? node.Attributes["value"].Value = "workstation id=.;packet size=4096;user id=" + strUser + ";pwd=" + strPass + ";data source=.;persist security info=False;initial catalog=DB";
??????????????????????? doc.Save(file.FullName);
??????????????????????? break;
??????????????????? }
??????????????? }
??????????? }
??????????? catch(Exception ex)
??????????? {
??????????????? throw ex;
??????????? }
}
這里要注意一個問題——對于部署后的Web.config的位置的確定,在這里用到了一個屬性“targetdir”,這個屬性會在一會的添加自定義操作中定義。
第四步:有了生成數據庫及數據庫表和對Xml數據聯接的方法,我們只要在Install方法中調用就可以了。Install方法代碼如下:
public override void Install(IDictionary stateSaver)
??????? {
??????????? this.strUser = this.Context.Parameters["strUser"];
??????????? if(this.Context.Parameters["strPass"] != null)
??????????????? this.strPass = this.Context.Parameters["strPass"];
??????????? this.AddDBTable("ExamTool");
??????????? this.WriteWebConfig();
}
4、? 有了自定義操作類,我們就要把它添加到用戶自定義操作中,打開部署項目中的用戶自定義操作視圖,在安裝上添加自定義操作
選擇Web應用程序文件夾,添加輸出,選擇剛才建立的Install類庫,選擇主輸出
點擊“確定”,設置添加的自定義操作的屬性
注意:CustomActionData是指定要安裝程序的自定義數據,這里面設置了三個參數,/strUser=[STRUSER] /strPass=[STRPASS] /targetdir=[TARGETDIR],其中targetdir是需要的部署的目標地址,這些參數以“/”表示開始,以“ ”(空格)隔開。
數據庫部署部分基本完成,我們再來看看對于Web程序如何啟動IE打開首頁。
首先,我們要將IE的exe文件引入部署程序,在文件系統視圖中添加Program Files文件夾,在此文件夾中添加文件
選擇IE的文件,在系統盤下的\Program Files\Internet Explorer\iexplore.exe
創建的快捷方式中設置屬性,如下圖
Target設置成iexplore.exe,WorkingFolder設置為Program Files文件夾。
這樣整個部署程序已基本完成,編譯一下就可以了。編譯的時候注意,生成的SetUp文件分為Debug版和Release版,Release版本相對較小,而且部署好的程序執行的效率相對較高,建議用這個版本部署。
轉載于:https://www.cnblogs.com/wayne-ivan/archive/2006/10/18/532317.html
總結
以上是生活随笔為你收集整理的安装部署中的数据库打包和快捷方式启动浏览器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长城汽车的空调压缩机大概多少钱?
- 下一篇: VC中基于 Windows 的精确定时