.NET 打包入門

作者: 叩亦杰  來源: 博客園  發布時間: 2011-01-07 10:09  閱讀: 1041 次  推薦: 0   原文鏈接   [收藏]  

  1、在這個安裝包制作的過程中,所用到的一些圖片或者文件,如:快捷鍵圖片,安裝步驟中每個圖形界面的背景圖片等都要事先在[應用程序文件夾]中事先添加好這些圖片,即在安裝項目中添加這些圖片,文件好像是解決方案下debug下的所有文件都拷貝,如exe、config、rpt還有圖片等

  2、安裝包中的那個Install里面的方法的執行時間是在:所以的文件都安裝好了后再執行其中的號碼。如客戶端安裝是在配置文件已經裝好了后,但是其中的配置節還沒有信息,但是在代碼中賦值之后就有了,還有服務器也一樣,如數據庫也一樣,首先是拷貝到客戶端電腦上,然后再執行install中的代碼,。獲取硬盤上的數據庫文件,然后再在數據庫中創建,并且引用到這個數據庫文件

  第一、給安裝項目添加必要的文件,貌似是應用程序debug文件夾下的所有文件,還有是安裝系統要用的圖片文件

  第二、添加系統必備:安裝項目右鍵->屬性->選擇系統必備,必選上[數據訪問組件]、[.net 2.0]、[windows installer 3.1]。如果應用程序中有rpt的報表就要加上報表引擎, 其中【指定系統必備組件的安裝位置】要選擇第二個,【從與我的應用程序相同的位置下載系統必備組件】

  第三、添加卸載程序,打開系統目錄C:\WINDOWS\system32找到文件msiexec.exe,復制到剛創建的安裝項目文件系統視圖的應用程序文件夾中。

  第四、創建【用戶的'程序'菜單(包括安裝和卸載)】
      首先創建一個文件夾,然后在文件夾里創建下面兩個,因為這個文件夾就是在開始菜單->程序->該文件夾->安裝和卸載
      1、創建卸載快捷鍵(先選擇程序,然后配屬性):選擇【用戶的'程序'菜單】->在中間空白地方右鍵【創建快捷鍵】->選擇msiexec.exe->右鍵快捷鍵選擇屬性->修改Name和ICON->配置Arguments屬性。 配置Arguments屬性的方法是:單擊安裝項目,是左鍵單擊,然后找到ProductCode,復制下來,然后Arguments=/x ProductCode(這里注意有個空格)。
      2、創建安裝快捷鍵(也是先選擇程序,然后配屬性):選擇【用戶的'程序'菜單】->在中間空白地方右鍵【創建快捷鍵】->選擇[應用程序的exe文件]->右鍵快捷鍵選擇屬性->修改Name和ICON,且安裝不需要 配Arguments屬性
      3、在【用戶桌面】中重復第2步的操作  

  第五、添加用戶操作界面
      右鍵安裝項目->視圖->用戶界面:安裝的過程無非就是:啟動->進度->結束
      給啟動添加一個【文本框A】,并且將它上移到安裝文件夾的上面(安裝程序運行的時候就是按著上面的順序運行的)->右鍵這個【文本框A】,填寫其中的值

  第六、添加自定義操作
      為安裝解決方案添加一個類庫項目,刪除Class1.cs。為類庫項目添加一個【安裝程序類】->Installer1

  第七、完成將我們自定義的安裝類接入到安裝過程:  
      1、將我們新建的類庫作為主輸出添加到安裝項目中,選擇【應用程序文件夾】,在中間空白部分右鍵選擇【添加項目輸出】將設置新建的類庫作為主輸出
      2、打開安裝項目的“自定義操作視圖”然后在相應(安裝、卸載和回滾等)的節點上“右鍵”添加自定義操作《選擇主輸出》。右鍵選擇【CustomActionData】
         /PassWord=[PASSWORD] /UserName=[USERNAME] /Server=[SERVER] /TargetDir="[TARGETDIR]\"
         (注:/targetdir="[TARGETDIR]\"傳遞安裝目錄的路徑、[PASSWORD]等這些是我們在用戶界面上設置的文本框的屬性)

  第八、再次完善新建的類庫,給其中添加方法
      1、重寫安裝函數public override void Install(System.Collections.IDictionary stateSaver)
      2、重寫卸載函數public override void Uninstall(IDictionary savedState)
      3、重寫安裝完成后函數 protected override void OnAfterInstall(IDictionary savedState)

  附加

  如果我們想在程序卸載的時候保留某些文件則需要配置這些文件的屬性如下即可:即:Permanent為true。在安裝的的過程中,在應用程序(不是安裝解決方案)有些圖片文件或者rpt文件也要放在安裝后的文件夾中那么就這樣設置將應用程序中的這些文件的一個屬性【復制到輸出目錄】屬性為:
     ”如果較新則復制”或者“始終復制”,同時在安裝項目中添加winfrom項目的“內容文件輸出”則在安裝包生成過程中自動復制文件到安裝包中。

附加2、卸載方法二:(推薦)
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-321FB077955
9}") '改為自己的ProductCode
End If
myProcess.Close()
End Sub
End Module

3.將控制臺程序BIN目錄的exe文件加入到打包程序文件中,在程序組創建uninst.exe的快捷
方式

附加3、可以再安裝類庫項目中再建立一個winform窗體程序,然后在安裝類中調用,因為我們在安裝項目中添加了一個文本框A其實目的就是更改config文件,那么這里再建立一個winform項目的話也可以實現同樣的效果,而且還可以進行更好看的界面

安裝包的版本升級,每次升級一定要設置Vesion這個屬性和ProductCode這個屬性,同時也要設置卸載圖標的那個屬性,否則當再次安裝的時候會提示你到控制面板中刪除,然后每次升級的時候版本號要比上個版本號要高,否則的話會提示你不能安裝,這種情況只能手動卸載掉電腦上的應用程序然后再進行安裝

<感謝斌斌資料的總結>

0
0
 
標簽:.NET 打包
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()