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

  • 2019 年 10 月 4 日
  • 筆記

  使用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:Windowsassembly看到目前電腦上安裝的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%assemblyGAC_MSILDevExpress.BonusSkins.v14.114.1.8.0__b88d1754d700e49a   9 copy %pathdev%DevExpress.BonusSkins.v14.1.dll %windir%assemblyGAC_MSILDevExpress.BonusSkins.v14.114.1.8.0__b88d1754d700e49a  10  11 gacutil -u "DevExpress.Data.v14.1"  12 mkdir %windir%assemblyGAC_MSILDevExpress.Data.v14.114.1.8.0__b88d1754d700e49a  13 copy %pathdev%DevExpress.Data.v14.1.dll %windir%assemblyGAC_MSILDevExpress.Data.v14.114.1.8.0__b88d1754d700e49a  14  15 gacutil -u "DevExpress.DataAccess.v14.1"  16 mkdir %windir%assemblyGAC_MSILDevExpress.DataAccess.v14.114.1.8.0__b88d1754d700e49a  17 copy %pathdev%DevExpress.DataAccess.v14.1.dll %windir%assemblyGAC_MSILDevExpress.DataAccess.v14.114.1.8.0__b88d1754d700e49a  18  19 gacutil -u "DevExpress.Images.v14.1"  20 mkdir %windir%assemblyGAC_MSILDevExpress.Images.v14.114.1.8.0__b88d1754d700e49a  21 copy %pathdev%DevExpress.Images.v14.1.dll %windir%assemblyGAC_MSILDevExpress.Images.v14.114.1.8.0__b88d1754d700e49a  22  23 gacutil -u "DevExpress.Printing.v14.1.Core"  24 mkdir %windir%assemblyGAC_MSILDevExpress.Printing.v14.1.Core14.1.8.0__b88d1754d700e49a  25 copy %pathdev%DevExpress.Printing.v14.1.Core.dll %windir%assemblyGAC_MSILDevExpress.Printing.v14.1.Core14.1.8.0__b88d1754d700e49a  26  27 gacutil -u "DevExpress.Utils.v14.1"  28 mkdir %windir%assemblyGAC_MSILDevExpress.Utils.v14.114.1.8.0__b88d1754d700e49a  29 copy %pathdev%DevExpress.Utils.v14.1.dll %windir%assemblyGAC_MSILDevExpress.Utils.v14.114.1.8.0__b88d1754d700e49a  30  31 gacutil -u "DevExpress.XtraBars.v14.1"  32 mkdir %windir%assemblyGAC_MSILDevExpress.XtraBars.v14.114.1.8.0__b88d1754d700e49a  33 copy %pathdev%DevExpress.XtraBars.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraBars.v14.114.1.8.0__b88d1754d700e49a  34  35 gacutil -u "DevExpress.XtraEditors.v14.1"  36 mkdir %windir%assemblyGAC_MSILDevExpress.XtraEditors.v14.114.1.8.0__b88d1754d700e49a  37 copy %pathdev%DevExpress.XtraEditors.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraEditors.v14.114.1.8.0__b88d1754d700e49a  38  39 gacutil -u "DevExpress.XtraGauges.v14.1.Core"  40 mkdir %windir%assemblyGAC_MSILDevExpress.XtraGauges.v14.1.Core14.1.8.0__b88d1754d700e49a  41 copy %pathdev%DevExpress.XtraGauges.v14.1.Core.dll %windir%assemblyGAC_MSILDevExpress.XtraGauges.v14.1.Core14.1.8.0__b88d1754d700e49a  42  43 gacutil -u "DevExpress.XtraGrid.v14.1"  44 mkdir %windir%assemblyGAC_MSILDevExpress.XtraGrid.v14.114.1.8.0__b88d1754d700e49a  45 copy %pathdev%DevExpress.XtraGrid.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraGrid.v14.114.1.8.0__b88d1754d700e49a  46  47 gacutil -u "DevExpress.XtraLayout.v14.1"  48 mkdir %windir%assemblyGAC_MSILDevExpress.XtraLayout.v14.114.1.8.0__b88d1754d700e49a  49 copy %pathdev%DevExpress.XtraLayout.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraLayout.v14.114.1.8.0__b88d1754d700e49a  50  51 gacutil -u "DevExpress.XtraNavBar.v14.1"  52 mkdir %windir%assemblyGAC_MSILDevExpress.XtraNavBar.v14.114.1.8.0__b88d1754d700e49a  53 copy %pathdev%DevExpress.XtraNavBar.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraNavBar.v14.114.1.8.0__b88d1754d700e49a  54  55 gacutil -u "DevExpress.XtraPrinting.v14.1"  56 mkdir %windir%assemblyGAC_MSILDevExpress.XtraPrinting.v14.114.1.8.0__b88d1754d700e49a  57 copy %pathdev%DevExpress.XtraPrinting.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraPrinting.v14.114.1.8.0__b88d1754d700e49a  58  59 gacutil -u "DevExpress.XtraReports.v14.1"  60 mkdir %windir%assemblyGAC_MSILDevExpress.XtraReports.v14.114.1.8.0__b88d1754d700e49a  61 copy %pathdev%DevExpress.XtraReports.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraReports.v14.114.1.8.0__b88d1754d700e49a  62  63 gacutil -u "DevExpress.XtraTreeList.v14.1"  64 mkdir %windir%assemblyGAC_MSILDevExpress.XtraTreeList.v14.114.1.8.0__b88d1754d700e49a  65 copy %pathdev%DevExpress.XtraTreeList.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraTreeList.v14.114.1.8.0__b88d1754d700e49a  66  67 gacutil -u "DevExpress.XtraVerticalGrid.v14.1"  68 mkdir %windir%assemblyGAC_MSILDevExpress.XtraVerticalGrid.v14.114.1.8.0__b88d1754d700e49a  69 copy %pathdev%DevExpress.XtraVerticalGrid.v14.1.dll %windir%assemblyGAC_MSILDevExpress.XtraVerticalGrid.v14.114.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%assemblyGAC_MSILDevExpress.BonusSkins.v14.114.1.8.0__b88d1754d700e49a:創建文件夾

copy %pathdev%DevExpress.BonusSkins.v14.1.dll %windir%assemblyGAC_MSILDevExpress.BonusSkins.v14.114.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:Windowsassembly,其中顯示了剛剛註冊的DevExpress的相關DLL

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

本篇完。