文章目錄
- 檔案系統:
- 註冊表:
- 自訂動作:
- 卸載:
- 安裝程式類:
- 幾個特殊點:
1.使用VS 內建的打包工具,製作winform安裝項目
開發環境:VS 2008 Access
作業系統:Windows XP
開發語言:C#
步驟:第一步:開啟開發環境VS2008,建立項目,選擇其他項目類型,再選擇"安裝項目",輸入名稱及選擇安裝路徑;
第二步:進入檔案系統選項卡,選擇應用程式檔案夾,在中間的空白地區右鍵選擇"添加檔案",添加專案檔(exe,dll);
第三步:添加項目所需檔案;這裡有兩個檔案夾需要注意(DataBase和Report),因為DataBase是儲存項目資料庫,而Report則是儲存項目所需的報表檔案.rpt,因此呢,在應用程式夾中也需要建同名的檔案夾,並且添加所需的檔案。
效果:
第四步:為了在開始程式菜單中和傳統型應用程式中看到安裝程式,這裡我們就需要為項目建立捷徑。
右鍵選擇可執行檔(PersonFinance.exe),建立捷徑,進行重新命名"**公司**管理系統",將該捷徑拖放到 '使用者的"程式"菜單' 中。重複該步驟將建立的捷徑添加到 "使用者案頭" 檔案夾中
最好在使用者菜單中建立一個檔案夾,存放安裝程式
第五步:設定系統必備,右鍵選擇安裝項目,進入屬性頁面中,單擊"系統必備"按鈕,進入系統必備對話方塊;
勾選"建立用於安裝系統必備組件的安裝程式",在安裝系統必備組件列表中,選擇
1)、Windows Installer 3.1(必選)
2)、.NET Framework 3.5 (可選)參考最後說明
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”)
解決方案:
第一種:都不處理
第二種:第一類警告,可以編寫卸載程式
第二種警告:刪除相同的檔案
安裝項目製作完畢.
注意:
1、.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。
分別對應於自訂動作中的四個檔案夾:安裝、提交、復原、卸載。
資料庫安裝:1、 附加資料庫
2、 執行建立資料庫的Sql語句
3、 完全備份的資料庫檔案還原
可以將能產生資料庫的的檔案(分離的資料庫檔案、Sql指令檔或完全備份檔案)部署到應用程式檔案夾下,然後在重載的Install方法裡加入產生資料庫代碼(注意:產生資料庫的代碼應該在調用基類的Install方法後)。
資料庫的卸載:首先刪除資料庫,再調用基類的Uninstall方法刪除應用程式檔案夾裡的檔案(順序不能亂)。 幾個特殊點:1、 檔案系統中的AlawaysCreate屬性:本屬性可以指定為False,然後Condition屬性為空白時相當於AlawaysCreate屬性為True(Transitive屬性必須為True才計算Condition屬性的值)。Condition 屬性可用於向安裝程式添加條件邏輯,例如,僅為特定的作業系統版本安裝某個檔案。它還可以與檔案搜尋、註冊表搜尋或組件搜尋一起使用,以在找不到指定項時使安裝過程終止。可以是 Windows Installer 條件或屬性,Property 屬性中包含的值,檔案、註冊表或組件搜尋中的 Name 屬性,也可以是使用邏輯運算子的上述語句的組合。
2、 建立捷徑(在程式中建立,可以有作為附加任務,根據使用者的選擇情況,有選擇的建立):
添加引用:COM 選項卡並選擇 Windows Script Host Object Model
建立對象:建立一個 WshShell 的執行個體對象,接著通過該對象的 CreateShortcut 方法來建立 IWshShortcut 介面的執行個體對象,傳遞給 CreateShortcut 方法的參數是將要建立的捷徑的完整路徑(包括該捷徑的名字)。
設定屬性:TargetPath、WorkingDirectory、WindowStyle、Description、IconLocation
產生捷徑:調用 IWshShortcut.Save 方法產生捷徑檔案。 以上引用自園友,粘貼拼接而成,望見諒!