色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

ASP.NET 項(xiàng)目安裝包制作(三)補(bǔ)充說明

  相關(guān)文章:ASP.NET項(xiàng)目安裝包制作 、ASP.NET 項(xiàng)目安裝包制作(二)數(shù)據(jù)庫安裝、其他組件的安裝

  一、 安裝標(biāo)題

  按照前面的做法中,在安裝過程中,如下圖:

image

  安裝的標(biāo)題是HxjWebSteup,這樣的標(biāo)題和產(chǎn)品名稱顯然是無法再實(shí)際項(xiàng)目中使用的。

  這里我們需要通過設(shè)置安裝項(xiàng)目的屬性來設(shè)置一下就可以,選中HxjWebSetup項(xiàng)目按F4出來屬性窗口,這個(gè)和右擊項(xiàng)目屬性是不一樣的。如下圖:

image

  我們修改一下ProductName這個(gè)屬性,變成Steven hu ProductName,我們?cè)賮砜纯窗惭b過程,如下圖:

image

  我們想要的效果已經(jīng)達(dá)到了,安裝標(biāo)題和產(chǎn)品名稱都已經(jīng)修改。

  二、附加數(shù)據(jù)庫

  在第二節(jié)中有提到可以使用直接附加數(shù)據(jù)庫文件的形式來完成我們項(xiàng)目數(shù)據(jù)庫的創(chuàng)建安裝。其實(shí)我們平時(shí)經(jīng)常使用企業(yè)管理器來附加數(shù)據(jù)庫,當(dāng)然我們也可以執(zhí)行數(shù)據(jù)庫的系統(tǒng)存儲(chǔ)過程來完成該項(xiàng)操作。

  sp_attach_db 存儲(chǔ)過稱,我們首先來看一下幫助文檔中解釋;

  sp_attach_db

  將數(shù)據(jù)庫附加到服務(wù)器。語法:

  sp_attach_db [ @dbname = ] 'dbname' 

  , [ @filename1 = ] 'filename_n' [ ,...16 ]

  參數(shù)

  [@dbname =] 'dbname'

  要附加到服務(wù)器的數(shù)據(jù)庫的名稱。該名稱必須是唯一的。dbname 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。

  [@filename1 =] 'filename_n'

  數(shù)據(jù)庫文件的物理名稱,包括路徑。filename_n 的數(shù)據(jù)類型為 nvarchar(260),默認(rèn)值為 NULL。最多可以指定 16 個(gè)文件名。參數(shù)名稱以 @filename1 開始,遞增到 @filename16。文件名列表至少必須包括主文件,主文件包含指向數(shù)據(jù)庫中其它文件的系統(tǒng)表。該列表還必須包括數(shù)據(jù)庫分離后所有被移動(dòng)的文件。

  下面我們來具體實(shí)現(xiàn)一下,首先將數(shù)據(jù)庫文件放到web項(xiàng)目app_data文件夾下,如下圖:

image

  接下來,修改安裝類中的代碼,如下:

/// <summary>
///
安裝
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);

string connectionString = GetConnectionString(null);

try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();

string sql = "sp_attach_db 'HxjDB','" + Context.Parameters["targetdir"].ToString() + "App_Data/HxjDB_Data.MDF','"
+ Context.Parameters["targetdir"].ToString() + "App_Data/HxjDB_Log.LDF'";

ExecuteSQL(connection, sql);

//ExecuteSQL(connection, GetResource("createdatabase.sql"));

}
}
catch (Exception ex)
{
MessageBox.Show("數(shù)據(jù)庫安裝失?。?n數(shù)據(jù)庫配置有誤,請(qǐng)正確配置信息!/n" + ex.Message, "出錯(cuò)啦!");

this.Rollback(stateSaver);
}
}

  其他沒有改變,然后就重新打包。然后安裝,在web項(xiàng)目下的數(shù)據(jù)庫就會(huì)被附加上去。

  三、卸載

  在示例中的做法在安裝的時(shí)候是沒有問題的,在卸載或者修復(fù)的時(shí)候,

/// <summary>
///
獲取數(shù)據(jù)庫登錄連接字符串
/// </summary>
/// <param name="databasename">
數(shù)據(jù)庫名稱</param>
/// <returns></returns>
private string GetConnectionString(string databasename)
{
return "server=" + Context.Parameters["server"].ToString() + ";database=" + (string.IsNullOrEmpty(databasename) ? "master" : databasename) + ";User ID=" + Context.Parameters["user"].ToString() + ";Password=" + Context.Parameters["pwd"].ToString();
}

  這里是無法獲取正確的鏈接字符串,Context.Parameters["server"] 這些都已經(jīng)不存在了,所以要想在卸載和修復(fù)的時(shí)候都可以用,則需要在安裝的時(shí)候保存連接字符串。

  保存的位置和方式可根據(jù)自己的喜好存儲(chǔ),畢竟連接字符串不是機(jī)密,自己方便自己就好了。要想卸載的時(shí)候執(zhí)行UnInstall方法,需要在安裝項(xiàng)目中自定義操作中的卸載添加HxjDBInstall。如下圖:

image

NET技術(shù)ASP.NET 項(xiàng)目安裝包制作(三)補(bǔ)充說明,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 南澳县| 疏勒县| 宣汉县| 马鞍山市| 阿克苏市| 乐昌市| 峨眉山市| 铁岭市| 惠来县| 若尔盖县| 台北县| 吉木萨尔县| 韶关市| 新泰市| 高平市| 革吉县| 莱阳市| 萨迦县| 阿鲁科尔沁旗| 通渭县| 葵青区| 烟台市| 丽江市| 平泉县| 濮阳县| 麻江县| 伊宁县| 哈尔滨市| 淳安县| 吉首市| 墨脱县| 方城县| 双流县| 安义县| 盐城市| 彭州市| 黑龙江省| 临清市| 娱乐| 英吉沙县| 广元市|