# Bundle.freeInstall模块(JS端SDK接口) 本模块提供免安装相关的设置和查询能力,支持BundlePackInfo、DispatchInfo等信息的查询 > **说明:** > > 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 本模块接口为系统接口。 ## 导入模块 ```js import freeInstall from '@ohos.bundle.freeInstall'; ``` ## 权限列表 | 权限 | 权限等级 | 描述 | | ------------------------------------------ | ------------ | ------------------ | | ohos.permission.GET_BUNDLE_INFO_PRIVILEGED | system_basic | 可查询所有应用信息 | | ohos.permission.INSTALL_BUNDLE | system_core | 可安装、卸载应用 | 权限等级参考[权限等级说明](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/accesstoken-overview.md#%E6%9D%83%E9%99%90%E7%AD%89%E7%BA%A7%E8%AF%B4%E6%98%8E) ## UpgradeFlag **系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall | 名称 | 值 | 说明 | | ----------------------------- | ---- | ---------------- | | NOT_UPGRADE | 0 | 模块无需升级 | | SINGLE_UPGRADE | 1 | 单个模块需要升级 | | RELATION_UPGRADE | 2 | 关系模块需要升级 | ## BundlePackFlag **系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall | 名称 | 值 | 说明 | | ------------------ | ---------- | ---------------------------------- | | GET_PACK_INFO_ALL | 0x00000000 | 获取应用包pack.info的所有信息。 | | GET_PACKAGES | 0x00000001 | 获取应用包pack.info的package信息。 | | GET_BUNDLE_SUMMARY | 0x00000002 | 获取应用包pack.info的bundle摘要信息。 | | GET_MODULE_SUMMARY | 0x00000004 | 获取应用包pack.info的module摘要信息。 | ## freeInstall.setHapModuleUpgradeFlag setHapModuleUpgradeFlag(bundleName: string, moduleName: string, upgradeFlag: UpgradeFlag, callback: AsyncCallback\):void; 设置指定模块是否升级。使用callback异步回调。 **需要权限:** ohos.permission.INSTALL_BUNDLE **系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | ----------- | --------------------------- | ---- | ---------------------------- | | bundleName | string | 是 | 应用程序包名称。 | | moduleName | string | 是 | 应用程序模块名称。 | | upgradeFlag | [UpgradeFlag](#upgradeflag) | 是 | 仅供内部系统使用标志位 | | callback | AsyncCallback\ | 是 | 回调函数。当函数调用成功,err为null,否则为错误对象 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | | 17700002 | The specified module name is not found. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let moduleName = 'entry'; let upgradeFlag = freeInstall.UpgradeFlag.SINGLE_UPGRADE; try { freeInstall.setHapModuleUpgradeFlag(bundleName, moduleName, upgradeFlag, err => { if (err) { console.error('Operation failed:' + JSON.stringify(err)); } else { console.info('Operation succeed'); } }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## setHapModuleUpgradeFlag setHapModuleUpgradeFlag(bundleName: string, moduleName: string, upgradeFlag: UpgradeFlag): Promise\; 设置指定模块是否升级。使用Promise异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.INSTALL_BUNDLE **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | ----------- | --------------------------- | ---- | ---------------------- | | bundleName | string | 是 | 应用程序包名称。 | | moduleName | string | 是 | 应用程序模块名称。 | | upgradeFlag | [UpgradeFlag](#upgradeflag) | 是 | 仅供内部系统使用标志位 | **返回值:** | 类型 | 说明 | | ------------- | ------------------------------------ | | Promise\ | Promise对象。无返回结果的Promise对象 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | | 17700002 | The specified module name is not found. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let moduleName = 'entry'; let upgradeFlag = freeInstall.UpgradeFlag.SINGLE_UPGRADE; try { freeInstall.setHapModuleUpgradeFlag(bundleName, moduleName, upgradeFlag).then(() => { console.info('Operation succeed') }).catch(err => { console.error('Operation failed:' + JSON.stringify(err)); }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## isHapModuleRemovable isHapModuleRemovable(bundleName: string, moduleName: string, callback: AsyncCallback\): void; 查询指定模块是否可以被移除。使用callback异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | ---------- | ---------------------- | ---- | --------------------------------------------- | | bundleName | string | 是 | 应用程序包名称。 | | moduleName | string | 是 | 应用程序模块名称。 | | callback | AsyncCallback\ | 是 | 回调函数。返回true表示可以移除;返回false表示不可移除。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | | 17700002 | The specified module name is not found. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let moduleName = 'entry'; try { freeInstall.isHapModuleRemovable(bundleName, moduleName, (err, data) => { if (err) { console.error('Operation failed:' + JSON.stringify(err)); } else { console.info('Operation succeed:' + JSON.stringify(data)); } }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## isHapModuleRemovable isHapModuleRemovable(bundleName: string, moduleName: string): Promise\; 查询指定模块是否可以被移除。使用Promise异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | ---------- | ------ | ---- | ------------------ | | bundleName | string | 是 | 应用程序包名称。 | | moduleName | string | 是 | 应用程序模块名称。 | **返回值:** | 类型 | 说明 | | ---------------- | ---------------------------- | | Promise\ | Promise对象。返回true表示可以移除;返回false表示不可移除。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | | 17700002 | The specified module name is not found. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let moduleName = 'entry'; try { freeInstall.isHapModuleRemovable(bundleName, moduleName).then(data => { console.info('Operation succeed:' + JSON.stringify(data)); }).catch(err => { console.error('Operation failed:' + JSON.stringify(err)); }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## getBundlePackInfo getBundlePackInfo(bundleName: string, bundlePackFlag : BundlePackFlag, callback: AsyncCallback\): void; 基于bundleName和bundlePackFlag来获取bundlePackInfo。使用callback异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | -------------- | ------------------------------------------------------------ | ---- | ---------------------------------------------------- | | bundleName | string | 是 | 应用程序包名称。 | | bundlePackFlag | [BundlePackFlag](#bundlepackflag) | 是 | 指示要查询的应用包标志 | | callback | AsyncCallback<[BundlePackInfo](js-apis-bundleManager-packInfo.md)> | 是 | 回调函数。当函数调用成功,err为null,data为获取到的BundlePackInfo信息。否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let bundlePackFlag = freeInstall.BundlePackFlag.GET_PACK_INFO_ALL; try { freeInstall.getBundlePackInfo(bundleName, bundlePackFlag, (err, data) => { if (err) { console.error('Operation failed:' + JSON.stringify(err)); } else { console.info('Operation succeed:' + JSON.stringify(data)); } }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## getBundlePackInfo getBundlePackInfo(bundleName: string, bundlePackFlag : BundlePackFlag): Promise\; 基于bundleName和bundleFlag来获取bundlePackInfo。使用Promise异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | -------------- | ------------------------------------------------- | ---- | ---------------------- | | bundleName | string | 是 | 应用程序包名称。 | | bundlePackFlag | [BundlePackFlag](#bundlepackflag) | 是 | 指示要查询的应用包标志 | **返回值:** | 类型 | 说明 | | ---------------------------------------------------------- | ----------------------------------- | | Promise<[BundlePackInfo](js-apis-bundleManager-packInfo.md)> | Promise对象,返回BundlePackInfo信息。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 401 | The parameter check failed. | | 801 | Capability not supported. | | 17700001 | The specified bundle name is not found | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; let bundleName = 'com.example.myapplication'; let bundlePackFlag = freeInstall.BundlePackFlag.GET_PACK_INFO_ALL; try { freeInstall.getBundlePackInfo(bundleName, bundlePackFlag).then(data => { console.info('Operation succeed:' + JSON.stringify(data)); }).catch(err => { console.error('Operation failed:' + JSON.stringify(err)); }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## getDispatchInfo getDispatchInfo(callback: AsyncCallback\): void; 获取有关dispatch版本的信息。使用callback异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **参数:** | 名称 | 类型 | 必填 | 描述 | | -------- | ------------------------------------------------------ | ---- | ------------------------------------------------------------ | | callback | AsyncCallback<[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)> | 是 | 回调函数。当函数调用成功,err为null,data为获取到的[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)信息。否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 801 | Capability not supported. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; try { freeInstall.getDispatchInfo((err, data) => { if (err) { console.error('Operation failed:' + JSON.stringify(err)); } else { console.info('Operation succeed:' + JSON.stringify(data)); } }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ``` ## getDispatchInfo getDispatchInfo(): Promise\; 获取有关dispatch版本的信息。使用Promise异步回调。 **系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED **系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall **返回值:** | 类型 | 说明 | | ------------------------------------------------ | ------------------------------------------------------------ | | Promise<[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)> | Promise对象,返回[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)信息。 | **错误码:** 以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errcode-bundle.md)。 | 错误码ID | 错误新息(此处仅提供错误抛出的关键信息) | |---------------|-------------------------| | 201 | Permission denied.| | 801 | Capability not supported. | **示例:** ```js import freeInstall from '@ohos.bundle.freeInstall'; try { freeInstall.getDispatchInfo().then(data => { console.info('Operation succeed:' + JSON.stringify(data)); }).catch(err => { console.error('Operation failed:' + JSON.stringify(err)); }); } catch (err) { console.error('Operation failed:' + JSON.stringify(err)); } ```