# @ohos.bundle.installer (installer) (System API) The **bundle.installer** module provides APIs for you to install, uninstall, and recover bundles on devices. > **NOTE** > > The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. > > The APIs provided by this module are system APIs. ## Modules to Import ```js import installer from '@ohos.bundle.installer'; ``` ## Required Permissions | Permission | APL | Description | | ------------------------------ | ----------- | ---------------- | | ohos.permission.INSTALL_BUNDLE | system_core | Permission to install or uninstall other applications except enterprise applications, including enterprise InHouse, mobile device management (MDM), and Normal applications.| | ohos.permission.INSTALL_ENTERPRISE_BUNDLE | system_core | Permission to install enterprise InHouse applications.| | ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE | system_core | Permission to install enterprise MDM applications.| | ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE | system_core | Permission to install enterprise Normal applications.| | ohos.permission.UNINSTALL_BUNDLE | system_core | Allows an application to uninstall applications.| | ohos.permission.RECOVER_BUNDLE | system_core | Allows an application to restore pre-installed applications.| | ohos.permission.INSTALL_SELF_BUNDLE | system_core | Allows automatic updates of the enterprise MDM applications on enterprise devices.| | ohos.permission.INSTALL_INTERNALTESTING_BUNDLE | system_core | Allows an application to install beta applications.| For details about the APL, see [Basic Concepts in the Permission Mechanism](../../security/AccessToken/app-permission-mgmt-overview.md#basic-concepts-in-the-permission-mechanism). ## BundleInstaller.getBundleInstaller getBundleInstaller(callback: AsyncCallback\): void Obtains a **BundleInstaller** object. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation is successful, **err** is **null** and **data** is the **BundleInstaller** object obtained; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Incorrect parameter types. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; try { installer.getBundleInstaller((err: BusinessError, data: installer.BundleInstaller) => { if (err) { console.error('getBundleInstaller failed:' + err.message); } else { console.info('getBundleInstaller successfully'); } }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed:' + message); } ``` ## BundleInstaller.getBundleInstaller getBundleInstaller(): Promise\ Obtains a **BundleInstaller** object. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Return value** | Type | Description | | ------------------------------------------------------------ | ------------------------------------ | | Promise\ | Promise used to return the **BundleInstaller** object obtained.| **Error codes** For details about the error codes, see [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 202 | Permission verification failed. A non-system application calls a system API. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { console.info('getBundleInstaller successfully.'); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.getBundleInstallerSync10+ getBundleInstallerSync(): BundleInstaller Obtains a **BundleInstaller** object. This API is a synchronous API. **System API**: This is a system API. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Return value** | Type | Description | | ------------------------------------------------------------ | ------------------------------------ | | BundleInstaller | **BundleInstaller** object.| **Error codes** For details about the error codes, see [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 202 | Permission verification failed. A non-system application calls a system API. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; try { installer.getBundleInstallerSync(); console.info('getBundleInstallerSync successfully.'); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstallerSync failed. Cause: ' + message); } ``` ## BundleInstaller.install install(hapFilePaths: Array<string>, installParam: InstallParam, callback: AsyncCallback<void>): void Installs a bundle. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE, ohos.permission.INSTALL_ENTERPRISE_BUNDLE10+, ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE10+, or ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE10+ > **NOTE** > > From API version 10, this API can be called with the permission **ohos.permission.INSTALL_ENTERPRISE_BUNDLE**, **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE**, or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE**. > > To install an enterprise application, you must have the **ohos.permission.INSTALL_ENTERPRISE_BUNDLE** permission. > > To install an enterprise Normal application, you must have the **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE** or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install an enterprise MDM application, you must have the **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install a common application, you must have the **ohos.permission.INSTALL_BUNDLE** permission. > > To install a beta application, you must have the **ohos.permission.INSTALL_INTERNALTESTING_BUNDLE** permission. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | --------------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array<string> | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | installParam | [InstallParam](#installparam) | Yes | Parameters required for the installation. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter hapFiles is needed for code signature; 4. The size of specifiedDistributionType is greater than 128; 5. The size of additionalInfo is greater than 3000. | | 17700004 | The specified user ID is not found. | | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700031 | Failed to install the HAP because the overlay check of the HAP failed. | | 17700036 | Failed to install the HSP due to the lack of required permission. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700052 | Failed to install the HAP because a debug bundle can be installed only in developer mode. | | 17700054 | Failed to install the HAP because the HAP requests wrong permissions.| | 17700066 | Failed to install the HAP because installing the native package failed. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.install(hapFilePaths, installParam, (err: BusinessError) => { if (err) { console.error('install failed:' + err.message); } else { console.info('install successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.install install(hapFilePaths: Array<string>, callback: AsyncCallback<void>): void Installs a bundle. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE, ohos.permission.INSTALL_ENTERPRISE_BUNDLE10+, ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE10+, or ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE10+ > **NOTE** > > From API version 10, this API can be called with the permission **ohos.permission.INSTALL_ENTERPRISE_BUNDLE**, **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE**, or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE**. > > To install an enterprise application, you must have the **ohos.permission.INSTALL_ENTERPRISE_BUNDLE** permission. > > To install an enterprise Normal application, you must have the **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE** or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install an enterprise MDM application, you must have the **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install a common application, you must have the **ohos.permission.INSTALL_BUNDLE** permission. > > To install a beta application, you must have the **ohos.permission.INSTALL_INTERNALTESTING_BUNDLE** permission. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | --------------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array<string> | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700031 | Failed to install the HAP because the overlay check of the HAP failed. | | 17700036 | Failed to install the HSP due to the lack of required permission. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700052 | Failed to install the HAP because a debug bundle can be installed only in developer mode. | | 17700054 | Failed to install the HAP because the HAP requests wrong permissions.| | 17700066 | Failed to install the HAP because installing the native package failed. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.install(hapFilePaths, (err: BusinessError) => { if (err) { console.error('install failed:' + err.message); } else { console.info('install successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.install install(hapFilePaths: Array\, installParam?: InstallParam) : Promise\ Installs a bundle. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE, ohos.permission.INSTALL_ENTERPRISE_BUNDLE10+, ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE10+, or ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE10+ > **NOTE** > > From API version 10, this API can be called with the permission **ohos.permission.INSTALL_ENTERPRISE_BUNDLE**, **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE**, or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE**. > > To install an enterprise application, you must have the **ohos.permission.INSTALL_ENTERPRISE_BUNDLE** permission. > > To install an enterprise Normal application, you must have the **ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE** or **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install an enterprise MDM application, you must have the **ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE** permission. > > To install a common application, you must have the **ohos.permission.INSTALL_BUNDLE** permission. > > To install a beta application, you must have the **ohos.permission.INSTALL_INTERNALTESTING_BUNDLE** permission. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array\ | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | installParam | [InstallParam](#installparam) | No | Parameters required for the installation. For details about their default values, see [InstallParam](#installparam). | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE' or 'ohos.permission.INSTALL_ENTERPRISE_NORMAL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter hapFiles is needed for code signature; 4. The size of specifiedDistributionType is greater than 128; 5. The size of additionalInfo is greater than 3000. | | 17700004 | The specified user ID is not found. | | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700031 | Failed to install the HAP because the overlay check of the HAP failed. | | 17700036 | Failed to install the HSP due to the lack of required permission. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700052 | Failed to install the HAP because a debug bundle can be installed only in developer mode. | | 17700054 | Failed to install the HAP because the HAP requests wrong permissions.| | 17700066 | Failed to install the HAP because installing the native package failed. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.install(hapFilePaths, installParam) .then((data: void) => { console.info('install successfully: ' + JSON.stringify(data)); }).catch((error: BusinessError) => { console.error('install failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstall uninstall(bundleName: string, installParam: InstallParam, callback: AsyncCallback<void>): void Uninstalls a bundle. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | | bundleName | string | Yes | Name of the target bundle. | | installParam | [InstallParam](#installparam) | Yes | Parameters required for the installation. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700004 | The specified user ID is not found. | | 17700020 | The specified bundle is pre-installed bundle which cannot be uninstalled. | | 17700040 | The specified bundle is a shared bundle which cannot be uninstalled. | | 17700045 | Failed to uninstall the HAP because the uninstall is forbidden by enterprise device management. | | 17700060 | The specified application cannot be uninstalled. | | 17700067 | Failed to uninstall the HAP because uninstalling the native package failed. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1 }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstall(bundleName, installParam, (err: BusinessError) => { if (err) { console.error('uninstall failed:' + err.message); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstall uninstall(bundleName: string, callback: AsyncCallback<void>): void Uninstalls a bundle. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | | bundleName | string | Yes | Name of the target bundle. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700020 | The specified bundle is pre-installed bundle which cannot be uninstalled. | | 17700040 | The specified bundle is a shared bundle which cannot be uninstalled. | | 17700045 | Failed to uninstall the HAP because the uninstall is forbidden by enterprise device management. | | 17700060 | The specified application cannot be uninstalled. | | 17700067 | Failed to uninstall the HAP because uninstalling the native package failed. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstall(bundleName, (err: BusinessError) => { if (err) { console.error('uninstall failed:' + err.message); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstall uninstall(bundleName: string, installParam?: InstallParam) : Promise\ Uninstalls a bundle. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Name of the target bundle. | | installParam | [InstallParam](#installparam) | No | Parameters required for the installation. For details about their default values, see [InstallParam](#installparam). | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700004 | The specified user ID is not found. | | 17700020 | The specified bundle is pre-installed bundle which cannot be uninstalled. | | 17700040 | The specified bundle is a shared bundle which cannot be uninstalled. | | 17700045 | Failed to uninstall the HAP because the uninstall is forbidden by enterprise device management. | | 17700060 | The specified application cannot be uninstalled. | | 17700067 | Failed to uninstall the HAP because uninstalling the native package failed. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstall(bundleName, installParam) .then((data: void) => { console.info('uninstall successfully: ' + JSON.stringify(data)); }).catch((error: BusinessError) => { console.error('uninstall failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.recover recover(bundleName: string, installParam: InstallParam, callback: AsyncCallback<void>): void Rolls back a bundle to the initial installation state. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.RECOVER_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | | bundleName | string | Yes | Name of the target bundle. | | installParam | [InstallParam](#installparam) | Yes | Parameters required for the installation. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.RECOVER_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700004 | The specified user ID is not found. | | 17700058 | Failed to install the HAP because this application is prohibited from being installed on this device or by specified users. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1 }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.recover(bundleName, installParam, (err: BusinessError) => { if (err) { console.error('recover failed:' + err.message); } else { console.info('recover successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.recover recover(bundleName: string, callback: AsyncCallback<void>): void Rolls back a bundle to the initial installation state. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.RECOVER_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | | bundleName | string | Yes | Name of the target bundle. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.RECOVER_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700058 | Failed to install the HAP because this application is prohibited from being installed on this device or by specified users. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.recover(bundleName, (err: BusinessError) => { if (err) { console.error('recover failed:' + err.message); } else { console.info('recover successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.recover recover(bundleName: string, installParam?: InstallParam) : Promise\ Rolls back a bundle to the initial installation state. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.RECOVER_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Name of the target bundle. | | installParam | [InstallParam](#installparam) | No | Parameters required for the installation. For details about their default values, see [InstallParam](#installparam). | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.RECOVER_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700004 | The specified user ID is not found. | | 17700058 | Failed to install the HAP because this application is prohibited from being installed on this device or by specified users. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.demo'; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.recover(bundleName, installParam) .then((data: void) => { console.info('recover successfully: ' + JSON.stringify(data)); }).catch((error: BusinessError) => { console.error('recover failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstall10+ uninstall(uninstallParam: UninstallParam, callback : AsyncCallback\) : void Uninstalls a shared bundle. This API uses an asynchronous callback to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------- | ----------------------------------- | ---- | -------------------------------------------------------- | | uninstallParam | [UninstallParam](#uninstallparam10) | Yes | Parameters required for the uninstall. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700020 | The specified bundle is pre-installed bundle which cannot be uninstalled. | | 17700037 | The version of the shared bundle is dependent on other applications. | | 17700038 | The specified shared bundle does not exist. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let uninstallParam: installer.UninstallParam = { bundleName: "com.ohos.demo", }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstall(uninstallParam, (err: BusinessError) => { if (err) { console.error('uninstall failed:' + err.message); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstall10+ uninstall(uninstallParam: UninstallParam) : Promise\ Uninstalls a shared bundle. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------- | ----------------------------------- | ---- | ---------------------------- | | uninstallParam | [UninstallParam](#uninstallparam10) | Yes | Parameters required for the uninstall.| **Return value** | Type | Description | | ------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700020 | The specified bundle is pre-installed bundle which cannot be uninstalled. | | 17700037 | The version of the shared bundle is dependent on other applications. | | 17700038 | The specified shared bundle does not exist. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let uninstallParam: installer.UninstallParam = { bundleName: "com.ohos.demo", }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstall(uninstallParam, (err: BusinessError) => { if (err) { console.error('uninstall failed:' + err.message); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.addExtResource12+ addExtResource(bundleName: string, filePaths: Array\): Promise\; Adds extended resources based on the specified bundle name and HSP file path. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------- | ----------------------------------- | ---- | ---------------------------- | | bundleName | string | Yes | Bundle name of the application to which extended resources are to be added.| | filePaths | Array\ | Yes | Path of the extended resources to be added.| **Return value** | Type | Description | | ------------- | -------------------------------------- | | Promise\ | that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Permission denied. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundleName is not found. | | 17700301 | Failed to add extended resources. | **Example** ```ts import installer from '@ohos.bundle.installer'; import hilog from '@ohos.hilog'; import { BusinessError } from '@ohos.base'; let bundleName : string = 'com.ohos.demo'; let filePaths : Array = ['/data/storage/el2/base/a.hsp']; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.addExtResource(bundleName, filePaths).then((data) => { hilog.info(0x0000, 'testTag', 'addExtResource successfully'); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'addExtResource failed. Cause: %{public}s', err.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.removeExtResource12+ removeExtResource(bundleName: string, moduleNames: Array\): Promise\; Removes extended resources based on the specified bundle name and HSP file path. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.UNINSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | -------------- | ----------------------------------- | ---- | ---------------------------- | | bundleName | string | Yes | Bundle name of the application for which extended resources are to be removed.| | moduleNames | Array\ | Yes | Names of the modules whose extended resources are to be removed.| **Return value** | Type | Description | | ------------- | -------------------------------------- | | Promise\ | that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Permission denied. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundleName is not found. | | 17700302 | Failed to remove extended resources. | **Example** ```ts import installer from '@ohos.bundle.installer'; import hilog from '@ohos.hilog'; import { BusinessError } from '@ohos.base'; let bundleName : string = 'com.ohos.demo'; let moduleNames : Array = ['moduleTest']; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.removeExtResource(bundleName, moduleNames).then((data) => { hilog.info(0x0000, 'testTag', 'removeExtResource successfully'); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', 'removeExtResource failed. Cause: %{public}s', err.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.updateBundleForSelf10+ updateBundleForSelf(hapFilePaths: Array\, installParam: InstallParam, callback: AsyncCallback\): void Updates the current bundle. This API uses an asynchronous callback to return the result. It can be called only by enterprise MDM applications on enterprise devices, and the HAPs in **hapFilePaths** must belong to the current application. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_SELF_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | --------------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array<string> | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | installParam | [InstallParam](#installparam) | Yes | Parameters required for the installation. | | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_SELF_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter hapFiles is needed for code signature; 4. The size of specifiedDistributionType is greater than 128; 5. The size of additionalInfo is greater than 3000. | | 17700004 | The specified user ID is not found. | | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700049 | Failed to install the HAP because the bundleName is different from the bundleName of the caller application. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700051 | Failed to install the HAP because the distribution type of the caller application is not enterprise_mdm. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.updateBundleForSelf(hapFilePaths, installParam, (err: BusinessError) => { if (err) { console.error('updateBundleForSelf failed:' + err.message); } else { console.info('updateBundleForSelf successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.updateBundleForSelf10+ updateBundleForSelf(hapFilePaths: Array\, callback: AsyncCallback\): void Updates the current bundle. This API uses an asynchronous callback to return the result. It can be called only by enterprise MDM applications on enterprise devices, and the HAPs in **hapFilePaths** must belong to the current application. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_SELF_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | --------------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array<string> | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **null**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_SELF_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700049 | Failed to install the HAP because the bundleName is different from the bundleName of the caller application. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700051 | Failed to install the HAP because the distribution type of the caller application is not enterprise_mdm. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.updateBundleForSelf(hapFilePaths, (err: BusinessError) => { if (err) { console.error('updateBundleForSelf failed:' + err.message); } else { console.info('updateBundleForSelf successfully.'); } }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.updateBundleForSelf10+ updateBundleForSelf(hapFilePaths: Array\, installParam?: InstallParam): Promise\ Updates the current bundle. This API uses a promise to return the result. It can be called only by enterprise MDM applications on enterprise devices, and the HAPs in **hapFilePaths** must belong to the current application. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_SELF_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | --------------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | | hapFilePaths | Array<string> | Yes | Paths where the HAP files of the bundle are stored, which are the data directories. If only one directory is passed, the HAP files in the directory must belong to the same bundle and have the same signature.| | installParam | [InstallParam](#installparam) | No | Parameters required for the installation. For details about their default values, see [InstallParam](#installparam). | **Return value** | Type | Description | | ------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ------------------------------------------------------------ | | 201 | Calling interface without permission 'ohos.permission.INSTALL_SELF_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter hapFiles is needed for code signature; 4. The size of specifiedDistributionType is greater than 128; 5. The size of additionalInfo is greater than 3000. | | 17700004 | The specified user ID is not found. | | 17700010 | Failed to install the HAP because the HAP fails to be parsed. | | 17700011 | Failed to install the HAP because the HAP signature fails to be verified. | | 17700012 | Failed to install the HAP because the HAP path is invalid or the HAP is too large. | | 17700015 | Failed to install the HAPs because they have different configuration information. | | 17700016 | Failed to install the HAP because of insufficient system disk space. | | 17700017 | Failed to install the HAP since the version of the HAP to install is too early. | | 17700018 | Failed to install the HAP or HSP because the dependent module does not exist. | | 17700039 | Failed to install the HSP because installing a shared bundle specified by hapFilePaths is not allowed. | | 17700041 | Failed to install the HAP because the installation is forbidden by enterprise device management. | | 17700042 | Failed to install the HAP because of incorrect URI in the data proxy. | | 17700043 | Failed to install the HAP because of low APL in the non-system data proxy (required APL: system_basic or system_core). | | 17700044 | Failed to install the HAP because the isolationMode configured is not supported. | | 17700047 | Failed to install the HAP because the VersionCode to be updated is not greater than the current VersionCode. | | 17700048 | Failed to install the HAP because the code signature verification failed. | | 17700049 | Failed to install the HAP because the bundleName is different from the bundleName of the caller application. | | 17700050 | Failed to install the HAP because an enterprise normal/MDM bundle cannot be installed on non-enterprise devices. | | 17700051 | Failed to install the HAP because the distribution type of the caller application is not enterprise_mdm. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths = ['/data/storage/el2/base/haps/entry/files/']; let installParam: installer.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.updateBundleForSelf(hapFilePaths, installParam) .then((data: void) => { console.info('updateBundleForSelf successfully: ' + JSON.stringify(data)); }).catch((error: BusinessError) => { console.error('updateBundleForSelf failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.uninstallUpdates12+ uninstallUpdates(bundleName: string, installParam?: InstallParam): Promise\; Uninstalls and updates a pre-installed application and restores it to the initial installation status. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE or ohos.permission.RECOVER_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Name of the target bundle. | | installParam | [InstallParam](#installparam) | No | Parameters required for the uninstall and update. For details about their default values, see [InstallParam](#installparam). The **userId** parameter cannot be specified. Calling this API will uninstall and update the application for all users.| **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE' or 'ohos.permission.UNINSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundle name is not found. | | 17700045 | Failed to uninstall the HAP because the uninstall is forbidden by enterprise device management. | | 17700057 | Failed to uninstall updates because the HAP is not pre-installed. | | 17700060 | The specified application cannot be uninstalled. | | 17700067 | Failed to uninstall the HAP because uninstalling the native package failed. | | 17700073 | Failed to install the HAP because an application with the same bundle name but different signature information exists on the device. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.camera'; let installParam: installer.InstallParam = { isKeepData: true, installFlag: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.uninstallUpdates(bundleName, installParam) .then(() => { console.info('uninstallUpdates successfully.'); }).catch((error: BusinessError) => { console.error('uninstallUpdates failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.createAppClone12+ createAppClone(bundleName: string, createAppCloneParam?: CreateAppCloneParam): Promise\; Creates an application clone. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_CLONE_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Bundle name of the application for which a clone is to be created. | | createAppCloneParam | [createAppCloneParam](#createappcloneparam12) | No | Other parameters required for creating the clone. For details about the default values of these parameters, see [createAppCloneParam](#createappcloneparam12). | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise used to return the index of the application clone.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_CLONE_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundleName cannot be found or the bundle is not installed by the specified user. | | 17700004 | The userId is invalid. | | 17700061 | The appIndex is not in valid range or already exists. | | 17700069 | The app does not support the creation of an appClone instance. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.camera'; let createAppCloneParam: installer.CreateAppCloneParam = { userId: 100, appIndex: 1, }; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.createAppClone(bundleName, createAppCloneParam) .then(() => { console.info('createAppClone successfully.'); }).catch((error: BusinessError) => { console.error('createAppClone failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.destroyAppClone12+ destroyAppClone(bundleName: string, appIndex: number, userId?: number): Promise\; Destroys an application clone. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.UNINSTALL_CLONE_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Bundle name of the application for which a clone is to be destroyed. | | appIndex | number | Yes | Index of the clone to destroy. | | userId | number | No | ID of the user to whom the clone to destroy belongs. The default value is the user ID of the caller. | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.UNINSTALL_CLONE_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundleName cannot be found or the bundle is not installed by the specified user. | | 17700004 | The userId is invalid. | | 17700061 | The appIndex is invalid. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.camera'; let index = 1; let userId = 100; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.destroyAppClone(bundleName, index, userId) .then(() => { console.info('destroyAppClone successfully.'); }).catch((error: BusinessError) => { console.error('destroyAppClone failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## BundleInstaller.installPreexistingApp12+ installPreexistingApp(bundleName: string, userId?: number): Promise\; Installs a bundle. This API uses a promise to return the result. **System API**: This is a system API. **Required permissions**: ohos.permission.INSTALL_BUNDLE **System capability**: SystemCapability.BundleManager.BundleFramework.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Bundle name of the application to install. | | userId | number | No | ID of the user for whom the application is to be installed. The value must be greater than 0. The default value is the user ID of the caller. | **Return value** | Type | Description | | --------------- | -------------------------------------- | | Promise\ | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Bundle Error Codes](errorcode-bundle.md). | ID| Error Message | | -------- | ----------------------------------- | | 201 | Calling interface without permission 'ohos.permission.INSTALL_BUNDLE'. | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| | 17700001 | The specified bundleName cannot be found. | | 17700004 | The userId is invalid. | | 17700071 | It is not allowed to install the enterprise bundle. | | 17700058 | Failed to install the HAP because this application is prohibited from being installed on this device or by specified users. | **Example** ```ts import installer from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName = 'com.ohos.camera'; let userId = 100; try { installer.getBundleInstaller().then((data: installer.BundleInstaller) => { data.installPreexistingApp(bundleName, userId) .then(() => { console.info('installPreexistingApp successfully.'); }).catch((error: BusinessError) => { console.error('installPreexistingApp failed:' + error.message); }); }).catch((error: BusinessError) => { console.error('getBundleInstaller failed. Cause: ' + error.message); }); } catch (error) { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); } ``` ## HashParam Defines the hash parameters for bundle installation and uninstall. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory| Description | | ---------- | ------ | ---------------- | ---------------- | | moduleName | string | Yes| Module name of the bundle.| | hashValue | string | Yes| Hash value. | ## InstallParam Defines the parameters that need to be specified for bundle installation, uninstall, or recovering. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory | Description | | ------------------------------ | ------------------------------ | ------------------ | ------------------ | | userId | number | No | User ID. The default value is the user ID of the caller. The value must be greater than or equal to 0. You can call [queryOsAccountLocalIdFromProcess](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9) to obtain the user ID of the current process. When a driver application is installed, uninstalled, or restored, this parameter is ignored and the operation is executed for all users.| | installFlag | number | No | Installation flag. The value **0x00** means initial installation, **0x01** means overwrite installation, and **0x10** means installation-free. The default value is **0x00**.| | isKeepData | boolean | No | Whether to retain the data directory during bundle uninstall. The default value is **false**.| | hashParams | Array<[HashParam](#hashparam)> | No| Hash parameters. By default, no value is passed. | | crowdtestDeadline| number | No | End date of crowdtesting. The default value is **-1**, indicating that no end date is specified for crowdtesting.| | sharedBundleDirPaths10+ | Array\ | No|Paths of the shared bundle files. By default, no value is passed.| | specifiedDistributionType10+ | string | No|Distribution type specified during application installation. By default, no value is passed. The maximum length is 128 bytes. This field is usually specified by the application market of the operating system operator.| | additionalInfo10+ | string | No|Additional information during application installation (usually an enterprise application). By default, no value is passed. The maximum length is 3,000 bytes. This field is usually specified by the application market of the operating system operator.| | verifyCodeParamsdeprecated | Array<[VerifyCodeParam](#verifycodeparamdeprecated)> | No| Information about the code signature file. The default value is null. | | pgoParams11+ | Array<[PGOParam](#pgoparam11)> | No| Parameters of the Profile-guided Optimization (PGO) configuration file. The default value is null. | ## UninstallParam10+ Defines the parameters required for the uninstall of a shared bundle. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | ------------------------------------------------------------ | | bundleName | string | Yes | Name of the shared bundle. | | versionCode | number | No | Version number of the shared bundle. By default, no value is passed, and all shared bundles of the specified name are uninstalled.| ## VerifyCodeParamdeprecated > Since API version 11, the code signature file of an application is integrated into the installation package, rather than being specified by using this field. Defines the information about the code signature file. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory| Description | | ---------- | ------ | ---------------- | ---------------- | | moduleName | string | Yes| Module name of the bundle.| | signatureFilePath | string | Yes| Path of the code signature file. | ## PGOParam11+ Defines the parameters of the PGO configuration file. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory| Description | | ---------- | ------ | ---------------- | ---------------- | | moduleName | string | Yes| Module name of the bundle.| | pgoFilePath | string | Yes| Path of the PGO configuration file. | ## CreateAppCloneParam12+ Describes the parameters used for creating an application clone. **System capability**: SystemCapability.BundleManager.BundleFramework.Core **System API**: This is a system API. | Name | Type | Mandatory| Description | | ----------- | ------ | ---- | ------------------------------------------------------------ | | userId | number | No | ID of the user for whom the clone is created. The default value is the user ID of the caller. | | appIndex | number | No | Index of the clone. The default value is the currently available minimum index. |