diff --git a/services/firmware/upgrade/install/include/firmware_stream_installer_install.h b/services/firmware/upgrade/install/include/firmware_stream_installer_install.h index ee1c6f6fb65fc2df204326b6897cd0a9ff0001db..ea0a0966f2ffcf311db48f9c0db98cb86242b1ba 100755 --- a/services/firmware/upgrade/install/include/firmware_stream_installer_install.h +++ b/services/firmware/upgrade/install/include/firmware_stream_installer_install.h @@ -39,7 +39,7 @@ private: int32_t DoSysInstall(const FirmwareComponent &component); bool InstallComponentWithRetry(const FirmwareComponent &component); int32_t WaitInstallResult(); - int32_t InitSysInstaller(); + int32_t InitSysInstaller(const std::string &versionId); int32_t SetInstallerCallback(FirmwareComponent &component); void NotifyCondition(); diff --git a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h index e00edf825eface08103d498971d90c62c7708b05..5dd54f26a0ee315ee0dd6b90128f657d820ed789 100644 --- a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h +++ b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h @@ -33,10 +33,10 @@ class SysInstallerInstall final : public FirmwareInstall { private: bool IsComponentLegal(const std::vector &componentList) final; bool PerformInstall(const std::vector &componentList, UpgradeStatus &status) final; - int32_t StartUpdatePackageZip(std::string &path); + int32_t StartUpdatePackageZip(const std::string &versionId, std::string &path); int32_t DoSysInstall(const FirmwareComponent &firmwareComponent); void InitInstallProgress(); - int32_t WaitInstallResult(); + int32_t WaitInstallResult(const std::string &versionId); private: Progress sysInstallProgress_; diff --git a/services/firmware/upgrade/install/src/firmware_stream_installer_install.cpp b/services/firmware/upgrade/install/src/firmware_stream_installer_install.cpp index a966f19ae0bd42d23ce05b16e32210f8059425c7..c8938f0833c73cce28dbb54956211f55c4447747 100755 --- a/services/firmware/upgrade/install/src/firmware_stream_installer_install.cpp +++ b/services/firmware/upgrade/install/src/firmware_stream_installer_install.cpp @@ -95,7 +95,7 @@ int32_t StreamInstallerInstall::DoSysInstall(const FirmwareComponent &component) FIRMWARE_LOGI("DoSysInstall, status=%{public}d", component.status); FirmwareComponent firmwareComponent = component; - int32_t ret = InitSysInstaller(); + int32_t ret = InitSysInstaller(firmwareComponent.versionId); if (ret != OHOS_SUCCESS) { return ret; } @@ -113,17 +113,17 @@ int32_t StreamInstallerInstall::DoSysInstall(const FirmwareComponent &component) return WaitInstallResult(); } -int32_t StreamInstallerInstall::InitSysInstaller() +int32_t StreamInstallerInstall::InitSysInstaller(const std::string &versionId) { #ifndef UPDATER_UT - int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SysInstallerInit(true); + int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SysInstallerInit(versionId, true); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("sys installer init failed"); errMsg_.errorMessage = "sys installer init failed"; errMsg_.errorCode = DUPDATE_ERR_IPC_ERROR; return OHOS_FAILURE; } - int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(); + int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(versionId); if (updateStatus != CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_INIT)) { FIRMWARE_LOGE("StartUnpack status: %{public}d , system busy", updateStatus); errMsg_.errorMessage = "sys installer is busy"; @@ -167,7 +167,7 @@ int32_t StreamInstallerInstall::SetInstallerCallback(FirmwareComponent &componen return OHOS_FAILURE; } - int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(cb); + int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(component.versionId, cb); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("set sys installer callback failed"); errMsg_.errorMessage = "set sys installer callback failed"; diff --git a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp index 0d883e92aa1e254b94af9a670189b08e0905feea..f78258d7856c8edc2344511780917b59fe598e1a 100644 --- a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp +++ b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp @@ -21,6 +21,7 @@ #include "isys_installer.h" #include "sys_installer_kits_impl.h" +#include "sys_installer_task_const.h" #include "config_parse.h" #include "dupdate_errno.h" @@ -62,7 +63,7 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo FIRMWARE_LOGI("DoSysInstall, status=%{public}d", firmwareComponent.status); FirmwareComponent sysComponent = firmwareComponent; InitInstallProgress(); - int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SysInstallerInit(); + int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SysInstallerInit(sysComponent.versionId); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("sys installer init failed"); errMsg_.errorMessage = "sys installer init failed"; @@ -70,7 +71,7 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo return OHOS_FAILURE; } - int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(); + int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(sysComponent.versionId); if (updateStatus != CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_INIT)) { FIRMWARE_LOGE("StartUnpack status: %{public}d , system busy", updateStatus); errMsg_.errorMessage = "sys installer is busy"; @@ -99,7 +100,7 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo return OHOS_FAILURE; } - ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(cb); + ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(sysComponent.versionId, cb); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("set sys installer callback failed"); errMsg_.errorMessage = "set sys installer callback failed"; @@ -107,15 +108,15 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo return OHOS_FAILURE; } - if (StartUpdatePackageZip(sysComponent.spath) != OHOS_SUCCESS) { + if (StartUpdatePackageZip(sysComponent.versionId, sysComponent.spath) != OHOS_SUCCESS) { return OHOS_FAILURE; } - return WaitInstallResult(); + return WaitInstallResult(sysComponent.versionId); } -int32_t SysInstallerInstall::StartUpdatePackageZip(std::string &path) +int32_t SysInstallerInstall::StartUpdatePackageZip(const std::string &versionId, std::string &path) { - auto ret = SysInstaller::SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(path); + auto ret = SysInstaller::SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(versionId, path); if (ret != OHOS_SUCCESS) { errMsg_.errorMessage = "sys installer StartUpdatePackageZip failed"; errMsg_.errorCode = ret; @@ -134,7 +135,7 @@ void SysInstallerInstall::InitInstallProgress() errMsg_.errorMessage = ""; } -int32_t SysInstallerInstall::WaitInstallResult() +int32_t SysInstallerInstall::WaitInstallResult(const std::string &versionId) { uint32_t timeout = 0; uint32_t configTime = DelayedSingleton::GetInstance()->GetAbInstallerTimeout(); @@ -142,10 +143,14 @@ int32_t SysInstallerInstall::WaitInstallResult() while (timeout <= configTime) { if (sysInstallProgress_.status == UpgradeStatus::INSTALL_FAIL) { FIRMWARE_LOGE("WaitInstallResult sysinstaller fail"); + SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateResult(versionId, + SysInstaller::TaskTypeConst::TASK_TYPE_AB_UPDATE, SysInstaller::ResultTypeConst::RESULT_TYPE_INSTALL); return OHOS_FAILURE; } if (sysInstallProgress_.status == UpgradeStatus::INSTALL_SUCCESS && sysInstallProgress_.percent == Firmware::ONE_HUNDRED) { + SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateResult(versionId, + SysInstaller::TaskTypeConst::TASK_TYPE_AB_UPDATE, SysInstaller::ResultTypeConst::RESULT_TYPE_INSTALL); return OHOS_SUCCESS; } timeout++;