From a5d85616c4819f3d115948605864783ae393f021 Mon Sep 17 00:00:00 2001 From: lanhaoyu Date: Tue, 26 Aug 2025 15:50:27 +0800 Subject: [PATCH] fix 1.2 installer bug Signed-off-by: lanhaoyu --- .../kits/ani/bundle_installer/ani_bundle_installer.cpp | 9 ++++++--- .../bundle_installer/ets/@ohos.bundle.installerInner.ets | 4 +++- interfaces/kits/js/common/napi_constants.h | 2 +- interfaces/kits/js/installer/installer.cpp | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/interfaces/kits/ani/bundle_installer/ani_bundle_installer.cpp b/interfaces/kits/ani/bundle_installer/ani_bundle_installer.cpp index 81b231fcbf..14a331bcd4 100644 --- a/interfaces/kits/ani/bundle_installer/ani_bundle_installer.cpp +++ b/interfaces/kits/ani/bundle_installer/ani_bundle_installer.cpp @@ -372,7 +372,7 @@ static void AniRemoveExtResource(ani_env* env, [[maybe_unused]] ani_object insta ErrCode err = InstallerHelper::InnerRemoveExtResource(bundleName, moduleNames); if (err != NO_ERROR) { BusinessErrorAni::ThrowCommonError( - env, err, REMOVE_EXT_RESOURCE, Constants::PERMISSION_INSTALL_BUNDLE); + env, err, REMOVE_EXT_RESOURCE, UNINSTALL_PERMISSION); } } @@ -442,16 +442,19 @@ static void AniInstallPreexistingApp(ani_env* env, [[maybe_unused]] ani_object i BusinessErrorAni::ThrowCommonError(env, ERROR_PARAM_CHECK_ERROR, BUNDLE_NAME, TYPE_STRING); return; } - int32_t userId = 0; + int32_t userId = Constants::UNSPECIFIED_USERID; if (!CommonFunAni::TryCastDoubleTo(aniUserId, &userId)) { APP_LOGE("Cast appIdx failed"); BusinessErrorAni::ThrowCommonError(env, ERROR_PARAM_CHECK_ERROR, APP_INDEX, TYPE_NUMBER); return; } + if (userId == Constants::UNSPECIFIED_USERID) { + userId = IPCSkeleton::GetCallingUid() / Constants::BASE_USER_RANGE; + } ErrCode result = CommonFunc::ConvertErrCode(InstallerHelper::InnerInstallPreexistingApp(bundleName, userId)); if (result != SUCCESS) { BusinessErrorAni::ThrowCommonError(env, result, - INSTALL_PREEXISTING_APP, Constants::PERMISSION_UNINSTALL_CLONE_BUNDLE); + INSTALL_PREEXISTING_APP, Constants::PERMISSION_INSTALL_BUNDLE); } } diff --git a/interfaces/kits/ani/bundle_installer/ets/@ohos.bundle.installerInner.ets b/interfaces/kits/ani/bundle_installer/ets/@ohos.bundle.installerInner.ets index 4c81093a39..de740d56fc 100644 --- a/interfaces/kits/ani/bundle_installer/ets/@ohos.bundle.installerInner.ets +++ b/interfaces/kits/ani/bundle_installer/ets/@ohos.bundle.installerInner.ets @@ -77,6 +77,8 @@ export class PluginParamInner implements installer.PluginParam { parameters?: Array; } +const UNSPECIFIED_USERID: number = -2; + export class BundleInstallerInner implements installer.BundleInstaller { native installNative(hapFilePaths: Array, installParam: installer.InstallParam): void; native uninstallNative(bundleName: string, installParam: installer.InstallParam): void; @@ -356,7 +358,7 @@ export class BundleInstallerInner implements installer.BundleInstaller { } installPreexistingApp(bundleName: string, userId?: number): Promise { - let userIdNum = userId ?? -500; + let userIdNum = userId ?? UNSPECIFIED_USERID; let p = new Promise((resolve: (v:undefined) => void, reject: (error: BusinessError) => void):void => { let execFun = ():NullishType=>{ this.installPreexistingAppNative(bundleName, userIdNum); } let p1 = taskpool.execute(execFun); diff --git a/interfaces/kits/js/common/napi_constants.h b/interfaces/kits/js/common/napi_constants.h index 1e94bf5fc1..2ae29aa735 100644 --- a/interfaces/kits/js/common/napi_constants.h +++ b/interfaces/kits/js/common/napi_constants.h @@ -233,7 +233,7 @@ constexpr const char* RESOURCE_NAME_OF_INSTALL = "Install"; constexpr const char* RESOURCE_NAME_OF_UNINSTALL = "Uninstall"; constexpr const char* RESOURCE_NAME_OF_RECOVER = "Recover"; constexpr const char* RESOURCE_NAME_OF_UPDATE_BUNDLE_FOR_SELF = "UpdateBundleForSelf"; -constexpr const char* RESOURCE_NAME_OF_UNINSTALL_AND_RECOVER = "UninstallAndRecover"; +constexpr const char* RESOURCE_NAME_OF_UNINSTALL_AND_RECOVER = "UninstallUpdates"; constexpr const char* INSTALL_PERMISSION = "ohos.permission.INSTALL_BUNDLE or " "ohos.permission.INSTALL_ENTERPRISE_BUNDLE or " diff --git a/interfaces/kits/js/installer/installer.cpp b/interfaces/kits/js/installer/installer.cpp index e953cd074f..31acd1be0e 100644 --- a/interfaces/kits/js/installer/installer.cpp +++ b/interfaces/kits/js/installer/installer.cpp @@ -1319,7 +1319,7 @@ void RemoveExtResourceComplete(napi_env env, napi_status status, void *data) NAPI_CALL_RETURN_VOID(env, napi_get_null(env, &result[0])); } else { result[0] = BusinessError::CreateCommonError( - env, asyncCallbackInfo->err, REMOVE_EXT_RESOURCE, Constants::PERMISSION_INSTALL_BUNDLE); + env, asyncCallbackInfo->err, REMOVE_EXT_RESOURCE, UNINSTALL_PERMISSION); } CommonFunc::NapiReturnDeferred( -- Gitee