• 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: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中。

    本篇完。

  • 相关阅读:
    javascript wgs84与ecef与enu坐标转换
    istioctl 部署 istio
    redis学习之初体验redis
    zabbix server 4.0 lts 升级php7.4
    python实现csv格式文件转为asc格式文件的方法
    静默安装参数
    flask 根据数据库生成model
    pycharm中在虚拟环境中安装依赖包
    Jenkins的流水线(Pipeline)
    Jenkins集成Kubernetes集群
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/4253509.html
Copyright © 2020-2023  润新知