如何在安装过程中部署DevExpress控件 [转]
2012-04-27 10:30
393 查看
在我的Winform开发框架或者WCF开发框架中,均提供多种界面样式选择,其中有一种就是界面效果比较好的DevExpress控件界面样式,但是我们一般在开发环境中使用,安装包的大小都很大,100多M,那么我们在部署到客户端应用的时候,该如何操作呢?
我们分析DevExpress的特殊补丁发现,他们是一个DOS批处理文件,主要是创建相应的目录,然后把DevExpress的三个特殊文件复制到对应的目录中,就可以实现DevExpress的正常使用了。那个DOS批处理文件内容如下所示。
View Code
4、接着在安装包的自定义安装视图中,把刚才自定义安装项目关联到安装包中,如下所示。
并修改主输出来自InstallAction的属性项目如下所示
5、编译运行程序,我们发现DOS运行的效果如下所示,说明DOS命令正常运行,并复制了文件。
6、运行程序,DevExpress界面正常出来,并没有弹出额外的窗体,这真是我们需要的,示例界面如下所示。
我们分析DevExpress的特殊补丁发现,他们是一个DOS批处理文件,主要是创建相应的目录,然后把DevExpress的三个特殊文件复制到对应的目录中,就可以实现DevExpress的正常使用了。那个DOS批处理文件内容如下所示。
View Code
[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控件
- 如何在安装过程中部署DevExpress控件
- 如何在安装过程中部署DevExpress控件
- 如何在安装过程中部署DevExpress控件
- 如何在安装过程中部署DevExpress控件
- 如何在安装过程中部署DevExpress控件
- 如何在打包过程中将程序集安装部署到gac空间中
- 转:&nbsp;如何部署DevExpress控件
- 如何在安装部署时实现注册MSComm控件
- 如何安装部署MapD(总结)
- 免费VMware ESXi虚拟管理软件安装、注册、配置、部署全过程
- 未安装m2e-scm和m2e-wtp插件如何从svn下载maven项目和在tomcat中部署
- 微信小程序开发工具 下载,安装,创建新项目和如何导入项目整个过程教程
- 如何将VSeWSSv12安装到无wss/moss环境中实现远程开发部署
- delphi如何安装控件 卸载控件
- 如何安装部署秋色园QBlog站点
- 如何在非同步Postback过程中修改位于UpdatePanel外的控件内容
- VS2010安装部署成.NET 2.0过程的几个问题(转)
- PXE部署系统过程中报错0x80070490如何排错?举一反三的IT技术学习方式
- 如何在VS工具箱中添加DevExpress控件【转,亲测可行】