【Remoting】.Net remoting方法实现简单的在线升…
2018-06-18 01:58:01来源:未知 阅读 ()
一、前言
上篇运用了.Net Remoting技术解决了本地与服务器版本对比,并下载更新包的过程。
本篇主要是应用Process,来实现重启程序的过程。
情景假设:
Revit2016正加载某dll,其版本为1.0.0.0。服务器的更新dll版本为1.0.0.10。
下载完后,Revit2016关闭,旧dll删除,新dll复制到旧dll的所在路径,重启Revit2016。
二、代码
在上篇最后一段代码的79—80行之前插入如下代码:
bgk_Update.ReportProgress(100, "正在更新"); Thread t = new Thread(new ThreadStart(Update)); t.Start();
执行Update函数:
public void Update() { string exepath = string.Empty; Process[] ps = Process.GetProcessesByName("Revit"); foreach (Process p in ps) { exepath = p.MainModule.FileName.ToString(); //获得该进程的exe路径 p.Kill(); //关闭该进程 } foreach (var module in serverupdatefiles.Keys) //删除原有的module { System.Threading.Thread.Sleep(1 * 1000); //做个延时,因为进程响应快慢问题,可能会导致报错如:拒绝访问...文件或者尚未找到该应用路径 System.IO.File.Delete(Path.Combine(Config.Dir, module + ".dll")); //将新文件复制到旧文件的文件夹内 } CopyDir(Config.TempDir, Config.Dir); System.Diagnostics.Process.Start(exepath);//重启该exe }
复制某文件夹的内容到另一个文件夹内:
public static void CopyDir(string srcPath, string aimPath) { try { // 检查目标目录是否以目录分割字符结束如果不是则添加之 if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar) aimPath += Path.DirectorySeparatorChar; // 判断目标目录是否存在如果不存在则新建之 if (!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath); // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组 // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法 string[] fileList = Directory.GetFiles(srcPath); // string[] fileList = Directory.GetFileSystemEntries(srcPath); // 遍历所有的文件和目录 foreach (string file in fileList) { // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件 if (Directory.Exists(file)) CopyDir(file, aimPath + Path.GetFileName(file)); // 否则直接Copy文件 else File.Copy(file, aimPath + Path.GetFileName(file), true); } } catch { Console.WriteLine("无法复制!"); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:ASP.NET MVC5入门指南
下一篇:C#图片辅助类,形成缩略图
- c#.net常用函数和方法集汇总 2019-06-14
- asp.net强大后台:learun混合工作流框架规范 2018-12-04
- learun.framework7.0━ .net 单位管理模 2018-10-19
- 动态绑定与静态绑定 2018-06-27
- Asp.Net MVC中Action跳转(转载) 2018-06-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash