# BundleInstaller (系统接å£) 本模å—æ供设备上安装ã€å‡çº§å’Œå¸è½½åº”用的能力。 > **说明:** > > 本模å—首批接å£ä»ŽAPI version 7 开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„新增接å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 > > 本模å—为系统接å£ã€‚ ## BundleInstaller.install<sup>(deprecated)<sup> > 从API version 9开始ä¸å†ç»´æŠ¤ï¼Œå»ºè®®ä½¿ç”¨[@ohos.bundle.installer.install](js-apis-installer-sys.md)替代。 install(bundleFilePaths: Array<string>, param: InstallParam, callback: AsyncCallback<InstallStatus>): void; 以异æ¥æ–¹æ³•åœ¨åº”用ä¸å®‰è£…hap,支æŒå¤šhap安装。使用callbackå½¢å¼è¿”回结果。 **需è¦æƒé™ï¼š** ohos.permission.INSTALL_BUNDLE **系统能力:** SystemCapability.BundleManager.BundleFramework **系统接å£ï¼š** æ¤æŽ¥å£ä¸ºç³»ç»ŸæŽ¥å£ã€‚ **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | --------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | bundleFilePaths | Array<string> | 是 | 指示å˜å‚¨HAP的沙箱路径。沙箱路径的获å–方法å‚è§[获å–应用的沙箱路径](#获å–应用的沙箱路径)。 | | param | [InstallParam](#installparamdeprecated) | 是 | 指定安装所需的其他å‚数。 | | callback | AsyncCallback<[InstallStatus](#installstatusdeprecated)> | 是 | 程åºå¯åŠ¨ä½œä¸ºå…¥å‚的回调函数,返回安装状æ€ä¿¡æ¯ã€‚ | **示例:** ```ts import bundleInstall from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let hapFilePaths: Array<string> = ['/data/storage/el2/base/haps/entry/files/']; let installParam: bundleInstall.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; bundleInstall.getBundleInstaller().then(installer => { installer.install(hapFilePaths, installParam, err => { if (err) { console.error('install failed:' + JSON.stringify(err)); } else { console.info('install successfully.'); } }); }).catch((error: BusinessError)=> { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); }); ``` ## BundleInstaller.uninstall<sup>(deprecated)<sup> > 从API version 9开始ä¸å†ç»´æŠ¤ï¼Œå»ºè®®ä½¿ç”¨[uninstall](js-apis-installer-sys.md)替代。 uninstall(bundleName: string, param: InstallParam, callback: AsyncCallback<InstallStatus>): void; 以异æ¥æ–¹æ³•å¸è½½åº”用程åºï¼Œä½¿ç”¨callback异æ¥å›žè°ƒï¼Œè¿”回安装状æ€ä¿¡æ¯ã€‚ **需è¦æƒé™ï¼š** ohos.permission.INSTALL_BUNDLE **系统能力:** SystemCapability.BundleManager.BundleFramework **系统接å£ï¼š** æ¤æŽ¥å£ä¸ºç³»ç»ŸæŽ¥å£ã€‚ **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ------------------------------------------------------------ | ---- | ---------------------------------------------- | | bundleName | string | 是 | 应用Bundleå称。 | | param | [InstallParam](#installparamdeprecated) | 是 | 指定å¸è½½æ‰€éœ€çš„其他å‚数。 | | callback | AsyncCallback<[InstallStatus](#installstatusdeprecated)> | 是 | 程åºå¯åŠ¨ä½œä¸ºå…¥å‚的回调函数,返回安装状æ€ä¿¡æ¯ã€‚ | **示例:** ```ts import bundleInstall from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName: string = 'com.example.myapplication'; let installParam: bundleInstall.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; bundleInstall.getBundleInstaller().then(installer => { installer.uninstall(bundleName, installParam, err => { if (err) { console.error('uninstall failed:' + JSON.stringify(err)); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); }); ``` ## BundleInstaller.recover<sup>(deprecated)<sup> > 从API version 9开始ä¸å†ç»´æŠ¤ï¼Œå»ºè®®ä½¿ç”¨[recover](js-apis-installer-sys.md)替代。 recover(bundleName: string, param: InstallParam, callback: AsyncCallback<InstallStatus>): void; 以异æ¥æ–¹æ³•æ¢å¤ä¸€ä¸ªåº”用程åºï¼Œä½¿ç”¨callbackå½¢å¼è¿”回结果。当预置应用被å¸è½½åŽï¼Œå¯ä»¥é€šè¿‡æ¤æŽ¥å£è¿›è¡Œæ¢å¤ã€‚ **需è¦æƒé™ï¼š** ohos.permission.INSTALL_BUNDLE **系统能力:** SystemCapability.BundleManager.BundleFramework **系统接å£ï¼š** æ¤æŽ¥å£ä¸ºç³»ç»ŸæŽ¥å£ã€‚ **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | ---------- | ------------------------------------------------------------ | ---- | -------------------------------------------------- | | bundleName | string | 是 | 应用Bundleå称。 | | param | [InstallParam](#installparamdeprecated) | 是 | 指定应用æ¢å¤æ‰€éœ€çš„其他å‚数。 | | callback | AsyncCallback<[InstallStatus](#installstatusdeprecated)> | 是 | 程åºå¯åŠ¨ä½œä¸ºå…¥å‚的回调函数,返回应用æ¢å¤çŠ¶æ€ä¿¡æ¯ã€‚ | **示例:** ```ts import bundleInstall from '@ohos.bundle.installer'; import { BusinessError } from '@ohos.base'; let bundleName: string = 'com.example.myapplication'; let installParam: bundleInstall.InstallParam = { userId: 100, isKeepData: false, installFlag: 1, }; bundleInstall.getBundleInstaller().then(installer => { installer.uninstall(bundleName, installParam, err => { if (err) { console.error('uninstall failed:' + JSON.stringify(err)); } else { console.info('uninstall successfully.'); } }); }).catch((error: BusinessError) => { let message = (error as BusinessError).message; console.error('getBundleInstaller failed. Cause: ' + message); }); ``` ## InstallParam<sup>(deprecated)<sup> 安装ã€æ¢å¤æˆ–å¸è½½æ—¶éœ€è¦æŒ‡å®šçš„å‚数。 **系统能力:** SystemCapability.BundleManager.BundleFramework **系统接å£ï¼š** æ¤æŽ¥å£ä¸ºç³»ç»ŸæŽ¥å£ã€‚ | å称 | 类型 | åªè¯» | å¯é€‰ | 说明 | | ----------- | ------- | ---- | ---- | ------------------ | | userId | number | å¦ | å¦ | 指示用户id, 默认值:调用方的userId | | installFlag | number | å¦ | å¦ | æŒ‡ç¤ºå®‰è£…æ ‡å¿—, 默认值:1, å–值范围:</br>1: 覆盖安装, </br>16: å…安装| | isKeepData | boolean | å¦ | å¦ | 指示å‚数是å¦æœ‰æ•°æ®ï¼Œé»˜è®¤å€¼ï¼šfalse | ## InstallStatus<sup>(deprecated)<sup> 应用程åºå®‰è£…å¸è½½çš„结果。 **系统能力:** SystemCapability.BundleManager.BundleFramework **系统接å£ï¼š** æ¤æŽ¥å£ä¸ºç³»ç»ŸæŽ¥å£ã€‚ | å称 | 类型 | åªè¯» | å¯é€‰ | 说明 | | ------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | | status | bundle.[InstallErrorCode](js-apis-Bundle.md#installerrorcode) | å¦ | å¦ | 表示安装或å¸è½½é”™è¯¯çŠ¶æ€ç 。å–值范围:枚举值[InstallErrorCode](js-apis-Bundle.md#installerrorcode) | | statusMessage | string | å¦ | å¦ | 表示安装或å¸è½½çš„å—符串结果信æ¯ã€‚å–值范围包括:<br/> "SUCCESS" : 安装æˆåŠŸï¼Œ</br> "STATUS_INSTALL_FAILURE": 安装失败(ä¸å˜åœ¨å®‰è£…文件), </br> "STATUS_INSTALL_FAILURE_ABORTED": 安装ä¸æ¢, </br> "STATUS_INSTALL_FAILURE_INVALID": 安装å‚æ•°æ— æ•ˆ, </br> "STATUS_INSTALL_FAILURE_CONFLICT": 安装冲çªï¼ˆå¸¸è§äºŽå‡çº§å’Œå·²æœ‰åº”用基本信æ¯ä¸ä¸€è‡´ï¼‰, </br> "STATUS_INSTALL_FAILURE_STORAGE": å˜å‚¨åŒ…ä¿¡æ¯å¤±è´¥, </br> "STATUS_INSTALL_FAILURE_INCOMPATIBLE": 安装ä¸å…¼å®¹ï¼ˆå¸¸è§äºŽç‰ˆæœ¬é™çº§å®‰è£…或者ç¾åä¿¡æ¯é”™è¯¯ï¼‰, </br> "STATUS_UNINSTALL_FAILURE": å¸è½½å¤±è´¥ï¼ˆä¸å˜åœ¨å¸è½½çš„应用), </br> "STATUS_UNINSTALL_FAILURE_ABORTED": å¸è½½ä¸æ¢ï¼ˆæ²¡æœ‰ä½¿ç”¨ï¼‰, </br> "STATUS_UNINSTALL_FAILURE_ABORTED": å¸è½½å†²çªï¼ˆå¸è½½ç³»ç»Ÿåº”用失败, 结æŸåº”用进程失败), </br> "STATUS_INSTALL_FAILURE_DOWNLOAD_TIMEOUT": 安装失败(下载超时), </br> "STATUS_INSTALL_FAILURE_DOWNLOAD_FAILED": 安装失败(下载失败), </br> "STATUS_RECOVER_FAILURE_INVALID": æ¢å¤é¢„置应用失败, </br> "STATUS_ABILITY_NOT_FOUND": Ability未找到, </br> "STATUS_BMS_SERVICE_ERROR": BMSæœåŠ¡é”™è¯¯, </br> "STATUS_FAILED_NO_SPACE_LEFT": 设备空间ä¸è¶³, </br> "STATUS_GRANT_REQUEST_PERMISSIONS_FAILED": 应用授æƒå¤±è´¥, </br> "STATUS_INSTALL_PERMISSION_DENIED": 缺少安装æƒé™, </br> "STATUS_UNINSTALL_PERMISSION_DENIED": 缺少å¸è½½æƒé™ | ## 获å–应用的沙箱路径 对于FA模型,应用的沙箱路径å¯ä»¥é€šè¿‡[Context](js-apis-inner-app-context.md)ä¸çš„方法获å–;对于Stage模型,应用的沙箱路径å¯ä»¥é€šè¿‡[Context](js-apis-inner-application-uiAbilityContext-sys.md#abilitycontext)ä¸çš„属性获å–。下é¢ä»¥èŽ·å–沙箱文件路径为例。 **示例:** ``` ts // Stage模型 import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let context = this.context; let pathDir = context.filesDir; console.info('sandbox path is ' + pathDir); } } ``` <!--code_no_check_fa--> ``` ts // FA模型 import featureAbility from '@ohos.ability.featureAbility'; let context = featureAbility.getContext(); context.getFilesDir().then((data: string) => { let pathDir = data; console.info('sandbox path is ' + pathDir); }); ```