C#寫的windows應用程序打包

話很少說開始

第一步:html

打開VS2010,打開你要打包的項目,而後右擊"解決方案",」添加「,"新建項目",彈出以下圖所示界面:sql

點擊」安裝和部署「左邊的三角形,選擇下面的」Visual studio Installer「,再選擇」安裝項目「,同時將下面的命名改成」Setup「點擊肯定。數據庫

 

 

第二步:服務器

點擊解決方案裏面生成的」Setup「,將屬性中的ProtectName改成你的項目名字ide

 

第三步:函數

右擊解決方案裏面的」Setup「,而後再選擇」屬性「。彈出屬性頁界面以下第二張圖:post

再點擊裏面的系統必備。ui

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

1)、Windows Installer 3.1(必選)spa

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

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

 

 

 

 

 

第四步:(沒有數據庫或使用SQLite的能夠忽略這一步)

右擊」應用程序文件夾「,點擊」添加「,文件再點擊文件夾,命名爲」DB「(可隨意)用於存放你的數據庫文件。

而後再右擊剛纔添加好的"DB"文件夾,」添加「,」文件「,將你的數據庫添加進來。

\

\

第五步:

右擊」應用程序文件夾「,點擊」添加「,點擊」文件「。將你的Release或者Debug目錄下面的文件所有添加進來。

\

第六步:

右擊」應用程序文件夾「,點擊」添加「,選擇」項目輸出...「,注意:在項目欄要選擇你本身的項目(個人項目名:StudentJisu),而後選擇」主輸出「,點擊肯定。

\

\

第七步:

建立桌面快捷方式,右擊剛纔添加的」主輸出「,而後選擇第一個」建立快捷方式「,而後你能夠將快捷方式從新命名(我從新命名爲:學生寄宿管理系統)

最後,鼠標左鍵點住快捷方式,而後拖放到」用戶桌面「文件夾下面。

\

\

第八步:

建立卸載程序。右擊」應用程序文件夾「,點擊」添加「,選擇」文件「,而後將"C:\Windows\System32" 下面的」msiexec.exe「文件給添加進來,若是找不到,你能夠直接搜。固然,你也能夠再給msiexec.exe建立一個快捷方式命名爲」UnInstall「。

\

\

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

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

\\

第九步:

改變桌面快捷方式的Logo。自帶的logo實在是太挫了,你能夠去網上下載一個圖片,而後轉換爲.ico格式。

下圖中」應用程序文件夾「是指logo存放的位置,通常存在在該處就好了。

\

第十步:(沒有數據庫或者使用SQLite的到第九步就所有結束了 後面直接到最後一步生成就完事了~)

附加數據庫。咱們如今添加一個類,用於編寫附加數據庫代碼。

右擊」解決方案「,點擊」添加「,選擇」新建項目「,而後新建一個C#類庫,並命名爲」InstallDB「。

最後,將」class1.cs「刪掉。

\

\

\

第十一步:

新建一個類,用於寫數據庫附加到 數據庫管理系統中的 代碼。右擊剛新建的那個」InstallDB「,點擊」添加「,選擇」新建項「。

而後在彈出的界面中,選擇」安裝程序類「,並命名爲」InstallDB.cs「。

\

\

第十二步:

因爲附加數據庫須要用戶輸入本機數據庫的一些信息,好比:服務器名稱,數據庫管理員名稱和密碼等等。這時候,咱們能夠在安裝過程當中彈出一個等待用戶輸入的框:

右擊」Setup「,點擊」視圖「,選擇」用戶界面「。彈出以下第二個界面,再右擊」啓動「,點擊「添加對話框」,選擇」文本框(A)「,同時將其拖放到」歡迎使用「下面,以下第三張圖。

最後,根據本身的須要填寫」文本框(A)「的屬性,能夠參考第三張圖。

注:裏面定義的變量,主要是爲了下面的附加代碼而定義的。

\

\

\

第十三步:

添加 附加數據庫的 主輸出。右擊」setup「,選擇」視圖「,」自定義操做「。

而後,右擊」安裝「,選擇」應用程序文件夾「,選擇安裝程序類」InstallDB「,仍是選擇」主輸出「,肯定。

接着,在CostomActionData裏面複製粘貼以下:

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

\

\

\

第十四步:

在InstallDB.cs中編寫附加數據庫代碼。先點擊」單機此處切換到代碼視圖「。

而後添加 幾個 命名空間。

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

\\

固然,最後寫好的代碼,以下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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);//開始建立數據庫
         }
     }
}
 
可能你看到代碼比較多,其實這些你均可以重用,你只須要改其中的一點點就好了。以下圖(黑框裏面的東西):你懂得。

\

第十五步:

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

\\

相關文章
相關標籤/搜索