C#windows應用程式打包(VS2010+SQLServer2008)

來源:互聯網
上載者:User

標籤:

C#windows應用程式打包(VS2010+SQLServer2008)

開發環境:VS2010+SQL Server 2008

作業系統:win7_32bit 旗艦版

開發語言:C#

項目名稱:學生寄宿管理系統

下面開始介紹:如何給windows應用程式打包?

第一步:

開啟VS2010,開啟你要打包的項目,然後右擊"解決方案",”添加“,"建立項目",彈出如所示介面:

點擊”安裝和部署“左邊的三角形,選擇下面的”Visual studio Installer“,再選擇”安裝項目“,同時將下面的命名改為”Setup“點擊確定。

第二步:

點擊解決方案裡面產生的”Setup“,將屬性中的ProtectName改為”學生寄宿系統 V1.0 “(你的項目名字)

第三步:

右擊解決方案裡面的”Setup“,然後再選擇”屬性“。彈出屬性頁面介面如下第二張圖:

再點擊裡面的系統必備。

重要一點:勾選"從與我的應用程式相同的位置下載系統必備組件(D)",其實意思就是說你勾選後,產生安裝項目時,在你安裝項目的路徑下,會有你在系統必備組件列表中勾選的組件.(系統自動完成,這一點還不錯,不需要你自己去下載組件)

1)、Windows Installer 3.1(必選)

2)、.NET Framework 3.5 (可選)參考最後說明

3)、Crystal Report Basic for Visual Studio2008(x86,x64) (可選) 項目中用到了水晶報表就需要勾選此項


第四步:

右擊”應用程式檔案夾“,點擊”添加“,再點擊檔案夾,命名為”DB“(可隨意)用於存放你的資料庫檔案。

然後再右擊剛才添加好的"DB"檔案夾,”添加“,”檔案“,將你的資料庫添加進來。

第五步:

右擊”應用程式檔案夾“,點擊”添加“,點擊”檔案“。將你的Release目錄下面的檔案全部添加進來。

第六步:

右擊”應用程式檔案夾“,點擊”添加“,選擇”項目輸出...“,注意:在項目欄要選擇你自己的項目(我的項目名:StudentJisu),然後選擇”主輸出“,點擊確定。

第七步:

建立案頭捷徑,右擊剛才添加的”主輸出“,然後選擇第一個”建立捷徑“,然後你可以將捷徑重新命名(我重新命名為:學生寄宿管理系統)

最後,滑鼠左鍵點住捷徑,然後拖放到”使用者案頭“檔案夾下面。

第八步:

建立卸載程式。右擊”應用程式檔案夾“,點擊”添加“,選擇”檔案“,然後將"C:\Windows\System32" 下面的”msiexec.exe“檔案給添加進來,如果找不到,你可以直接搜。當然,你也可以再給msiexec.exe建立一個捷徑命名為”UnInstall“。

命名了捷徑之後,將Setup屬性(點擊解決方案裡面的setup彈出屬性)ProductCode拷貝到Uninstall屬性的Arguments裡面:

同時在前頭加上 ”/X “,注意:x後面有一個空格。

第九步:

改變案頭捷徑的Logo。內建的logo實在是太挫了,你可以去網上下載一個圖片,然後轉換為.ico格式。

中”應用程式檔案夾“是指logo存放的位置,一般存在在該處就行了。

第十步:

附加資料庫。我們現在添加一個類,用於編寫附加資料庫代碼。

右擊”解決方案“,點擊”添加“,選擇”建立項目“,然後建立一個C#類庫,並命名為”InstallDB“。

最後,將”class1.cs“刪掉。

第十一步:

建立一個類,用於寫資料庫附加到 資料庫管理系統中的 代碼。右擊剛建立的那個”InstallDB“,點擊”添加“,選擇”建立項“。

然後在彈出的介面中,選擇”安裝程式類“,並命名為”InstallDB.cs“。

第十二步:

由於附加資料庫需要使用者輸入本機資料庫的一些資訊,比如:伺服器名稱,資料庫管理員名稱和密碼等等。這時候,我們可以在安裝過程中彈出一個等待使用者輸入的框:

右擊”Setup“,點擊”視圖“,選擇”使用者介面“。彈出如下第二個介面,再右擊”啟動“,點擊“添加對話方塊”,選擇”文字框(A)“,同時將其拖放到”歡迎使用“下面,如下第三張圖。

