C# 下实现在线升级
转的,还没有测试
1
//这是一个webservice
2
3
private AppUpdate.UpdateServ UpdateSvr;
4
5
6
private void button1_Click(object sender, System.EventArgs e)
7
{
8
9
if(LinkWebServices()==true)
10
{
11
this.label1.Text=“连接服务器
. PASS“;
12
13
if(CheckVer()==true)
14
{
15
this.label2.Text=“检查最新版本并下载
.PASS“;
16
17
}
18
else
19
{
20
this.label2.Text=“检查最新版本并下载
.FAIL“;
21
}
22
}
23
else
24
{
25
this.label1.Text=“连接服务器
.FAIL“;
26
}
27
}
28
29
//这是用来与升级服务器建立连接
30
private bool LinkWebServices()
31
{
32
try
33
{
34
UpdateSvr=new UpdateServ();
35
return true;
36
}
37
catch
38
{
39
return false;
40
}
41
}
42
43
//调用webservice用来检查是不是有最新的版本
44
private bool CheckVer()
45
{
46
string path =Application.StartupPath;
47
try
48
{
49
VersionCheck(path);
50
return true;
51
}
52
catch(Exception ex)
53
{
54
MessageBox.Show(ex.ToString());
55
return false;
56
}
57
}
58
59
private void VersionCheck(string desPath)
60
{
61
try
62
{
63
查看文件和目录
89
90
91
System.Xml.XmlDocument serverXmlDoc = UpdateSvr.AppUpdateVertion();
92
System.Xml.XmlDocument localXmlDoc = new System.Xml.XmlDocument();
93
localXmlDoc.Load(desPath + “UpdateConfig.xml“);
94
bool newVersionExist = false;
95
bool moduleExist = false;
96
System.Xml.XmlNode serverNode0 = serverXmlDoc.ChildNodes[0];
97
System.Xml.XmlNode localNode0 = localXmlDoc.ChildNodes[0];
98
foreach(System.Xml.XmlNode serverNode in serverNode0)
99
{
100
moduleExist = false;
101
foreach(System.Xml.XmlNode localNode in localNode0)
102
{
103
//找到对应模块
104
if(localNode.ChildNodes[0].InnerText == serverNode.ChildNodes[0].InnerText)
105
{
106
moduleExist = true;
107
//版本号判断
108
if(localNode.ChildNodes[1].InnerText.CompareTo(serverNode.ChildNodes[1].InnerText) 〈 0)
109
{
110
newVersionExist = true;
111
if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
112
{
113
DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
114
}
115
else
116
{
117
DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
118
}
119
}
120
break;
121
}
122
}
123
//没找到对应模块
124
if(false == moduleExist)
125
{
126
127
if(System.Configuration.ConfigurationSettings.AppSettings[“NetStyle“].ToString()==“internet“)
128
{
129
DownloadFile(serverNode.ChildNodes[2].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
130
}
131
else
132
{
133
DownloadFile(serverNode.ChildNodes[3].InnerText,tempPath + serverNode.ChildNodes[0].InnerText);
134
}
135
}
136
}
137
//写入新UpdateConfig.xml升级完毕后替换
138
if(newVersionExist)
139
{
140
serverXmlDoc.Save(tempPath + “UpdateConfig.xml“);
141
if(DialogResult.Yes == MessageBox.Show(“有新版本,是否更新?“,“提示“,MessageBoxButtons.YesNo))
142
{
143
string[] dirs = System.IO.Directory.GetFiles(tempPath, “*.*“);
144
string fileName;
145
foreach (string dir in dirs)
146
{
147
fileName = ((dir.Split(Convert.ToChar(@“\“)))[dir.Split(Convert.ToChar(@“\“)).Length - 1]);
148
if(System.IO.File.Exists(desPath + fileName))
149
{
150
//TODO:可以支持备份以前版本
151
System.IO.File.Delete(desPath + fileName);
152
}
153
//TODO:如果系统正在运行,您得停止系统,至于如何停止,也许可以使用System.Diagnostics.Process
154
System.IO.File.Move(dir,desPath + fileName);
155
}
156
MessageBox.Show(“升级完毕“);
157
}
158
else
159
{
160
//TODO:可以支持重新提示升级
161
}
162
}
163
}
164
catch(Exception ex)
165
{
166
throw new Exception(“升级失败,原因是:“ + ex.Message,ex);
167
}
168
}
169
170
//下载最新的文件
171
172
private void DownloadFile(string source,string fileName)
173
{
174
try
175
{
176
System.Net.WebClient myWebClient = new System.Net.WebClient();
177
myWebClient.DownloadFile(source,fileName);
178
}
179
catch(Exception ex)
180
{
181
throw new Exception(“下载失败,原因是:“ + ex.Message,ex);
182
}
183
}
184
185
该文章转载自网络大本营:http://www.xrss.cn/Dev/DotNet/200722310638.Html

2

3

4

5

6

7

8

9

10

11



12

13

14

15



16

17

18

19

20



21

22

23

24

25



26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步