Skip to content

Commit 358e9fb

Browse files
Chadwuomicahh
authored andcommitted
修复:版本比较bug
1 parent 40c08b1 commit 358e9fb

8 files changed

Lines changed: 58 additions & 45 deletions

File tree

HHUpdateApp/HHUpdateApp.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@
125125
<DependentUpon>UpdateForm.cs</DependentUpon>
126126
</EmbeddedResource>
127127
<None Include="app.config" />
128+
<None Include="HHversion.json">
129+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
130+
</None>
128131
<None Include="Log4net.config">
129132
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
130133
</None>
@@ -139,9 +142,6 @@
139142
<DependentUpon>Settings.settings</DependentUpon>
140143
<DesignTimeSharedInput>True</DesignTimeSharedInput>
141144
</Compile>
142-
<None Include="Versions.json">
143-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
144-
</None>
145145
</ItemGroup>
146146
<ItemGroup>
147147
<None Include="Resources\SoftwareUpdate.ico" />

HHUpdateApp/HHversion.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"ApplicationStart": "更新后启动的应用程序名,多个文件用 # 号分割",
3+
"ReleaseDate": "发布时间",
4+
"ReleaseUrl": "发布地址",
5+
"ReleaseVersion": "发布版本号",
6+
"UpdateMode": "更新方式:Cover表示覆盖原文件更新,NewInstall表示删除源文件全新安装",
7+
"VersionDesc": "更新描述说明",
8+
"IgnoreFile": "更新过程中忽略的文件,多个文件用 # 号分割"
9+
}

HHUpdateApp/MainForm.cs

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,21 @@ public partial class MainForm : Form
1717
/// </summary>
1818
private string launchAppName;
1919

20+
/// <summary>
21+
/// 需要更新的业务应用程序所在目录
22+
/// </summary>
23+
private string launchAppDirectoryName;
24+
25+
/// <summary>
26+
/// 需要更新的业务应用程序版本号
27+
/// </summary>
28+
private string launchAppVer;
29+
30+
/// <summary>
31+
/// 需要更新的业务应用程序关联的进程
32+
/// </summary>
33+
private Process[] launchProcess;
34+
2035
/// <summary>
2136
/// 检查更新模式:0,自动更新;1,手动检查(区别就是,自动更新的状态下,除非有新版本更新,才会显示提示框)
2237
/// </summary>
@@ -36,14 +51,27 @@ public MainForm(string _launchAppName, string _checkMode)
3651