最後,根據自己的需要填寫”文字框(A)“的屬性,可以參考第三張圖。

註:裡面定義的變數,主要是為了下面的附加代碼而定義的。

第十三步:

添加 附加資料庫的 主輸出。右擊”setup“,選擇”視圖“,”自訂動作“。

然後,右擊”安裝“,選擇”應用程式檔案夾“,選擇安裝程式類”InstallDB“,還是選擇”主輸出“,確定。

接著,在CostomActionData裡面複製粘貼如下:

/dbname=[DBNAME] /server=[SERVER] /user=[USER] /pwd=[PWD] /targetdir="[TARGETDIR]\" 

第十四步:

在InstallDB.cs中編寫附加資料庫代碼。先點擊”單機此處切換到程式碼檢視“。

然後添加 幾個 命名空間。

當然,要使用MessageBox()函數,需要添加using System.Windows.Forms;之外,同時需要添加System.Windows.Forms引用(具體操作:右擊InstallDB,選擇添加引用,選擇.NET)

當然,最後寫好的代碼,如下所示:

using System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Configuration.Install;using System.Linq;using System.Data.SqlClient;using System.Windows.Forms;using System.IO;using System.Security.AccessControl;namespace InstallDB{    [RunInstaller(true)]    public partial class InstallDB : System.Configuration.Install.Installer    {        public InstallDB()        {            InitializeComponent();        }        //建立資料庫        private void CreateDataBase(string strSql, string DataName, string strMdf, string strLdf, string path)        {            SqlConnection myConn = new SqlConnection(strSql);            String str = null;            try            {                str = @" EXEC sp_attach_db @dbname=‘" + DataName + "‘,@filename1=‘" + strMdf + "‘,@filename2=‘" + strLdf + "‘";                SqlCommand myCommand = new SqlCommand(str, myConn);                myConn.Open();                myCommand.ExecuteNonQuery();                MessageBox.Show("資料庫安裝成功!點擊確定繼續");//需Using System.Windows.Forms            }            catch (Exception e)            {                MessageBox.Show("資料庫安裝失敗!" + e.Message + "\n\n" + "您可以手動附加資料");                System.Diagnostics.Process.Start(path);//開啟安裝目錄            }            finally            {                myConn.Close();            }        }        //許可權管理        private static void SetFullControl(string path)        {            FileInfo info = new FileInfo(path);            FileSecurity fs = info.GetAccessControl();            fs.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));            info.SetAccessControl(fs);        }        //重載的Install函數        public override void Install(System.Collections.IDictionary stateSaver)        {            string server = this.Context.Parameters["server"];//伺服器名稱            string uid = this.Context.Parameters["user"];//SQlServer使用者名稱            string pwd = this.Context.Parameters["pwd"];//密碼            string path = this.Context.Parameters["targetdir"];//安裝目錄            string ch = path.Substring(path.Length - 1, 1);            if (ch == @"\")   //對路徑進行處理,判斷末尾是否有‘\‘                path = path.Substring(0, path.Length - 1);//有則刪掉                      string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//串連資料庫字串            string DataName = @"StuBoardDB";//資料庫名            string strMdf = path + @"XSJSGLXT.mdf";//MDF檔案路徑,這裡需注意檔案名稱要與剛添加的資料庫檔案名一樣!            SetFullControl(strMdf);    //設定許可權為EveryOne            string strLdf = path + @"XSJSGLXT_log.ldf";//LDF檔案路徑            SetFullControl(strLdf);    //設定許可權為EveryOne            base.Install(stateSaver);            this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//開始建立資料庫        }    }}可能你看到代碼比較多,其實這些你都可以重用,你只需要改其中的一點點就行了。如(黑框裡面的東西):你懂得。

第十五步:

好了,最後,產生安裝包。

參考文獻:寬田的部落格園.c# winform 打包(帶資料庫安裝)[CP/OL].http://www.cnblogs.com/scottckt/archive/2011/05/14/2046313.html,2011-05-14/2014-07-08

邢海芳的CSDN部落格.VS2010 C/S模式winForm打包部署.詳細![CP/OL].http://blog.csdn.net/xhf55555/article/details/7702212,2012-06-29/2014-07-08

C#windows應用程式打包(VS2010+SQLServer2008)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.