C# 制作安装包
1、創(chuàng)建安裝程序
打開VS2008,新建->Project,選擇Other Project Deployment->Setup and Deployment,選擇SetupProject模板。取名SetupTest。
創(chuàng)建項目之后一個什么都沒有的安裝包就做好了。安裝包一般會在Program Files創(chuàng)建一個安裝文件,然后在文件夾中放一些文件。
右鍵點擊SetupTest,點擊菜單View->File System,在File System視圖中,可以看到三個文件,一個是Application Folder,User’s Destop, User’s Programs Menu。Application Folder文件夾中的內容會輸出到Program Files下的安裝目錄下。所以我們可以往這個文件夾中添加內容。右鍵點擊Application Folder,點擊Add->File菜單,就可以添加文件到這個文件夾中。當然安裝程序一般安裝的是可執(zhí)行程序。
在同一個項目中,我們新建一個winform項目取名WinformTest。編譯WinformTest項目。
右鍵點擊Application Folder,點擊Add->Project Output…,在彈出的對話框中,選擇WinformTest項目,在列表中選擇Primary output。點擊Ok,這樣我們就會把WinformTest.ext添加到Application Folder文件中。
安裝程序一般還會在桌面和啟動菜單中添加快捷方式,我們可以在Application Folder中,右鍵選擇Prmary output from WinformTest(Active),創(chuàng)建一個快捷方式,然后把快捷方式,復制到User’s Desktop和User’s Programs Menu中去。好現(xiàn)在安裝程序可以安裝了。如果在安裝目錄中已經(jīng)存在相同的文件,則安裝程序不會進行覆蓋。
2、一些基本的配置
點擊SetupTest項目,然后打開屬性面板(和通過右鍵,然后點擊屬性菜單是不同的)。有很多屬性可以配置,比如ProductName(產(chǎn)品的名稱),Subject(主題),Title等,設置這些屬性,在安裝的時候就可以看到一些自己設定的名稱。
那安裝路徑如何確定的呢?
還是視圖->文件系統(tǒng),選擇Application Folder,然后打開屬性面板,在DefaultLocation配置項中就是配置安裝路徑的。可以對這個目錄進行修改,這是默認的目錄。
3、自定義動作
在上面的那個項目中添加一個類庫,取名Install,添加一個Installer Class。這個累中就可以添加一些自己的代碼。我們可以重寫Install方法
public override void Install(IDictionary stateSaver)
這個方法會在文件復制后,也就是Application Folder中的文件復制到安裝目錄后執(zhí)行。
我們也可以重寫Uninstall方法
public override void Uninstall(IDictionary savedState)
Unistall方法會在安裝目錄下文件被刪除前執(zhí)行。如何你在Install復制了一些目錄到其他文件夾中,卸載時這么文件是不會刪除的,那么就可以通過Unistall方法來刪除。
關聯(lián)Install類到SetupTest裝項目中
編譯Install項目,在SetupTest->View->File System視圖中,點擊Application Folder,安裝上面的步驟把Install的項目主輸出添加到Application Folder中。
右鍵點擊SetupTest->Add->Custom Actions,我們可以看到四個文件夾Install(安裝時執(zhí)行的自定義動作),….,Unistall(卸載時執(zhí)行的自定義動作)。
右鍵點擊Install文件夾,點擊Add Custom Action菜單,在彈出的對話框中,選擇Application Folder,然后選擇Install項目的主輸出。這樣當執(zhí)行安裝程序是就會執(zhí)行Install方法中代碼。同理如果想執(zhí)行Uninstall方法,那就把Install項目主輸出添加到Uninstall文件夾中。
當我們在Install和Uninstall方法中些代碼時,想獲得一些參數(shù),比如安裝文件的路徑。
在自定義動作的Install文件下,點擊Primary output from Install(Install的項目主輸出),打開屬性面板,可以看到一個CustomActionData配置項,可以在這個配置項中傳遞參數(shù),并可以在Install方法中獲取。比如傳遞安裝目錄,那在CustomActionData添加/tardir="[TARGETDIR]/"文字,也可以同時傳遞安裝程序目錄(也就是SetupTest.exe文件的路徑) /sourcedir="[SOURCEDIR]/" /tardir="[TARGETDIR]/",注意兩個參數(shù)之間是有空格的,而且后面比如帶/符號,前面必須帶/符號。其實TARGETDIR,就是目錄路徑選擇框的名稱。當我們自己創(chuàng)建一個對話框時,會有很多輸入框,每個輸入框都有名字,我們也可以可以通過這種方式把用戶輸入的數(shù)據(jù)傳遞過去。
在Install方法中獲取參數(shù)
m_Targetdir = this.Context.Parameters["tardir"].ToString();
?
4、調試
想進行調試需要把Install項目的調試符號添加到Application Folder文件夾中。
安裝項目也是可以進行調試的,當然SetupTest是不需要調試的,因為它只是復制文件,如果想看到SetupTest包含了哪些文件,可以通過右鍵點擊SetupTest,點擊屬性菜單。在Package files下拉框中選As? loose uncompressed files,點擊確定,然后編譯SetupTest項目,在輸出目錄中可以看到需要的文件。那我們主要是調試Installer類中的方法,比如Install方法。如果想調試Install方法,可以在Install方法的第一行的代碼出寫
MessageBox.Show(“debug”);
這句代碼會彈出一個對話框。安裝程序在執(zhí)行到這句代碼時會彈出一個對話框,這時我們回到Visual Studio,點擊debug->Attach a Process…,選中Show processes from all users和Show processes in all sessions顯示所有的進行,在進程列表中我們可以看到多個msiexec.exe進程,找到MessageBox所在的進行,然后點擊附加,這樣就可以進行調試了。
總結
- 上一篇: Remoting实例(同为客户端服务端)
- 下一篇: C语言的应用范围和发展前途简介