/// <summary>
/// 读取本地版本请求更新
/// </summary>
/// <param name="document">读取的文件信息</param>
/// <param name="zipPath">返回zip包本地路径</param>
/// <returns></returns>
private
bool
UpdateSystem(
string
document,
string
zipPath)
{
try
{
Dictionary<
string
,
string
> postDic =
new
Dictionary<
string
,
string
>();
if
(File.Exists(document))
{
postDic.Add(
"version"
, File.ReadAllText(document).Trim());
}
else
{
postDic.Add(
"version"
,
"0"
);
}
string
postJson = JsonConvert.SerializeObject(postDic);
string
url = GetAppSettingValue(
"serverUrl"
) +
"parkClient/parkClientUpdate"
;
JObject obj = (JObject)JsonConvert.DeserializeObject(PostData(postJson, url));
string
newVersion = obj[
"version"
].ToString();
if
(!String.IsNullOrWhiteSpace(newVersion))
{
byte
[] bytesFile = Convert.FromBase64String(obj[
"byteArray"
].ToString());
if
(obj[
"clientMD5"
].ToString() == BitConverter.ToString(
new
System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(bytesFile)).Replace(
"-"
,
""
))
{
ZipCoverage(bytesFile, zipPath);
File.WriteAllText(document, newVersion);
}
}
return
true
;
}
catch
(Exception ex)
{
MessageBox.Show(ex.Message);
return
false
;
}
}
/// <summary>
/// 解压zip包覆盖更新
/// </summary>
/// <param name="bytes">接受更新包的字节信息</param>
/// <param name="zpath">覆盖的路径</param>
private
void
ZipCoverage(
byte
[] bytes,
string
zpath)
{
File.WriteAllBytes(zpath, bytes);
using
(ZipArchive archive = ZipFile.OpenRead(zpath))
{
string
file =
null
;
foreach
(ZipArchiveEntry entry
in
archive.Entries)
{
if
(!entry.FullName.EndsWith(
"/"
))
{
file = Path.Combine(Application.StartupPath, entry.FullName);
if
(File.Exists(file))
{
File.Delete(file);
}
}
}
}
ZipFile.ExtractToDirectory(zpath, Application.StartupPath);
}
/// <summary>
/// 获取配置文件中的appSettings节中的配置内容
/// </summary>
/// <param name="appSettingKey"></param>
/// <param name="message"></param>
/// <returns></returns>
private
string
GetAppSettingValue(
string
appSettingKey)
{
ExeConfigurationFileMap map =
new
ExeConfigurationFileMap { ExeConfigFilename =
@"TDH.Parking.Client.exe.config"
};
return
ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None).AppSettings.Settings[appSettingKey].Value;
}