使用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脚本。内容如下:

 @echo off
color 1e
title 注册DevExpress控件 set "pathdev=%~dp0" gacutil -u "DevExpress.BonusSkins.v14.1"
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 gacutil -u "DevExpress.Data.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Data.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.Data.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Data.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.DataAccess.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.DataAccess.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.DataAccess.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.DataAccess.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.Images.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Images.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.Images.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Images.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.Printing.v14.1.Core"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Printing.v14.1.Core\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.Printing.v14.1.Core.dll %windir%\assembly\GAC_MSIL\DevExpress.Printing.v14.1.Core\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.Utils.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Utils.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.Utils.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Utils.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraBars.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraBars.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraBars.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraBars.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraEditors.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraEditors.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraEditors.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraEditors.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraGauges.v14.1.Core"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraGauges.v14.1.Core\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraGauges.v14.1.Core.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraGauges.v14.1.Core\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraGrid.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraGrid.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraGrid.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraGrid.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraLayout.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraLayout.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraLayout.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraLayout.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraNavBar.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraNavBar.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraNavBar.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraNavBar.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraPrinting.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraPrinting.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraPrinting.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraPrinting.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraReports.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraReports.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraReports.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraReports.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraTreeList.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraTreeList.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraTreeList.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraTreeList.v14.1\14.1.8.0__b88d1754d700e49a gacutil -u "DevExpress.XtraVerticalGrid.v14.1"
mkdir %windir%\assembly\GAC_MSIL\DevExpress.XtraVerticalGrid.v14.1\14.1.8.0__b88d1754d700e49a
copy %pathdev%DevExpress.XtraVerticalGrid.v14.1.dll %windir%\assembly\GAC_MSIL\DevExpress.XtraVerticalGrid.v14.1\14.1.8.0__b88d1754d700e49a 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中。

本篇完。

DevExpress控件库 开发使用经验总结3 制作项目安装包的更多相关文章

  1. DevExpress控件库 开发使用经验总结1 DevExpress简介、安装、使用

    2015-01-24 最近公司开发的WinForm客户端图书行业ERP管理系统,界面端采用了DevExpress控件库.界面效果非常绚丽,类似于Office2007.2010的界面风格. 其中的控件功 ...

  2. DevExpress控件库 开发使用经验总结2 DevExpress汉化之WinForm开发模式汉化

    2015-01-24 DevExpress控件库默认安装后,使用的本地资源为英文.Developer Express .NET产品都有本地化资源,比如按钮属性,控件属性描述,菜单项,确认和错误的信息等 ...

  3. Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目

    前言:因为这段时间要接触到DevExpress控件库,而我本身甚至对winform的控件都了解甚少,所以处在学习中,写下博客主要是为了方便后期的回顾,当然也可以给一些新人第一次接触时做为学习的参考,以 ...

  4. WPF Devexpress 控件库中ChartControl 实现股票分时走势图

    概要 从事金融行业开发 ,会接触些图表控件,这里我分享一下自己基于DevExpress.Charts.v16.2开发的股票分时走势图的经验. 附上源码:点击跳转 如果需要讨论,Q群:580749909 ...

  5. Winform DevExpress控件库(二) 使用SplashScreenManager控件定制程序加载页面

    SplashScreenManager控件:主要作用是显示在进行耗时操作时的等待界面: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下: 在工具 ...

  6. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...

  7. WPF Devexpress控件库中ChartControl--实现不等距x轴

    一.概要 解决问题--ChartControl不等距x轴显示 二.CS代码 用过ChartControl的开发者们应该都知道,ChartControl中设置x轴间距间隔都是固定的数值. 比如(间隔10 ...

  8. [转]C#开发ActiveX控件,.NET开发OCX控件案例

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...

  9. WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件

    在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项 ...

随机推荐

  1. ORCAL Merge into用法总结

    简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据. 有一个表T,有两个字段a.b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在 ...

  2. JavaScript千分符---正则实现

    一般在JavaScript中实现千分符,是使用切割+连接一顿操作 这里尝试一下使用正则快速实现千分符 let num0 = '12' let num1 = '123' let num2 = '1234 ...

  3. Project 的ProjectTypeGuids和Solution的Project节点说明

    https://www.cnblogs.com/jackking/p/6220085.html ProjectTypeGuids和Project 节点说明 <ProjectGuid>{BE ...

  4. jmeter+maven+jenkins自动化接口测试(下)

    maven+jmeter已经写好了,可以通过maven来执行jmeter的接口测试脚本,怎样实现定时执行测试并发送报告邮件就需要通过jenkins了(jmeter或者testng也可以结合不同的邮件j ...

  5. (模拟 打好基础)nyoj1363-计划日

    1363-计划日 内存限制:256MB 时间限制:3000ms 特判: No通过数:21 提交数:79 难度:1 题目描述: 为什么花那么多时间.精力还是学不好学不通,如何把握各科目的重难点,期中和期 ...

  6. mysql 严格模式 Strict Mode说明(text 字段不能加默认或者 不能加null值得修改方法)

    mysql 严格模式 Strict Mode说明 1.开启与关闭Strict Mode方法找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入ST ...

  7. 2017-12-19python全栈9期第四天第二节之列表的增删查改之元祖是只读列表、可循环查询、可切片、儿子不能改、孙子可以改

    #!/user/bin/python# -*- coding:utf-8 -*-tu = ('zs','ls','ww',[1,2,3,4,5,'zxcvb'],'zl')print(tu[3])pr ...

  8. guns初级使用

    1.下载guns gitee地址:https://gitee.com/stylefeng/guns 这里使用的是Guns v5.1 2.配置环境 2.1 导入项目 解压从gitee上下载的guns源码 ...

  9. python3 练手实例3 摄氏温度与华氏温度转换

    def wd(): w=input('请输入一个摄氏温度或者一个华氏温度,如,34c/C or 34f/F:') if w[-1] in ['c','C']: w=float(w[:-1]) hs=1 ...

  10. 浅入深出Vue系列

    浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...