DevExpress控件库 开发使用经验总结3 制作项目安装包

2015-01-27

  使用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中。

本篇完。

时间: 2024-10-24 16:44:07

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

Devexpress控件库----ComboBoxEdit,MRUEdit,SearchContrl控件对比

准备列表数据: public List<string> GetList() { List<string> list = new List<string>() { "Janurary","February", "March" ,"April ","May","June","July","August" , &quo

DevExpress控件库----FlyoutPanel提示控件

第一步:拖一个FlyoutPanel控件到WinForm窗体上.名称为 flyoutPanel1 设置在什么控件上显示提示信息: 设置在 panelControl1控件上显示提示信息 flyoutPanel1.OwnerControl = panelControl1; 在鼠标移入panelControl1上时 显示提示信息: private void panelControl1_MouseEnter(object sender, EventArgs e) { flyoutPanel1.ShowB

DevExpress控件库---TokenEdit控件使用

用到的基础数据: public class Product { public int Id { get; set; } public string Model { get; set; } public string Name { get; set; } } public class Entility { private static string GetChar(int number) { string[] array = new string[] { "A","B"

DevExpress 控件使用笔记 - Common Controls

这段时间一直在研究DevExpress控件库,本文是我对DevExpress工具箱中分类"DX.13.1: Common Controls"下控件的使用笔记.这个类型的控件都在DevExpress.XtraEditors.v13.1.dll中定义. 分类"DX.13.1: Common Controls"下控件列表如下: 针对以上控件,我选了一些做了笔记,内容如下: 1)ColorPickEdit,颜色选择控件,类似VS中控件属性管理器中的颜色选择工具,包括自定义.

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

引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么作用?在网页中又如何使用OCX控件,如QQ邮箱的大文件上传应该就是使用OCX控件的,下面开始吧. 0. 前言 ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中.使用ActiveX插件,可以轻松方便的在 Web页中插入多媒体效果.交互

(四)开源C# WPF控件库《AduSkin – UI》

微信公众号:[Dotnet9的博客],网站:[Dotnet9],问题或建议:[请网站留言], 如果对您有所帮助:[欢迎赞赏]. (四)开源C# WPF控件库<AduSkin> 追求极致,永臻完美 A Beautiful WPF Control UI 一款简单漂亮的WPF UI,融合部分开源框架的组件,为个人定制的UI,可供学者参考. 阅读导航 关于<AduSkin> 1.1 控件库全貌 1.2 动态修改主题色 1.3 技术交流 基于<AduSkin>控件库衍生的Case

[WPF]是时候将WPF控件库从.Net Framework升级到.NET Core 3.1

1. 升级到Core的好处 去年中我曾考虑将我的控件库项目Kino.Toolkit.Wpf升级到.NET Core,不过很快放弃了,因为当时.NET Core是预览版,编译WPF还需要使用最新的Visual Studio 2019,这样作为一个教学项目不够友好.到了今天.NET Core 3.1都出来了,已经正式支持WPF和Winform,Visual Studio 2019也已经普及,我觉得应该是时候将我的控件库升级到.NET Core.那么现在是WPF正式迁移到.NET Core的好时机吗?

DevExpress控件使用经验总结

DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一些小的经验总结.总体来讲,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果.本文主要通过给出相应的例子以及相关界面效果来说明问题,希望大家能够从中获得好的知识和思路. 1. 应用Office2007和Office2010的界面主题 开始使用DevExpress的时候,发现程序界

(C/C++)基于SharpUI控件库的插件式框架开发--第一篇简介

看到题目,很明显这里要说的是插件式框架的开发,当然是用c/c++来实现的.开发对于我来说,是一种爱好,但并非科班出身,所以这里要说的一点分享就是,开发并不是会写代码就行了,最主要的是要有思路想法,比如要实现一个功能,就要知道,这个功能到底是要来实现啥的,要实现它需要什么样的算法等等,做到胸中有丘壑,再去用最简单代码去实现它,就会发现写代码是一件很享受的事情. 参加工作快两年了,一开始的是用C#开发,写了半年多的功能和小控件,上手之后,参考ICSharpCode.Core.Presentation