WCF实现客户端自动更新-GenerateFileList

GenerateFileList

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Diagnostics;
 4 using System.IO;
 5
 6 namespace GenerateFileList
 7 {
 8     public class Generator
 9     {
10         private readonly string _appPath = AppDomain.CurrentDomain.BaseDirectory;
11         protected void GenerateFileList(string dir, List<FileEntity> fileEntities)
12         {
13             var files = Directory.GetFiles(dir);
14             foreach (var tem in files)
15             {
16                 var fileInfo = new FileInfo(tem);
17                 var file = new FileEntity()
18                 {
19                     FileName = tem.Replace(_appPath, "").Replace("\\", "\\\\"),
20                     LastUpdate = fileInfo.LastWriteTime.ToString("yyyyMMddHHmmss")
21                 };
22                 if (file.FileName == "GenerateFileList.exe"||file.FileName== "filelist.xml")
23                 {
24                     continue;
25                 }
26                 fileEntities.Add(file);
27             }
28
29             var directories = Directory.GetDirectories(dir);
30             foreach (var directory in directories)
31             {
32                 GenerateFileList(directory, fileEntities);
33             }
34         }
35
36         public void GenerateFileList()
37         {
38             var filelist = new FileListEntity() { FileCode = Guid.NewGuid().ToString().ToUpper().Replace("-", "") };
39             GenerateFileList(_appPath, filelist.FileEntities);
40             filelist.SerializeConfig(Path.Combine(_appPath, "filelist.xml"));
41         }
42
43     }
44
45     public class FileEntity
46     {
47         public string LastUpdate { get; set; }
48         public string FileName { get; set; }
49     }
50
51     public class FileListEntity
52     {
53         private List<FileEntity> _fileEntities = new List<FileEntity>();
54         public string FileCode { get; set; }
55
56         public List<FileEntity> FileEntities
57         {
58             get { return _fileEntities; }
59             set { _fileEntities = value; }
60         }
61     }
62 }

SerializeCfg

 1 using System.IO;
 2 using System.Xml.Serialization;
 3
 4 namespace GenerateFileList
 5 {
 6     public static class SerializeCfg
 7     {
 8         public static T DeserializeConfig<T>(this string path)
 9         {
10             T result;
11             using (FileStream fs = File.OpenRead(path))
12             {
13                 //读取文件
14                 int nLength = (int)fs.Length;
15                 byte[] byteArray = new byte[nLength];
16                 fs.Read(byteArray, 0, nLength);
17
18                 using (MemoryStream stream = new MemoryStream(byteArray))
19                 {
20                     //返序列化
21                     XmlSerializer reader = new XmlSerializer(typeof (T));
22                     result = (T) reader.Deserialize(stream);
23                 }
24             }
25             return result;
26         }
27
28         /// <summary>
29         /// 序列化服务到持久设备
30         /// </summary>
31         public static void SerializeConfig<T>(this T obj, string path)
32         {
33             //序列化到内存
34             XmlSerializer writer = new XmlSerializer(typeof(T));
35             using (MemoryStream ms = new MemoryStream())
36             {
37                 writer.Serialize(ms, obj);
38
39                 byte[] byteArray = ms.ToArray();
40
41                 //保存数据到文件
42                 using (FileStream fs = File.Create(path))
43                 {
44                     fs.Write(byteArray, 0, byteArray.Length);
45                 }
46             }
47
48         }
49     }
50 }
时间: 2024-09-30 21:00:29

WCF实现客户端自动更新-GenerateFileList的相关文章

WCF实现客户端自动更新

IServiceUpdate 1 using System.IO; 2 using System.ServiceModel; 3 using System.ServiceModel.Web; 4 5 namespace ServiceUpdater 6 { 7 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IServiceUpdate”. 8 [ServiceContract] 9 public interface IServiceUpdate 10 {

svn服务器端的客户端自动更新

先说这个方式的一个弊端,那就是服务器端这边代码不能与svn服务器出现冲突,一旦冲突就失效. 实现原理是,利用svn版本库,hooks目录的bat钩子开展工作. 共在hooks目录下建立3个文件如下:post-commit.bat 作用是:钩子入口!postcommit.log 作用是:记录最后一次执行的结果(可以记录最后一次报错)建立一个空文件就好!post-commit-run.bat 作用是:自动更新的核心部分! post-commit.bat的代码是: call %~dp0post-com

统一关闭域客户端自动更新服务

配置策略1: 客户端测试: 配置策略2: 客户端验证:

【原创】我所理解的自动更新-客户端更新流程

创建更新线程,跟ui主线程通过message进行交互.1,去http://version.mygame.com/check.php? channelid=%d&appver=%d&resver=%d获取客户端最新版本信息.用curl获取,代码如下,至于curl的具体参数,man或者搜索引擎会告诉你答案 1 static size_t funcGetHttpText(void *ptr, size_t size, size_t nmemb, void *userdata) { 2 size_

关于cocos2dx客户端程序的自动更新解决方案

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 随着手机游戏的不断发展,游戏包也越来越大,手机网络游戏已经超过100M了,对于玩家来说,如果每次更新都要重新下载,那简直是灾难.而且如果上IOS平台,每次重新发包都要审核,劳神费力.所以当前的主流手游都开始提供自动更新的功能,在不改动C++代码的前提下,使用lua或者js进行业务逻辑开发,然后自动更新脚本和资源,方便玩家也方便研发者. 以前做端游的时候,自动更新是一个大工程,不仅要能更新资源和脚本,还要

PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试

1.目的:由于接口众多,服务端变更接口,会造成服务停用更新,造成客户端不能使用或报错, 在此评估[Web中心]此服务端,接口接口参数增加或减少,是否对客户端造成影响 2.评估内容:服务端增加单值参数,服务端减少单个值参数,Mod对象增加参数,Mod对象减少参数, (而Json数据类型在此不作评估内容,是因为Json对象反序列化具有很好的伸缩型,不会影响客户端调用方) 3.附PCB工程系统集成示意图: 一.Web服务端增加单个值参数 改前-- 服务端(1个参数): /// <summary> /

Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion 2,创建版本库 svnadmin create /home/myrepos    //这里的文件目录自己随便设置 3,配置svnserve 上述版本库/home/myrepos建立后在文件夹下会生成conf文件夹,进入/home/myrepos/conf下面会有下面3个文件 authz passwd 

svn自动更新服务器最新代码

1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin    --svn安装目录(作者使用时TortoiseSVN客户端,其他客户端未测试过)start TortoiseProc.exe /command:update /path:"F:\_xxx_svn\branches\xxxxx" /closeonend:3 update是命令,/path后面是同步路径start TortoiseProc.exe /co

eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的.而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servle