winform 打包部署

1.使用VS 自帶的打包工具,製做winform安裝項目redis

開發環境:VS 2008 Accesssql

操做系統:Windows XP數據庫

開發語言:C#windows

 

步驟:

第一步:打開開發環境VS2008,新建項目,選擇其餘項目類型,再選擇"安裝項目",輸入名稱及選擇安裝路徑;

第二步:進入文件系統選項卡,選擇應用程序文件夾,在中間的空白區域右鍵選擇"添加文件",添加項目文件(exe,dll);   

第三步:添加項目所需文件;這裏有兩個文件夾須要注意(DataBase和Report),由於DataBase是存儲項目數據庫,而Report則是存儲項目所需的報表文件.rpt,所以呢,在應用程序夾中也須要建同名的文件夾,而且添加所需的文件。

效果:服務器

第四步:爲了在開始程序菜單中和桌面應用程序中看到安裝程序,這裏咱們就須要爲項目建立快捷方式。

右鍵選擇可執行文件(PersonFinance.exe),建立快捷方式,進行重命名"**公司**管理系統",將該快捷方式拖放到 '用戶的"程序"菜單' 中。重複該步驟將新建的快捷方式添加到 "用戶桌面" 文件夾中網絡

最好在用戶菜單中創建一個文件夾,存放安裝程序框架

第五步:設置系統必備,右鍵選擇安裝項目,進入屬性頁中,單擊"系統必備"按鈕,進入系統必備對話框;

勾選"建立用於安裝系統必備組件的安裝程序",在安裝系統必備組件列表中,選擇編輯器

            1)、Windows Installer 3.1(必選)工具

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

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

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

第六步:卸載程序,由於安裝包作好以後不能只有安裝程序,還要有卸載程序

           首先呢,在"C:\WINDOWS\system32"路徑下,找到msiexec.exe 添加到應用程序文件夾中,建立快捷方式,並命名"卸載管理系統"或"Uninstall"

           其次呢,選擇安裝項目的ProductCode

右鍵選擇卸載程序的快捷方式,進入屬性,在Arguments選項中 輸入/x 及ProductCode; 例如:/x {6931BD71-5C5E-4DA1-A861-14C7D1A78B97}

            將卸載程序同時存放到用戶的開始菜單的文件夾中(在第四步中新建)

第七步:更改安裝程序屬性,右鍵選擇安裝項目屬性,能夠設置項目做者及名稱,其餘屬性信息能夠根據實際狀況進行設置.

第八步:生成安裝項目生成時,會出現些警告:

應將「msiexec.exe」排除,緣由是其源文件「C:\WINDOWS\system32\msiexec.exe」受到「Windows 系統文件保護」;

兩個或多個對象具備相同的目標位置(「[targetdir]\model.dll」)
解決方案:

第一種:都不處理

第二種:第一類警告,能夠編寫卸載程序

           第二種警告:刪除相同的文件

安裝項目製做完畢.

注意:

一、.net framework 框架是可選的,不必定說你採用的是VS2008開發就必需要使用.net framework 3.5,只要你在程序中沒有使用到.net framework 3.5 的特性好比(LINQ),那麼你選擇框架時,是能夠選擇2.0的,爲何?由於2.0只有20多MB,而3.5則有200多MB。

更改方式:在安裝項目下面有個檢測到的依賴項文件,雙擊裏面的Microsoft .net framework,進入了啓動條件選擇卡,右鍵選擇.net frmaework 在Version中選擇你所需的.net framework框架

2.VS2005 打包,並自動安裝SQL數據庫

一).建立部署項目    

1.   在「文件」菜單上指向「添加項目」,而後選擇「新建項目」。    
2.   在「添加新項目」對話框中,選擇「項目類型」窗格中的「安裝和部署項目」,而後選擇「模板」窗格中的「安裝項目」。在「名稱」框中鍵入   setup1。    
3.   單擊「肯定」關閉對話框。    
4.   項目被添加到解決方案資源管理器中,而且文件系統編輯器打開。    
5.   在「屬性」窗口中,選擇   ProductName   屬性,並鍵入   信息管理系統   。       

二).將   主程序   項目的輸出添加到部署項目中    

1.   在「文件系統編輯器」中,選擇「應用程序文件夾」。在「操做」菜單上,指向「添加」,而後選擇「項目輸出」。    
2.   在「添加項目輸出組」對話框中,選擇「項目」下拉列表中的「你的程序」。    
3.   單擊「肯定」關閉對話框。    
4.   從列表中選擇「主輸出」和「內容文件」組,而後單擊「肯定」。         

三).建立安裝程序類    

1.   在「文件」菜單上指向「新建」,而後選擇「項目」。    

2.   在「新建項目」對話框中,選擇「項目類型」窗格中的「Visual   Basic   項目」,而後選擇「模板」窗格中的「類庫」。在「名稱」框中鍵入   installDB。    
3.   單擊「打開」關閉對話框。    
4.   從「項目」菜單中選擇「添加新項」。    
5.   在「添加新項」對話框中選擇「安裝程序類」。在「名稱」框中鍵入   installDB。    
6.   單擊「肯定」關閉對話框。    
7.   詳細代碼附後。 

四).建立自定義安裝對話框    

1.   在解決方案資源管理器中選擇「setup1」項目。在「視圖」菜單上指向「編輯器」,而後選擇「用戶界面」。    
2.   在用戶界面編輯器中,選擇「安裝」下的「啓動」節點。在「操做」菜單上,選擇「添加對話框」。    
3.   在「添加對話框」對話框中,選擇「許可協議」對話框,而後單擊「肯定」關閉對話框。    
4.   在「添加對話框」對話框中,選擇「文本框   (A)」對話框,而後單擊「肯定」關閉對話框。    
5.   在「操做」菜單上,選擇「上移」。重複此步驟,直到「文本框   (A)」對話框位於「安裝文件夾」節點之上。    
6.   在「屬性」窗口中,選擇   BannerText   屬性並鍵入:安裝數據庫. 
7.   選擇   BodyText   屬性並鍵入:安裝程序將在目標機器上安裝數據庫 
8.   選擇   Edit1Label   屬性並鍵入:數據庫名稱: 
9.   選擇   Edit1Property   屬性並鍵入   CUSTOMTEXTA1 
10.   選擇   Edit1Value   屬性並鍵入:dbservers 
11.   選擇   Edit2Label   屬性並鍵入:服務器名: 
12.   選擇   Edit2Property   屬性並鍵入   CUSTOMTEXTA2 
13.   選擇   Edit2Value   屬性並鍵入:(local) 
14.   選擇   Edit3Label   屬性並鍵入:用戶名: 
15.   選擇   Edit3Value   屬性並鍵入:sa 
16.   選擇   Edit3Property   屬性並鍵入   CUSTOMTEXTA3 
17.   選擇   Edit4Label   屬性並鍵入:密碼: 
18.   選擇   Edit4Property   屬性並鍵入   CUSTOMTEXTA4 
19.   選擇   Edit2Visible、Edit3Visible   和   Edit4Visible   屬性,並將它們設置爲   true    

五).建立自定義操做    

1.   在解決方案資源管理器中選擇「setup1」項目。在「視圖」菜單上指向「編輯器」,而後選擇「自定義操做」。    
2.   在自定義操做編輯器中選擇「安裝」節點。在「操做」菜單上,選擇「添加自定義操做」。    
3.   在「選擇項目中的項」對話框中,雙擊「應用程序文件夾」。    
4.   選擇「主輸出來自   installDB(活動)」項,而後單擊「肯定」關閉對話框。    
5.     在「屬性」窗口中,選擇   CustomActionData   屬性並鍵入「/dbname=[CUSTOMTEXTA1]   /server=[CUSTOMTEXTA2]   /user=[CUSTOMTEXTA3]   /pwd=[CUSTOMTEXTA4]   /targetdir="[TARGETDIR]\"」。    
     
附:/targetdir="[TARGETDIR]\"是安裝後的目標路徑,爲了在installDB類中得到安裝後的路徑,咱們設置此參數。 

六).添加文件    

1.   將SQL   Server備份成文件DB.dat添加到「setup1」項目(在企業管理器中右擊數據庫->全部工做->備份數據庫,備份成一個文件,取名爲DB.dat) 
2.   將安裝文件LisenceFile.rtf添加到「setup1」項目 
3.   在用戶界面編輯器中,選擇許可協議,設置LisenceFile屬性爲LisenceFile.rtf文件 
4.通常會自動將依賴項添加到「檢測到的依賴項」,若是沒有,那麼咱們要手動將其加入步驟5) 
                    Crystal_Managed2003.msm           (若是有水晶報表) 
                    dotnetfxredist_x86.msm             (.net必定是必須的) 
                      ...                                                   (若是有引用其餘的dll) 
5.   若是使用了水晶報表,手動加入要包含的文件:項目-->添加-->合併模塊(添加你的程序文件)   (包括dotNetFramework和MDAC27),位於:C:\Program   Files\Common   Files\Merge   Modules\   下,*爲必要的 
具體功能以下: 
                (託管組件   MSM   處理全部託管組件的分發,其中包括   Windows   窗體查看器、Web   窗體查看器和全部   Crystal   Decisions   命名空間) 
                *   Crystal_Managed2003.msm 
                      Crystal_Managed2003_chs.msm 
                (對於使報表運行所需的全部其餘文件,由數據庫訪問   MSM   處理其分發。其中包括數據庫、導出和圖表驅動程序。) 
                  *   Crystal_Database_access2003.msm 
                        Crystal_Database_access2003_chs.msm 
                  (KeyCode   MSM   處理   Crystal   Decisions   密鑰號碼的安裝,注意是添加合併模塊,不然沒有「MergeMouduleProperties」屬性) 
                  *   Crystal_regwiz2003.msm 
                  (若是報表文件使用了   ADO.NET   的   dataset   數據集對象,那麼   VC_User_CRT71_RTL_X86_---.msm   和   VC_User_STL71_RTL_X86_---.msm   模塊也必須包含在安裝工程中。並且這兩個模塊的文件安裝屬性的"Module   Retargetable   Folder"項必須修改爲爲系統目錄) 
                        VC_User_CRT71_RTL_X86_---.msm 
                        VC_User_STL71_RTL_X86_---.msm 
                  (不少人常常出現查詢錯誤,不妨加上這個) 
5.   打開解決方案-->右鍵點擊Crystal_regwiz2003.msm的屬性,在「MergeMouduleProperties」裏的   「License   Key」填入:AAP5GKS0000GDE100DS(這個是你生成Crystal   Report是用到的註冊號的密碼!) 

七).打包時加入卸載功能: 

方法一: 

1.在打包項目中添加文件msiexec.exe(通常可在c:\windows\system32\下找到) 
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸載". 
3.更改此快捷方式的Arguments   爲"/x   {產品id}",產品id的值為打包項目的ProductCode屬性值. 
方法二:(推薦) 
1.先生成安裝包,記下ProductCode(選擇解決方案資源管理器根目錄如setup1,再查看屬性標籤,不是右鍵中的屬性),下面要用到 
2.用VS.net創建一個新的控制檯程序uninst.exe文件 
'power   by:   landlordh 
'for   2000,xp,2003 
Module   uninstall 
          Sub   Main() 
                  Dim   myProcess   As   Process   =   New   Process 
                  If   System.Environment.OSVersion.ToString.IndexOf("NT   5")   Then 
                          myProcess.Start("msiexec",   "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}")     '改成本身的ProductCode 
                  End   If 
                  myProcess.Close() 
          End   Sub 
End   Module 
3.將控制檯程序BIN目錄的exe文件加入到打包程序文件中

方法二:

C#的c/s的winform,數據庫爲sql2k, 
應用程序包括以下文件: 
1.exe,1.dll,1.jpg,1.xml,donetsetup.exe以及數據庫文件1.mdf,1.ldf(或數據庫安裝文件1.sql)。 
打包要求: 
(1)自動檢測是否安裝donet環境,如沒安裝,則提示自動安裝。 
(2)安裝時自動安裝數據庫(附加mdf或運行1.sql)。 
(3)在安裝界面上能自定義一些安裝圖片或提示。

 

安裝項目:

六個子項:文件系統、註冊表、文件類型、用戶界面、自定義操做、啓動條件。 
其中咱們在打包過程當中常常要用到的有文件系統、註冊表、用戶界面和自定義操做。 

文件系統:

嚮應用程序文件夾、用戶的程序菜單、用戶桌面下輸出項目文件(四種類型:文件夾、項目輸出、文件和程序集),還能夠建立快捷方式(通常是放在桌面或程序菜單中)文件系統編輯器表示目標計算機上的文件系統,使用該工具能夠指定應用程序文件安裝的位置。在大多數狀況下,但願將應用程序文件放在 Application Folder 中或在 Application Folder 下建立的子文件夾中。安裝在目標計算機上之後,來自 Application Folder 的文件將位於 Program Files/Manufacturer/ProductName文件夾中,其中 Manufacturer 是安裝 Visual Studio 時使用的公司名,而 ProductName 是用於部署項目的名稱。能夠在安裝項目的屬性窗口中重寫這兩個設置。 

註冊表:

能夠向註冊表中插入鍵,在安裝應用程序的同時建立註冊表項。 
用戶界面:系統自動提供一組在安裝期間顯示的默認對話框。根據正在構建的項目的類型,所提供的這組對話框有所不一樣。使用用戶界面編輯器,能夠將對話框從新排序或刪除對話框。在編輯器中顯示的對話框樹包含兩部分:安裝與管理員安裝。安裝部分包括終端用戶運行安裝程序時顯示的對話框,而管理員安裝部分包含系統管理員將安裝程序上傳到某個網絡位置時顯示的對話框。若是想構建一個沒有用戶界面的安裝,只需在對話框樹上刪除安裝部分中的全部對話框。或者,能夠從一組可用的模板將對話框添加到安裝項目中。 
啓動條件:使用啓動條件編輯器來定義成功運行安裝所必須知足的條件。例如,能夠檢查特定版本的操做系統。若是用戶嘗試在一個不知足條件的系統上安裝,安裝將停止。還能夠配置啓動條件來搜索目標計算機上的某個特定文件、註冊表項或組件。在開始安裝時,Windows Installer 執行搜索和條件評估,並按啓動條件編輯器中所示的順序執行。 

自定義操做:

自定義操做提供了一種在安裝結束時執行任務的機制。例如,您可能但願在安裝應用程序以前先配置好數據庫,此時您能夠用自定義操做來完成數據庫的建立。自定義操做構建爲單獨的 .dll 或 .exe 文件,而後使用自定義操做編輯器添加到項目中,其中這些操做與不一樣的安裝階段有關。自定義操做編輯器包括幾個單獨的文件夾,用於放置執行 Install、Commit、Rollback 或 Uninstall 任務的二進制文件。 
InstallerClass屬性:若是添加的自定義操做是繼承自Installer類(注意放在哪一個文件夾下就要重載哪一個相應的方法),該屬性設爲True,不然該屬性設爲False(注意:爲False時要指定.dll文件的入口——EntryPoint屬性)。 

卸載:

能夠在安裝應用程序中提供一個卸載的快捷方式,藉助於系統提供的卸載程序msiexec.exe(在c:/windows/system32目錄下),並把安裝程序項目的ProductCode屬性值賦給快捷方式的Arguments屬性(注意:在屬性值前加/x) 

安裝程序類:

System.Configuration.Install命名空間下 
Installer類有四個能夠重載的方法,分別是Install,Commit,Rollback,Uninstall。 
分別對應於自定義操做中的四個文件夾:安裝、提交、回滾、卸載。 

 

數據庫安裝:

一、 附加數據庫 
二、 執行建立數據庫的Sql語句 
三、 徹底備份的數據庫文件還原 
能夠將能生成數據庫的的文件(分離的數據庫文件、Sql腳本文件或徹底備份文件)部署到應用程序文件夾下,而後在重載的Install方法里加入生成數據庫代碼(注意:生成數據庫的代碼應該在調用基類的Install方法後)。 
數據庫的卸載:首先刪除數據庫,再調用基類的Uninstall方法刪除應用程序文件夾裏的文件(順序不能亂)。 

幾個特殊點:

一、 文件系統中的AlawaysCreate屬性:本屬性能夠指定爲False,而後Condition屬性爲空時至關於AlawaysCreate屬性爲True(Transitive屬性必須爲True才計算Condition屬性的值)。Condition 屬性可用於向安裝程序添加條件邏輯,例如,僅爲特定的操做系統版本安裝某個文件。它還能夠與文件搜索、註冊表搜索或組件搜索一塊兒使用,以在找不到指定項時使安裝過程終止。能夠是 Windows Installer 條件或屬性,Property 屬性中包含的值,文件、註冊表或組件搜索中的 Name 屬性,也能夠是使用邏輯運算符的上述語句的組合。 
二、 建立快捷方式(在程序中建立,能夠有做爲附加任務,根據用戶的選擇狀況,有選擇的建立): 
添加引用:COM 選項卡並選擇 Windows Script Host Object Model 
建立對象:建立一個 WshShell 的實例對象,接着經過該對象的 CreateShortcut 方法來建立 IWshShortcut 接口的實例對象,傳遞給 CreateShortcut 方法的參數是將要建立的快捷方式的完整路徑(包括該快捷方式的名字)。
設置屬性:TargetPath、WorkingDirectory、WindowStyle、Description、IconLocation 
生成快捷方式:調用 IWshShortcut.Save 方法生成快捷方式文件。
 
 
 
以上引用自園友,粘貼拼接而成,望見諒!

相關文章
相關標籤/搜索