天天看點

C#程式打包

1 建立安裝部署項目

打開VS,點選建立項目,選擇:其他項目類型->安裝與部署->安裝向導(安裝項目也一樣),然後點選确定。

2 安裝向導

關閉後打開安裝向導,點選下一步,或者直接點選完成。

3 開始制作

安裝向導完成後即可進入項目檔案夾:

輕按兩下"應用程式檔案夾"在右邊的空白處右擊,選擇添加->檔案,将你的做的應用程式的可執行檔案和相應的類庫群組件添加進來。然後右擊你的檔案,建立快捷方式,然後把快捷方式分别複制或剪切到左邊的"使用者的'程式'菜單"和"使用者桌面"中。這樣安裝程式安裝完成後會在 "開始->所有程式"和"桌面"上生成程式的快捷方式。也可以直接在"使用者的'程式'菜單"和"使用者桌面"相應目錄下建立快捷方式,然後定位到你的檔案。

然後右擊左邊的"應用程式檔案夾"打開屬性對話框:将屬性中的"DefaultLocation"的路徑中的"[Manufacturer]"去掉,不然的話做好的安裝程式預設安裝目錄會是"C:\Program Files\你的使用者名\安裝解決方案名稱";

然後打開解決方案管理器,右擊你的解決方案名稱,選擇屬性:打開的屬性頁中,選擇"系統必備", 在打開的系統必備頁中,在"指定系統必備安裝元件的位置"中選中如下選擇項:從與我的應用程式相同的位置下載下傳系統必備元件。選上以後,在生成的安裝檔案包中包含.NetFramework元件 。好了,這樣就完成99%了,然後點選"生成->生成解決方案",哈,生成成功!

4 制作完成

現在打開解決方案檔案夾下的Debug檔案夾,就可以看到生成的安裝檔案了。

5 關于"解除安裝"功能的添加

上面隻介紹了簡單的生成安裝的方法,但是在VS2005下并沒有直接生成解除安裝程式的功能,是以我們隻好用msi來實作了,操作方法如下:

在添加你的應用程式項目的時候,多添加一個msiexec.exe進去,這個檔案在c:\windows\system32檔案夾下,添加進去以後,為了讓他更像個解除安裝程式,把他的名字改成"Uninstall.exe",當然這個關系不大,改不改都行。

然後建立一個快捷方式,放到"開始-程式"中,接下來我們要做的就是查找這個部署項目的ProductCode了,滑鼠左鍵單擊項目名稱,記住是左鍵單擊,然後點選屬性标簽,注意:不是右擊的屬性,這個差別很大,這時你就可以看到ProductCode了。

然後打開你建立的那個快捷方式的屬性對話框,在Aguements屬性中輸入"/x {ProductCode}",好了,然後點選"生成解決方案"即可生成帶有解除安裝功能的安裝程式了。

一).建立部署項目

1. 在“檔案”菜單上指向“添加項目”,然後選擇“建立項目”。

2. 在“添加新項目”對話框中,選擇“項目類型”窗格中的“安裝和部署項目”,然後選擇“模闆”窗格中的“安裝項目”。在“名稱”框中鍵入 setup1。

3. 單擊“确定”關閉對話框。

4. 項目被添加到解決方案資料總管中,并且檔案系統編輯器打開。

5. 在“屬性”視窗中,選擇 ProductName 屬性,并鍵入 資訊管理系統 。

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

1. 在“檔案系統編輯器”中,選擇“應用程式檔案夾”。在“操作”菜單上,指向“添加”,然後選擇“項目輸出”。

2. 在“添加項目輸出組”對話框中,選擇“項目”下拉清單中的“你的程式”。

4. 從清單中選擇“主輸出”和“内容檔案”組,然後單擊“确定”。

三).建立安裝程式類

1. 在“檔案”菜單上指向“建立”,然後選擇“項目”。

2. 在“建立項目”對話框中,選擇“項目類型”窗格中的“C# 項目”,然後選擇“模闆”窗格中的“類庫”。在“名稱”框中鍵入 installDB。

3. 單擊“打開”關閉對話框。

4. 從“項目”菜單中選擇“添加新項”。

5. 在“添加新項”對話框中選擇“安裝程式類”。在“名稱”框中鍵入 installDB。

6. 單擊“确定”關閉對話框。

7. 詳細代碼附後。

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

1. 在解決方案資料總管中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然後選擇“使用者界面”。

2. 在使用者界面編輯器中,選擇“安裝”下的“啟動”節點。在“操作”菜單上,選擇“添加對話框”。

3. 在“添加對話框”對話框中,選擇“許可協定”對話框,然後單擊“确定”關閉對話框。

4. 在“添加對話框”對話框中,選擇“文本框 (A)”對話框,然後單擊“确定”關閉對話框。

5. 在“操作”菜單上,選擇“上移”。重複此步驟,直到“文本框 (A)”對話框位于“安裝檔案夾”節點之上。

6. 在“屬性”視窗中,選擇 BannerText 屬性并鍵入:安裝資料庫.

7. 選擇 BodyText 屬性并鍵入:安裝程式将在目标機器上安裝資料庫

8. 選擇 Edit1Label 屬性并鍵入:伺服器名:

9. 選擇 Edit1Property 屬性并鍵入 server

10. 選擇 Edit1Value 屬性并鍵入:(local)

11. 選擇 Edit2Label 屬性并鍵入:伺服器名:

12. 選擇 Edit2Property 屬性并鍵入 UID

13. 選擇 Edit2Value 屬性并鍵入:sa

14. 選擇 Edit3Label 屬性并鍵入:密碼:

15. 選擇 Edit3Value 屬性并鍵入:

16. 選擇 Edit3Property 屬性并鍵入 PWD

17. 選擇 Edit4Value 屬性并鍵入:資料庫名字:

18. 選擇 Edit4Property 屬性并鍵入 DBNAME

19. 選擇 Edit2Visible、Edit3Visible Edit4Visible屬性,并将它們設定為 true

五).建立自定義操作

1. 在解決方案資料總管中選擇“setup1”項目。在“視圖”菜單上指向“編輯器”,然後選擇“自定義操作”。

2. 在自定義操作編輯器中選擇“安裝”節點。在“操作”菜單上,選擇“添加自定義操作”。

3. 在“選擇項目中的項”對話框中,輕按兩下“應用程式檔案夾”。

4. 選擇“主輸出來自 installDB(活動)”項,然後單擊“确定”關閉對話框。

5. 在“屬性”視窗中,選擇 CustomActionData 屬性并鍵入“/server=[server] /uid=[UID] /pwd=[PWD] /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檔案

if(System.Environment.OSVersion.ToString().IndexOf("NT 5")>0)

{

    Process.Start("msiexec", "/X{492472A2-C9BA-46A3-9DB4-2FA098AD1D07}");//改為自己的ProductCode

}

3.将控制台程式BIN目錄的exe檔案加入到打包程式檔案中,在程式組建立uninst.exe的快捷方式

繼續閱讀