diff --git a/services/bundlemgr/src/base_bundle_installer.cpp b/services/bundlemgr/src/base_bundle_installer.cpp index e2469d8ea8d443fb438a6a62280373e1c293bbf9..db8e7ea6f7276df1377a6beff99efe2562596506 100644 --- a/services/bundlemgr/src/base_bundle_installer.cpp +++ b/services/bundlemgr/src/base_bundle_installer.cpp @@ -1380,6 +1380,10 @@ ErrCode BaseBundleInstaller::ProcessBundleUninstall( return ERR_APPEXECFWK_USER_NOT_EXIST; } + if (!CheckWhetherCanBeUninstalled(bundleName)) { + return ERR_APPEXECFWK_UNINSTALL_CONTROLLED; + } + auto &mtx = dataMgr_->GetBundleMutex(bundleName); std::lock_guard lock {mtx}; InnerBundleInfo oldInfo; @@ -1426,10 +1430,6 @@ ErrCode BaseBundleInstaller::ProcessBundleUninstall( return ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_UNINSTALL; } - if (!CheckWhetherCanBeUninstalled(bundleName)) { - return ERR_APPEXECFWK_UNINSTALL_CONTROLLED; - } - // reboot scan case will not kill the bundle if (installParam.noSkipsKill) { // kill the bundle process during uninstall.