2023年11月26日发(作者:)

1/31

JAVA 实现客户端软件自动更新

(一)

前段时间做了一个工具发布给公司的各部门使用后反馈了不少BUG,每次修改后均需要发邮件

通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新

的版本时只需要将其部署到自动升级服务器上,工具使用用户运行工具时就会连接到自动升级

2/31

28

29

30

31 .lib

3/31

33 1.0.2

34

1.修正了等字符而无法正确生成的错误

35 2.修正了无法生成的错误

4/31

(二)

本实现包括:

1、 服务端和客户端之间的通讯协议

2、 服务端的监听进程

5/31

32

33 /** *//**

6/31

89 * 文件数据块大小

90 */

91 public static final int DATA_SIZE = 1024;

7/31

30 public AutoUpdateServer()

31 {

8/31

87 tackTrace();

88 }

89 }

9/31

(三)

1/** *//********************************************************************

2 * 项目名称 :rochoc

10/31

49 public void run()

50 {

11/31

106 ("出现非期望数据,"+new String(bCmd));

107 (());//结束

12/31

163 {

164 UpdFile verFile = new UpdFile("");

13/31

220 //读取命令

221 len = (bCmd,0,8);

14/31

277 // 组合数据包

278 for (int i=0; i

15/31

334 boolean isOk = false;

335 flagb[0] = flag;

16/31

391 for (int i = 0; i < ; i++)

392 {

393 (files[i].getName(), files[i]);

17/31

39

40 private void parse()

18/31

2 * 项目名称 :rochoc

3 * 包名称 :date

19/31

59 while(true)

60 {

20/31

116 }//END while(ture)

117 //关闭资源

21/31

173 //发送更新信息

174 UpdFile infFile = new UpdFile("");

22/31

230 (tAddress()+":接收文件路径成功,"+path);

231 return true;

23/31

287 //判断客户端是否收到

288 len = (bFlag,0,1);

24/31

344 len = (flagb,0,1);//读取标识位

345 if(len != 1)

25/31

401 ("接收客户端"+tAddress()+" 版本号信息处理失败,"+e);

402 }

26/31

(四)

接CS结构软件自动升级实现(三) :

处理配置文件:

1/** *//********************************************************************

27/31

46 private Config()

47 {

28/31

103 {

104 files[i].setType(0);//文件

29/31

160 return (ing(0, ()-1));

161 return p;

162 }

163 public static byte[] getCmd(String cmd)

30/31

10 * 变更作者 :

11 * 变更说明 :

31/31

67 /** *//**

68 * @param path The path to set.

69 */