3752
private void MainForm_Load(object sender, EventArgs e)
3853
{
54+
//通过业务应用程序名,获取其进程信息
55+
launchProcess = Process.GetProcessesByName(launchAppName);
56+
57+
if (launchProcess.Length > 0)
58+
{
59+
launchAppDirectoryName = Path.GetDirectoryName(launchProcess[0].MainModule.FileName);
60+
launchAppVer = launchProcess[0].MainModule.FileVersionInfo.ProductVersion;
61+
}
62+
else
63+
{
64+
HHMessageBox.Show("应用程序未启动: _" + launchAppName);
65+
Application.Exit();
66+
}
67+
3968
//下载服务器上版本更新信息
4069
verInfo = DownloadUpdateInfo(Program.ServerUpdateUrl);
4170

4271
if (verInfo != null)
4372
{
4473
//比较版本号
45-
string currentAppVer = Application.ProductVersion;
46-
if (VersionCompare(currentAppVer, verInfo.ReleaseVersion) >= 0)
74+
if (VersionCompare(launchAppVer, verInfo.ReleaseVersion) >= 0)
4775
{
4876
//this.Hide();//隐藏当前窗口
4977

@@ -85,35 +113,20 @@ private void btnUpdateNow_Click(object sender, EventArgs e)
85113
{
86114
this.Hide();//隐藏当前窗口
87115

88-
//通过业务应用程序名,获取其所在位置
89-
Process[] processes = Process.GetProcessesByName(launchAppName);
116+
UpdateWork work = new UpdateWork(launchAppDirectoryName, verInfo);
90117

91-
if (processes.Length > 0)
118+
//关闭业务应用程序关联的进程
119+
foreach (Process p in launchProcess)
92120
{
93-
//获取 需要更新的业务应用程序所在目录
94-
string launchAppDirectoryName = Path.GetDirectoryName(processes[0].MainModule.FileName);
95-
UpdateWork work = new UpdateWork(launchAppDirectoryName, verInfo);
96-
97-
//关闭业务应用程序关联的进程
98-
foreach (Process p in processes)
99-
{
100-
p.Kill();
101-
p.Close();
102-
}
103-
104-
UpdateForm updateForm = new UpdateForm(work);
105-
if (updateForm.ShowDialog() == DialogResult.OK)
106-
{
107-
Application.Exit();
108-
}
121+
p.Kill();
122+
p.Close();
109123
}
110-
else
124+
125+
UpdateForm updateForm = new UpdateForm(work);
126+
if (updateForm.ShowDialog() == DialogResult.OK)
111127
{
112-
HHMessageBox.Show("应用程序未启动: _" + launchAppName);
113128
Application.Exit();
114129
}
115-
116-
117130
}
118131
/// <summary>
119132
/// 忽略本次版本更新
@@ -176,7 +189,7 @@ private RemoteVersionInfo DownloadUpdateInfo(string serverUrl)
176189
try
177190
{
178191
byte[] bJson = updateClt.DownloadData(serverUrl);
179-
updateJson = System.Text.Encoding.Default.GetString(bJson);
192+
updateJson = System.Text.Encoding.UTF8.GetString(bJson);
180193
}
181194
catch (Exception ex)
182195
{

HHUpdateApp/Properties/Settings.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

HHUpdateApp/Properties/Settings.settings

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<Value Profile="(Default)" />
1313
</Setting>
1414
<Setting Name="ServerUpdateUrl" Type="System.String" Scope="Application">
15-
<Value Profile="(Default)">http://localhost:8020/TrafficQueue.Services/Versions.json</Value>
15+
<Value Profile="(Default)">http://localhost:8020/HHversions.json</Value>
1616
</Setting>
1717
</Settings>
1818
</SettingsFile>

HHUpdateApp/app.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<value />
1818
</setting>
1919
<setting name="ServerUpdateUrl" serializeAs="String">
20-
<value>http://localhost:8020/TrafficQueue.Services/Versions.json</value>
20+
<value>http://localhost:8020/HHversions.json</value>
2121
</setting>
2222
</HHUpdateApp.Properties.Settings>
2323
</applicationSettings>

HHUpdateApp/versions.json

Lines changed: 0 additions & 9 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ HHUpdateApp是.NET程序桌面应用程序。她可以轻松地将自动更新
55

66

77
## 如何运作
8-
HHUpdateApp从您的服务器下载包含更新信息的JSON文件。它使用此JSON文件来获取需要检测更新的PC上【业务应用程序】有关最新版本的信息。如果服务器上该【业务应用程序】的最新版本大于在用户PC上的当前版本,则HHUpdateApp将向用户显示更新对话框。如果用户按下更新按钮来更新软件,则它将从JSON文件中提供的URL下载更新文件(zip安装文件)。之后执行更新是安装程序的工作,HHUpdateApp会将zip文件的内容提取到应用程序目录中替换升级原应用程序文件。
8+
HHUpdateApp从您的服务器下载包含更新信息的JSON文件(HHversions.json)。它使用此JSON文件来获取需要检测更新的PC上【业务应用程序】有关最新版本的信息。如果服务器上该【业务应用程序】的最新版本大于在用户PC上的当前版本,则HHUpdateApp将向用户显示更新对话框。如果用户按下更新按钮来更新软件,则它将从JSON文件中提供的URL下载更新文件(zip安装文件)。之后执行更新是安装程序的工作,HHUpdateApp会将zip文件的内容提取到应用程序目录中替换升级原应用程序文件。
99

1010
## 如何使用
1111
拒绝复杂头疼的设置,直接点击【HHUpdateApp.exe】,只需要填写您的【业务应用程序名称】(例如LOLClient)即可轻松的为您的LOLClient.exe应用程序检查更新。
@@ -45,8 +45,8 @@ HHUpdateApp从您的服务器下载包含更新信息的JSON文件。它使用
4545
Process proc = Process.Start(processStartInfo);
4646
```
4747

48-
### Versions.json
49-
无论使用何种方式,配置服务器上包含更新信息的JSON文件都是必须的。将次配置文件放在应用程序可访问的服务器或远程电脑上。
48+
### HHversions.json
49+
无论使用何种方式,配置服务器上包含更新信息的JSON文件都是必须的。将次配置文件放在应用程序可访问的服务器或远程电脑上。注意:HHversions.json必须是UTF8格式
5050
```json
5151
{
5252
"ApplicationStart": "更新后启动的应用程序名,多个文件用 # 号分割",
@@ -94,7 +94,7 @@ private void button1_Click(object sender, EventArgs e)
9494
}
9595
}
9696
```
97-
>上面示例中使用的JSON文件
97+
>上面示例中使用的HHversions.JSON文件
9898
9999
```json
100100
{

0 commit comments

Comments
 (0)