如何在安装过程中部署DevExpress控件

在我的Winform开发框架或者WCF开发框架中,均提供多种界面样式选择,其中有一种就是界面效果比较好的DevExpress控件界面样式,但是我们一般在开发环境中使用,安装包的大小都很大,100多M,那么我们在部署到客户端应用的时候,该如何操作呢?

我们分析DevExpress的特殊补丁发现,他们是一个DOS批处理文件,主要是创建相应的目录,然后把DevExpress的三个特殊文件复制到对应的目录中,就可以实现DevExpress的正常使用了。那个DOS批处理文件内容如下所示。

一般我们部署客户端应用的时候,都会制作一个安装包,我们只需要自定义安装操作中正确执行这些DOS命令即可。

但是,在实际安装过程中,由于执行Register.bat文件的时候,gacutil.exe会以System目录作为起始目录,那么就会导致以上操作失败,找不到对应的目录,因为默认System目录下面没有gacUtil的文件,更没有要拷贝的DevExpress.Data.v11.1.dll等三个dll文件。那么我们应该如何操作才能正确执行DOS命令,完成顺利部署DevExpress的几个特殊的dll文件呢?

1、首先我们创建一个安装工程,并添加以上的特殊注册文件到安装包中,然后修改Register.bat文件的内容,增加一个路径变量"{INSTALL_PATH}",该路径变量会在安装的时候被替换为具体的路径名称。修改后的文件如下所示。

@echo off

set path="{INSTALL_PATH}"

gacutil -u "{INSTALL_PATH}\DevExpress.Data.v11.1"mkdir %windir%\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49acopy "{INSTALL_PATH}\DevExpress.Data.v11.1.dll" %windir%\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49a

gacutil -u "{INSTALL_PATH}\DevExpress.Utils.v11.1"mkdir %windir%\assembly\GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49acopy "{INSTALL_PATH}\DevExpress.Utils.v11.1.dll" %windir%\assembly\GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49a

gacutil -u "{INSTALL_PATH}\DevExpress.CodeRush.Common"mkdir %windir%\assembly\GAC_MSIL\DevExpress.CodeRush.Common\11.1.6.0__35c9f04b7764aa3dcopy "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" %windir%\assembly\GAC_MSIL\DevExpress.CodeRush.Common\11.1.6.0__35c9f04b7764aa3dREM copy "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "C:\Program Files\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll"if "[%ProgramFiles(x86)%]" == "[]" (copy "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "%ProgramFiles%\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll") else (copy "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "%ProgramFiles(x86)%\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll")

echo 'OK'pause

2、创建一个安装包后,并增加一个自定义安装项目,命名为InstallerAction项目,然后创建一个“安装程序类”,如下所示

项目工程如下:

3)然后我们修改“安装程序类”的代码,覆盖Install函数,主要是用来替换Register.bat批处理文件的路径变量"{INSTALL_PATH}",如下代码所示

    [RunInstaller(true)]public partial class InstallAction : Installer
{public InstallAction()
{
InitializeComponent();
}

public override void Install(IDictionary stateSaver)
{base.Install(stateSaver);

try
{string physicalRoot = this.Context.Parameters["targetdir"]; // 安装物理路径

try
{//由于执行Register.bat文件的时候,gacutil.exe会以System目录作为起始目录,//因此在Bat文件中设置一个参数,安装的时候替换为具体的目录                    string Register = Path.Combine(physicalRoot, "Register.bat");
ReplaceName(Register, "{INSTALL_PATH}", physicalRoot);
}catch { }

string registerFile = Path.Combine(physicalRoot, "Register.bat");
RunDos(registerFile, "", false);
}catch (Exception ex)
{
WriteLog(ex.ToString());
}
}

/// <summary>/// 在运行脚本之前把脚本中的指定名称替换成新的名词/// </summary>/// <param name="filePath">脚本文件名</param>/// <param name="oldDBName">原有的名称</param>/// <param name="newDBName">新的名称</param>        private void ReplaceName(string filePath, string oldName, string newName)
{if (newName.CompareTo(oldName) != 0)
{string fileText = string.Empty;using (StreamReader streamReader = new StreamReader(filePath, Encoding.Default))
{
fileText = streamReader.ReadToEnd();
fileText = fileText.Replace(oldName, newName);
}

using (StreamWriter streamWriter = new StreamWriter(filePath, false, Encoding.Default))
{
streamWriter.Write(fileText);
}
}
}

/// <summary>/// 后台执行DOS文件/// </summary>/// <param name="fileName">文件名(包含路径)</param>/// <param name="argument">运行参数</param>/// <param name="hidden">是否隐藏窗口</param>        private void RunDos(string fileName, string argument, bool hidden)
{
Process process = new Process();
process.EnableRaisingEvents = false;
process.StartInfo.FileName = string.Format("\"{0}\"", fileName);
process.StartInfo.Arguments = argument;if (hidden)
{
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
}else
{
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
}
process.Start();
process.WaitForExit();
}

4、接着在安装包的自定义安装视图中,把刚才自定义安装项目关联到安装包中,如下所示。

并修改主输出来自InstallAction的属性项目如下所示

5、编译运行程序,我们发现DOS运行的效果如下所示,说明DOS命令正常运行,并复制了文件。

6、运行程序,DevExpress界面正常出来,并没有弹出额外的窗体,这真是我们需要的,示例界面如下所示。

本文转自博客园伍华聪的博客,原文链接:如何在安装过程中部署DevExpress控件,如需转载请自行联系原博主。

时间: 2024-11-01 02:00:20

如何在安装过程中部署DevExpress控件的相关文章

c# winfrom项目,webbrower控件中加载页面过程中导致timer控件显示时间会停一小会

问题描述 c# winfrom项目,webbrower控件中加载页面过程中导致timer控件显示时间会停一小会 在C# Winfrom项目中,from窗体中,有一个webbrower控件用于加载网页,在webbrower控件内放了一个label控件(用于显示当前时间),还有一个timer控件(用于控制label显示时间,显示格式为:hh:mm:ss,). 目前遇到个问题,当webbrower控件用于加载数据量较大的网页时,在网页加载的过程中,会导致label控件显示时间中的秒时, 会停顿两至三秒

程序运行过程中动态改变控件大小的方法

程序|动态|过程|控件 在程序运行期间改变控件大小要用到WindowsAPI函数以下是主要的代码 [DllImport("user32.dll", EntryPoint="GetWindowLong")] public static extern int GetWindowLong ( int hwnd, int nIndex ); [DllImport("user32.dll", EntryPoint="SetWindowLong&q

sharepoint环境安装过程中几点需要注意的地方

写在前面 上篇文章也说明了,在安装sharepoint环境的时候,确实吃了不少苦头,这里纪录一下安装过程中遇到的几个问题. 安装环境 windows server 2012 r2 standard x64 sql server 2012 sp1 x64 sharepoint 2013 with sp1 安装步骤 安装步骤可参考 SharePoint 2013 安装图解 霖雨 1.安装数据库遇到的问题. 安装步骤按照上面的安装即可,但在安装数据库的时候,如果一直提示安装不成功,可参照下图,修改账户

教您解决MindManager 15中文版安装过程中的DynaZip UnZip Error

  很多用户反映在安装MindManager 15中文版过程中会出现DynaZip UnZip Error的错误提示,其实这个安装错误经过修改路径就可以得到解决,本教程将教您快速解决MindManager 15中文版安装过程中的DynaZip UnZip Error. 问题描述:DynaZip UnZip Error:Error creating output file (Problem extracting file(s)) 原因分析:DynaZip UnZip Error这个安装错误是由于在

解决MindManager 15中文版安装过程中的DynaZip UnZip Error

  这个安装错误经过修改路径就可以得到解决,本教程将教您快速解决MindManager 15中文版安装过程中的DynaZip UnZip Error. 问题描述:DynaZip UnZip Error:Error creating output file (Problem extracting file(s)) 原因分析:DynaZip UnZip Error这个安装错误是由于在安装过程中解压文件时出现了错误. 解决措施:DynaZip UnZip Error的解决方法也不麻烦,如果用户可以很明

安装过程中的IIS与asp安全防护

IIS是Internet Information Server的缩写,它是微软公司主推的服务器,最新的版本是Windows2000里面包含的IIS 5,IIS与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NT http://www.aliyun.com/zixun/aggregation/19352.html">File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点

SQL Server补丁版本的检查和安装过程中常见问题

server|过程|问题 来源:http://www.xfocus.net 一.SQL Server补丁版本的检查 SQL Server的补丁版本检查不如Windows 补丁版本检查直接,一个系统管理员,如果不了解SQL Server版本对应的补丁号,可能也会遇到一点麻烦,因此在这说明一下,通过这样的办法判别机器是安全的办法,不会对系统产生任何影响.1.用Isql或者SQL查询分析器登录到SQL Server,如果是用Isql,请在cmd窗口输入isql -U sa,然后输入密码,进入:如果是用

Office 2010 安装过程中出错的问题

今天在安装office2010 的时候一直提示:"安装过程中失败",具体错误信息如下图: 注册表也按照网上的进行了删除,也用微软的清理工具清理过了,杀毒软件也关闭了,Windows Install服务业特意开启了,但还是失败. office卸载工具下载地址:http://download.csdn.net/detail/xunzaosiyecao/7289875 返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Office/soft

Oracle 10203 RAC环境添加新节点(五)添加节点的软件安装过程中的问题

简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程.共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置. 简单描述添加节点的软件安装过程中碰到的问题. 第一个错误是在运行ADDNODE.SH工具时碰到的,在节点3的安装过程中出现了空间不足的错误: INFO: ld.so.1: lsnodes: fatal: libskgxn2.so: open failed: No such file or dire