fix OTA更新逻辑
This commit is contained in:
parent
afb91406f0
commit
40569d9184
|
@ -25,10 +25,74 @@ public class OTAService
|
|||
_previousBackupPath = previousBackupPath;
|
||||
_updatePackagePath = updatePackagePath;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 订阅OTA更新
|
||||
/// </summary>
|
||||
public async Task ListenOTAUpdateEvent()
|
||||
{
|
||||
await MessageQueueHelper.Subscribe(Topics.IssuedOTAPackage, HandleUpdateOTAEvent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询OTA更新
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
public static async Task QueryOTAUpdate()
|
||||
{
|
||||
await MessageQueueHelper.Publish(Topics.QueryOTA, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OTA更新反馈
|
||||
/// </summary>
|
||||
/// <param name="resutl"></param>
|
||||
public async Task OTALicenseUpdateEventFeedback(OTAResultData resutl)
|
||||
{
|
||||
await MessageQueueHelper.Publish(Topics.OTAUpgradeFeedback, resutl);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理OTA更新
|
||||
/// </summary>
|
||||
/// <param name="topic"></param>
|
||||
/// <param name="otaUpdateData"></param>
|
||||
private async Task HandleUpdateOTAEvent(string topic, OTAUpdateData otaUpdateData)
|
||||
{
|
||||
var type = otaUpdateData.Type;
|
||||
var url = otaUpdateData.Url;
|
||||
var version = otaUpdateData.Version;
|
||||
var module = otaUpdateData.Module;
|
||||
var size = otaUpdateData.Size;
|
||||
var checksum = otaUpdateData.Checksum;
|
||||
var name = otaUpdateData.Name;
|
||||
var description = otaUpdateData.Description;
|
||||
|
||||
OTAResultData otaResultData = new OTAResultData();
|
||||
//下载更新包
|
||||
await ApiClient.DownloadFileAsync(url, _updatePackagePath);
|
||||
|
||||
//校验压缩包
|
||||
if(!OTAClient.CheckMD5(checksum, _updatePackagePath)) return;
|
||||
|
||||
//kill masstransfer
|
||||
|
||||
//启动更新
|
||||
otaResultData.Result = Install() ? (byte)1 : (byte)0;
|
||||
|
||||
//restart masstransfer
|
||||
|
||||
//更新反馈
|
||||
otaResultData.OtaSoftwareVersion = version;
|
||||
otaResultData.CurrentSoftwareVersion = version; //**需要修改为当前版本
|
||||
|
||||
await OTALicenseUpdateEventFeedback(otaResultData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 安装压缩包
|
||||
/// </summary>
|
||||
public void Install()
|
||||
public bool Install()
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -58,11 +122,14 @@ public class OTAService
|
|||
//删除更新包
|
||||
OTAClient.DeleteFile(_updatePackagePath);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
RollBack();
|
||||
Console.WriteLine($"更新异常,已回滚: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -74,6 +141,8 @@ public class OTAService
|
|||
{
|
||||
OTAClient.DeleteDirectory(_criticalBackupDir);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,57 +191,4 @@ public class OTAService
|
|||
OTAClient.DeleteFile(_previousBackupPath);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 订阅OTA更新
|
||||
/// </summary>
|
||||
public async Task ListenOTAUpdateEvent()
|
||||
{
|
||||
await MessageQueueHelper.Subscribe(Topics.IssuedOTAPackage, HandleUpdateOTAEvent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询OTA更新
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
public static async Task QueryOTAUpdate()
|
||||
{
|
||||
await MessageQueueHelper.Publish(Topics.QueryOTA, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OTA更新反馈
|
||||
/// </summary>
|
||||
/// <param name="resutl"></param>
|
||||
public async Task OTALicenseUpdateEventFeedback(string resutl)
|
||||
{
|
||||
await MessageQueueHelper.Publish(Topics.OTAUpgradeFeedback, resutl);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理OTA更新
|
||||
/// </summary>
|
||||
/// <param name="topic"></param>
|
||||
/// <param name="otaUpdateData"></param>
|
||||
private async Task HandleUpdateOTAEvent(string topic, OTAUpdateData otaUpdateData)
|
||||
{
|
||||
var type = otaUpdateData.Type;
|
||||
var url = otaUpdateData.Url;
|
||||
var version = otaUpdateData.Version;
|
||||
var module = otaUpdateData.Module;
|
||||
var size = otaUpdateData.Size;
|
||||
var checksum = otaUpdateData.Checksum;
|
||||
var name = otaUpdateData.Name;
|
||||
var description = otaUpdateData.Description;
|
||||
|
||||
//下载更新包
|
||||
await ApiClient.DownloadFileAsync(url, _updatePackagePath);
|
||||
|
||||
//校验压缩包
|
||||
if(!OTAClient.CheckMD5(checksum, _updatePackagePath)) return;
|
||||
|
||||
//启动更新
|
||||
Install();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue