一、如果網站安裝不需安裝資料庫。
1.開啟已有網站->發布網站->確定。
2.在解決方案中添加->建立項目->其它項目類型->安裝和布署->WEB安裝項目-確定。
3.通過添加檔案把發布的網站中的檔案添加到出來的檔案系統->WEB應用程式檔案夾。也可以把檔案直接拖到裡面,效果一樣。
4.產生WEB安裝項目。簡單打包就完成了。
二、部署帶資料庫(sql server)的web應用程式
1.開啟已有網站->發布網站->確定(得到要發布的內容)。
2.在解決方案中添加->建立項目->其它項目類型->安裝和布署->WEB安裝項目-確定。
3.將要發布的內容添加到安裝項目中(包括table.sql檔案)。
4.選中web安裝項目->使用者介面編輯器,在啟動下:添加對話方塊->文字框(A)->右鍵屬性,
Edit1Label 屬性並鍵入:資料庫名稱:。 Edit1Property 屬性並鍵入 CUSTOMTEXTA1。 Edit1Value 屬性並鍵入:customdb。 Edit2Label 屬性並鍵入:伺服器名:。 Edit2Property 屬性並鍵入 CUSTOMTEXTA2。 Edit2Value 屬性並鍵入:localhostEdit3Label 屬性並鍵入:使用者名稱:。 Edit3Value 屬性並鍵入:sa。 Edit3Property 屬性並鍵入 CUSTOMTEXTA3。 Edit4Label 屬性並鍵入:密碼:。 Edit4Property 屬性並鍵入 CUSTOMTEXTA4。
移動到適當位置。
5.在當前解決方案中添加建立類庫項目(DBInstaller),在項目中添加安裝程式類(類中代碼在下)。
6.添加web安裝項目輸出,選擇DBInstaller。
7.選中web安裝項目->自訂動作編輯器-安裝-添加自訂動作,找到6中添加的檔案,
設定所添加檔案的屬性CustomActionData:/dbname=[EDITA1] /server=[EDITA2] /user=[EDITA3] /pwd=[EDITA4] /targetdir="[TARGETDIR]\"
8.產生。
類中方法代碼:
Code
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", this.Context.Parameters["server"], this.Context.Parameters["user"], this.Context.Parameters["pwd"]);
ExecuteSql(connStr, "master", "CREATE DATABASE " + this.Context.Parameters["dbname"]);
StringBuilder sb = this.GetSqlFile("table.sql");
ExecuteSql(connStr, this.Context.Parameters["dbname"], sb.ToString());
}
// 擷取Sql檔案裡的指令碼
private StringBuilder GetSqlFile(string pFileName) {
StringBuilder sqlTemp = new StringBuilder();
sqlTemp.Append(File.ReadAllText(this.Context.Parameters["targetdir"] + "\\"+ pFileName, System.Text.Encoding.GetEncoding("GB2312")));
return sqlTemp;
}
private void ExecuteSql(string connStr, string DatabaseName, string Sql)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlCommand cmd = new SqlCommand(Sql, conn);
conn.Open();
conn.ChangeDatabase(DatabaseName);
try
{
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
}