DevExpress 開發經驗總結3 制作項目安裝包


  使用DevExpress控件包開發C/S項目完成后,部署前需要制作本地安裝包。本文還是使用“SetupFactory”安裝工廠來制作安裝包。在以前的系列文章中詳細介紹過該工具的使用,請參考http://www.cnblogs.com/SavionZhang/p/4106338.html

  實際情景:SetupFactory V9.0.3、DevExpress14.1.8、依賴程序.Net Framework 4.0。

由於項目中引用了很多DevExpress控件庫中的DLL

 紅色框內是項目的實際引用DLL。由於其特殊性,打包的時候不能簡單的將其拷貝到安裝包目錄下,需要將它們注冊到Global Assembly Cach(全局程序集緩存),在電腦的系統盤如:C:\Windows\assembly\看到目前計算機上安裝的GAC。

 

  注冊DLL到GAC有兩種辦法:一種是把DLL拖入windows/assembly目錄下(不是復制粘貼,是拖動);另外一種是使用gacutil.exe工具。在客戶端安裝的時候不能讓用戶自己去拖住,主要問題的客戶也不可能懂得我們程序世界的問題。所以使用gacutil.exe工具。

  (1)到網上下載gacutil.exe工具;

  (2)書寫.bat腳本。內容如下:

 1 @echo off
 2 color 1e
 3 title 注冊DevExpress控件
 4 
 5 set "pathdev=%~dp0"
 6 
 7 gacutil -u "DevExpress.BonusSkins.v14.1"
 8 mkdir %windir%\assembly\GAC_MSIL\DevExpress.BonusSkins.v14.1\14.1.8.0__b88d1754d700e49a
 9 copy %pathdev%DevExpress.BonusSkins.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.BonusSkins.v14.1\14.1.8.0__b88d1754d700e49a
10 
11 gacutil -u "DevExpress.Data.v14.1"
12 mkdir %windir%\assembly\GAC_MSIL\DevExpress.Data.v14.1\14.1.8.0__b88d1754d700e49a
13 copy %pathdev%DevExpress.Data.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Data.v14.1\14.1.8.0__b88d1754d700e49a
14 
15 gacutil -u "DevExpress.DataAccess.v14.1"
16 mkdir %windir%\assembly\GAC_MSIL\DevExpress.DataAccess.v14.1\14.1.8.0__b88d1754d700e49a
17 copy %pathdev%DevExpress.DataAccess.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.DataAccess.v14.1\14.1.8.0__b88d1754d700e49a
18 
19 gacutil -u "DevExpress.Images.v14.1"
20 mkdir %windir%\assembly\GAC_MSIL\DevExpress.Images.v14.1\14.1.8.0__b88d1754d700e49a
21 copy %pathdev%DevExpress.Images.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Images.v14.1\14.1.8.0__b88d1754d700e49a
22 
23 gacutil -u "DevExpress.Printing.v14.1.Core"
24 mkdir %windir%\assembly\GAC_MSIL\DevExpress.Printing.v14.1.Core\14.1.8.0__b88d1754d700e49a
25 copy %pathdev%DevExpress.Printing.v14.1.Core.dll %windir%\assembly\GAC_MSIL\DevExpress.Printing.v14.1.Core\14.1.8.0__b88d1754d700e49a
26 
27 gacutil -u "DevExpress.Utils.v14.1"
28 mkdir %windir%\assembly\GAC_MSIL\DevExpress.Utils.v14.1\14.1.8.0__b88d1754d700e49a
29 copy %pathdev%DevExpress.Utils.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Utils.v14.1\14.1.8.0__b88d1754d700e49a
30 
31 gacutil -u "DevExpress.XtraBars.v14.1"
32 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraBars.v14.1\14.1.8.0__b88d1754d700e49a
33 copy %pathdev%DevExpress.XtraBars.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraBars.v14.1\14.1.8.0__b88d1754d700e49a
34 
35 gacutil -u "DevExpress.XtraEditors.v14.1"
36 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraEditors.v14.1\14.1.8.0__b88d1754d700e49a
37 copy %pathdev%DevExpress.XtraEditors.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraEditors.v14.1\14.1.8.0__b88d1754d700e49a
38 
39 gacutil -u "DevExpress.XtraGauges.v14.1.Core"
40 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraGauges.v14.1.Core\14.1.8.0__b88d1754d700e49a
41 copy %pathdev%DevExpress.XtraGauges.v14.1.Core.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraGauges.v14.1.Core\14.1.8.0__b88d1754d700e49a
42 
43 gacutil -u "DevExpress.XtraGrid.v14.1"
44 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraGrid.v14.1\14.1.8.0__b88d1754d700e49a
45 copy %pathdev%DevExpress.XtraGrid.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraGrid.v14.1\14.1.8.0__b88d1754d700e49a
46 
47 gacutil -u "DevExpress.XtraLayout.v14.1"
48 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraLayout.v14.1\14.1.8.0__b88d1754d700e49a
49 copy %pathdev%DevExpress.XtraLayout.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraLayout.v14.1\14.1.8.0__b88d1754d700e49a
50 
51 gacutil -u "DevExpress.XtraNavBar.v14.1"
52 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraNavBar.v14.1\14.1.8.0__b88d1754d700e49a
53 copy %pathdev%DevExpress.XtraNavBar.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraNavBar.v14.1\14.1.8.0__b88d1754d700e49a
54 
55 gacutil -u "DevExpress.XtraPrinting.v14.1"
56 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraPrinting.v14.1\14.1.8.0__b88d1754d700e49a
57 copy %pathdev%DevExpress.XtraPrinting.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraPrinting.v14.1\14.1.8.0__b88d1754d700e49a
58 
59 gacutil -u "DevExpress.XtraReports.v14.1"
60 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraReports.v14.1\14.1.8.0__b88d1754d700e49a
61 copy %pathdev%DevExpress.XtraReports.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraReports.v14.1\14.1.8.0__b88d1754d700e49a
62 
63 gacutil -u "DevExpress.XtraTreeList.v14.1"
64 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraTreeList.v14.1\14.1.8.0__b88d1754d700e49a
65 copy %pathdev%DevExpress.XtraTreeList.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraTreeList.v14.1\14.1.8.0__b88d1754d700e49a
66 
67 gacutil -u "DevExpress.XtraVerticalGrid.v14.1"
68 mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraVerticalGrid.v14.1\14.1.8.0__b88d1754d700e49a
69 copy %pathdev%DevExpress.XtraVerticalGrid.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraVerticalGrid.v14.1\14.1.8.0__b88d1754d700e49a
70 
71 echo '注冊完畢!'

腳本代碼說明:color 1e  :設置Dos運行窗口的背景色,無關緊要,不設置也可以。

                    title 注冊DEV控件:設置Dos運行窗口的標題內容。

                    set "pathdev=%~dp0" :設置一個變量,存儲安裝時用戶選擇的安裝目錄。

                gacutil -u "DevExpress.BonusSkins.v14.1":取消注冊dll。

                    mkdir  %windir%\assembly\GAC_MSIL\DevExpress.BonusSkins.v14.1\14.1.8.0__b88d1754d700e49a:創建文件夾

                    copy %pathdev%DevExpress.BonusSkins.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.BonusSkins.v14.1\14.1.8.0__b88d1754d700e49a

                    :復制文件到新生成的文件夾中。

上面共有16段相同的腳本,每一段注冊不同的dll。如果還需要其他的DLL,做法與上面一樣,拷貝一段,修改相關名稱即可。

  

  (3)制作安裝包(省略前面步驟)添加初始文件

    相關文件加載、設置完成后,最后的關鍵步驟是

點擊【資源】菜單》【初始文件】,彈出“資源”窗口,在“初始文件”選項卡中,添加以下文件:

“gacutil.exe”、“RegisterDevExpress14.1.8.bat”、以及程序中引用的DevExpress的相關DLL。如下圖:

 

雙擊任何一個DLL,查看其屬性,選中“當安裝程序退出時刪除”選項。這樣設置是:當安裝程序運行完成后(已經注冊了DevExpress的相關DLL),SetUpFactory工具會自動刪除這些DLL,在客戶端的安裝目錄中就不會存在這些DLL,目錄相對干凈,程序運行時會依賴GAC中注冊的DLL而不會出錯。

 

  (4)制作安裝包,添加輔助運行屏幕。

點擊【屏幕】菜單》【安裝之后】按鈕,彈出屏幕窗口。點擊下方的【添加】按鈕,添加一個“靜態文本”類型的屏幕。

選中並點擊屏幕下方的“向上箭頭” 將其移動到最頂端(結束屏幕之前)。

雙擊該屏幕,設置其相關屬性

 在“操作”選項卡,“On Next”下一步選項卡中添加以下代碼

-- 運行腳本,注冊DevExpress相關控件。
Shell.Execute(SessionVar.Expand("%TempLaunchFolder%\\RegisterDevExpress14.1.8.bat"), "open", "", "", SW_SHOWNORMAL, true);

該段代碼要設置在Screen.Next(); 方法之前。這樣當點擊下一步按鈕的時候,先運行注冊腳本,運行完成后才真正進入到下一步安裝界面。

點擊“確定”按鈕,設置完成后,點擊"構建"按鈕,開始創建安裝包。

 

制作完成后,將安裝包拷貝到其他電腦上安裝測試。

點擊“下一步”,…………,最后出現“注冊Assembly屏幕”

點擊“下一步”按鈕,開始執行腳本文件,注冊DLL

注冊成功。

 

點擊“完成”按鈕安裝完成。桌面上生成程序快捷方式,如下圖:

雙擊程序快捷方式,運行程序,顯示效果如下圖:

程序運行正常。打開C:\Windows\assembly,其中顯示了剛剛注冊的DevExpress的相關DLL

再到安裝目錄下查看,其中沒有發現DevExpress的相關DLL。而上圖中程序運行正常,說明程序依賴的DevExpress的相關DLL在GAC中。

本篇完。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM