1# @ohos.bundle.freeInstall (freeInstall模块) 2 3本模块提供免安装相关的设置和查询能力,支持BundlePackInfo、DispatchInfo等信息的查询 4 5> **说明:** 6> 7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9本模块接口为系统接口。 10 11## 导入模块 12 13```js 14import freeInstall from '@ohos.bundle.freeInstall'; 15``` 16 17## 权限列表 18 19| 权限 | 权限等级 | 描述 | 20| ------------------------------------------ | ------------ | ------------------ | 21| ohos.permission.GET_BUNDLE_INFO_PRIVILEGED | system_basic | 可查询所有应用信息。 | 22| ohos.permission.INSTALL_BUNDLE | system_core | 可安装、卸载应用。 | 23 24权限等级参考[权限等级说明](../../security/accesstoken-overview.md#权限等级说明)。 25## UpgradeFlag 26 27**系统接口:** 此接口为系统接口。 28 29**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 30 31| 名称 | 值 | 说明 | 32| ---------------- | ---- | ---------------- | 33| NOT_UPGRADE | 0 | 模块无需升级。 | 34| SINGLE_UPGRADE | 1 | 单个模块需要升级。 | 35| RELATION_UPGRADE | 2 | 关系模块需要升级。 | 36 37## BundlePackFlag 38 39**系统接口:** 此接口为系统接口。 40 41**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 42 43| 名称 | 值 | 说明 | 44| ------------------ | ---------- | ---------------------------------- | 45| GET_PACK_INFO_ALL | 0x00000000 | 获取应用包pack.info的所有信息。 | 46| GET_PACKAGES | 0x00000001 | 获取应用包pack.info的package信息。 | 47| GET_BUNDLE_SUMMARY | 0x00000002 | 获取应用包pack.info的bundle摘要信息。 | 48| GET_MODULE_SUMMARY | 0x00000004 | 获取应用包pack.info的module摘要信息。 | 49 50## freeInstall.setHapModuleUpgradeFlag 51 52setHapModuleUpgradeFlag(bundleName: string, moduleName: string, upgradeFlag: UpgradeFlag, callback: AsyncCallback\<void>):void; 53 54设置指定模块是否升级。使用callback异步回调。 55 56**需要权限:** ohos.permission.INSTALL_BUNDLE 57 58**系统接口:** 此接口为系统接口。 59 60**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 61 62**参数:** 63 64| 参数名 | 类型 | 必填 | 说明 | 65| ----------- | --------------------------- | ---- | ---------------------------- | 66| bundleName | string | 是 | 应用程序包名称。 | 67| moduleName | string | 是 | 应用程序模块名称。 | 68| upgradeFlag | [UpgradeFlag](#upgradeflag) | 是 | 仅供内部系统使用标志位 | 69| callback | AsyncCallback\<void> | 是 | 回调函数。当函数调用成功,err为null,否则为错误对象。 | 70 71**错误码:** 72 73以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 74 75| 错误码ID | 错误信息 | 76|----------|---------------------------------------- | 77| 17700001 | The specified bundle name is not found. | 78| 17700002 | The specified module name is not found. | 79 80**示例:** 81 82```js 83import freeInstall from '@ohos.bundle.freeInstall'; 84let bundleName = 'com.example.myapplication'; 85let moduleName = 'entry'; 86let upgradeFlag = freeInstall.UpgradeFlag.SINGLE_UPGRADE; 87try { 88 freeInstall.setHapModuleUpgradeFlag(bundleName, moduleName, upgradeFlag, err => { 89 if (err) { 90 console.error('Operation failed:' + JSON.stringify(err)); 91 } else { 92 console.info('Operation succeed'); 93 } 94 }); 95} catch (err) { 96 console.error('Operation failed:' + JSON.stringify(err)); 97} 98``` 99 100## setHapModuleUpgradeFlag 101 102setHapModuleUpgradeFlag(bundleName: string, moduleName: string, upgradeFlag: UpgradeFlag): Promise\<void>; 103 104设置指定模块是否升级。使用Promise异步回调。 105 106**系统接口:** 此接口为系统接口。 107 108**需要权限:** ohos.permission.INSTALL_BUNDLE 109 110**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 111 112**参数:** 113 114| 参数名 | 类型 | 必填 | 说明 | 115| ----------- | --------------------------- | ---- | ---------------------- | 116| bundleName | string | 是 | 应用程序包名称。 | 117| moduleName | string | 是 | 应用程序模块名称。 | 118| upgradeFlag | [UpgradeFlag](#upgradeflag) | 是 | 仅供内部系统使用标志位。| 119 120**返回值:** 121 122| 类型 | 说明 | 123| ------------- | ------------------------------------ | 124| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 125 126**错误码:** 127 128以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 129 130| 错误码ID | 错误信息 | 131|----------|----------------------------------------| 132| 17700001 | The specified bundle name is not found. | 133| 17700002 | The specified module name is not found. | 134 135**示例:** 136 137```js 138import freeInstall from '@ohos.bundle.freeInstall'; 139let bundleName = 'com.example.myapplication'; 140let moduleName = 'entry'; 141let upgradeFlag = freeInstall.UpgradeFlag.SINGLE_UPGRADE; 142try { 143 freeInstall.setHapModuleUpgradeFlag(bundleName, moduleName, upgradeFlag).then(() => { 144 console.info('Operation succeed') 145 }).catch(err => { 146 console.error('Operation failed:' + JSON.stringify(err)); 147 }); 148} catch (err) { 149 console.error('Operation failed:' + JSON.stringify(err)); 150} 151``` 152 153## isHapModuleRemovable 154 155isHapModuleRemovable(bundleName: string, moduleName: string, callback: AsyncCallback\<boolean>): void; 156 157查询指定模块是否可以被移除。使用callback异步回调。 158 159**系统接口:** 此接口为系统接口。 160 161**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 162 163**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 164 165**参数:** 166 167| 参数名 | 类型 | 必填 | 说明 | 168| ---------- | ---------------------- | ---- | --------------------------------------------- | 169| bundleName | string | 是 | 应用程序包名称。 | 170| moduleName | string | 是 | 应用程序模块名称。 | 171| callback | AsyncCallback\<boolean> | 是 | 回调函数。返回true表示可以移除;返回false表示不可移除。 | 172 173**错误码:** 174 175以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 176 177| 错误码ID | 错误信息 | 178|----------|----------------------------------------| 179| 17700001 | The specified bundle name is not found. | 180| 17700002 | The specified module name is not found. | 181 182**示例:** 183 184```js 185import freeInstall from '@ohos.bundle.freeInstall'; 186let bundleName = 'com.example.myapplication'; 187let moduleName = 'entry'; 188try { 189 freeInstall.isHapModuleRemovable(bundleName, moduleName, (err, data) => { 190 if (err) { 191 console.error('Operation failed:' + JSON.stringify(err)); 192 } else { 193 console.info('Operation succeed:' + JSON.stringify(data)); 194 } 195 }); 196} catch (err) { 197 console.error('Operation failed:' + JSON.stringify(err)); 198} 199``` 200 201## isHapModuleRemovable 202 203isHapModuleRemovable(bundleName: string, moduleName: string): Promise\<boolean>; 204 205查询指定模块是否可以被移除。使用Promise异步回调。 206 207**系统接口:** 此接口为系统接口。 208 209**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 210 211**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 212 213**参数:** 214 215| 参数名 | 类型 | 必填 | 说明 | 216| ---------- | ------ | ---- | ------------------ | 217| bundleName | string | 是 | 应用程序包名称。 | 218| moduleName | string | 是 | 应用程序模块名称。 | 219 220**返回值:** 221 222| 类型 | 说明 | 223| ---------------- | ---------------------------- | 224| Promise\<boolean> | Promise对象。返回true表示可以移除;返回false表示不可移除。 | 225 226**错误码:** 227 228以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 229 230| 错误码ID | 错误信息 | 231|----------|----------------------------------------| 232| 17700001 | The specified bundle name is not found. | 233| 17700002 | The specified module name is not found. | 234 235**示例:** 236 237```js 238import freeInstall from '@ohos.bundle.freeInstall'; 239let bundleName = 'com.example.myapplication'; 240let moduleName = 'entry'; 241try { 242 freeInstall.isHapModuleRemovable(bundleName, moduleName).then(data => { 243 console.info('Operation succeed:' + JSON.stringify(data)); 244 }).catch(err => { 245 console.error('Operation failed:' + JSON.stringify(err)); 246 }); 247} catch (err) { 248 console.error('Operation failed:' + JSON.stringify(err)); 249} 250``` 251 252## getBundlePackInfo 253 254getBundlePackInfo(bundleName: string, bundlePackFlag : BundlePackFlag, callback: AsyncCallback\<BundlePackInfo>): void; 255 256基于bundleName和bundlePackFlag来获取bundlePackInfo。使用callback异步回调。 257 258**系统接口:** 此接口为系统接口。 259 260**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 261 262**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 263 264**参数:** 265 266| 参数名 | 类型 | 必填 | 说明 | 267| -------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 268| bundleName | string | 是 | 应用程序包名称。 | 269| bundlePackFlag | [BundlePackFlag](#bundlepackflag) | 是 | 指示要查询的应用包标志。 | 270| callback | AsyncCallback<[BundlePackInfo](js-apis-bundleManager-BundlePackInfo.md)> | 是 | 回调函数。当函数调用成功,err为null,data为获取到的BundlePackInfo信息。否则为错误对象。 | 271 272**错误码:** 273 274以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 275 276| 错误码ID | 错误信息 | 277|----------|----------------------------------------| 278| 17700001 | The specified bundle name is not found. | 279 280**示例:** 281 282```js 283import freeInstall from '@ohos.bundle.freeInstall'; 284let bundleName = 'com.example.myapplication'; 285let bundlePackFlag = freeInstall.BundlePackFlag.GET_PACK_INFO_ALL; 286try { 287 freeInstall.getBundlePackInfo(bundleName, bundlePackFlag, (err, data) => { 288 if (err) { 289 console.error('Operation failed:' + JSON.stringify(err)); 290 } else { 291 console.info('Operation succeed:' + JSON.stringify(data)); 292 } 293 }); 294} catch (err) { 295 console.error('Operation failed:' + JSON.stringify(err)); 296} 297``` 298## getBundlePackInfo 299 300getBundlePackInfo(bundleName: string, bundlePackFlag : BundlePackFlag): Promise\<BundlePackInfo>; 301 302基于bundleName和bundleFlag来获取bundlePackInfo。使用Promise异步回调。 303 304**系统接口:** 此接口为系统接口。 305 306**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 307 308**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 309 310**参数:** 311 312| 参数名 | 类型 | 必填 | 说明 | 313| -------------- | --------------------------------- | ---- | ---------------------- | 314| bundleName | string | 是 | 应用程序包名称。 | 315| bundlePackFlag | [BundlePackFlag](#bundlepackflag) | 是 | 指示要查询的应用包标志。| 316 317**返回值:** 318 319| 类型 | 说明 | 320| ---------------------------------------------------------- | ----------------------------------- | 321| Promise<[BundlePackInfo](js-apis-bundleManager-BundlePackInfo.md)> | Promise对象,返回BundlePackInfo信息。 | 322 323**错误码:** 324 325以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 326 327| 错误码ID | 错误信息 | 328|----------|----------------------------------------| 329| 17700001 | The specified bundle name is not found. | 330 331**示例:** 332 333```js 334import freeInstall from '@ohos.bundle.freeInstall'; 335let bundleName = 'com.example.myapplication'; 336let bundlePackFlag = freeInstall.BundlePackFlag.GET_PACK_INFO_ALL; 337try { 338 freeInstall.getBundlePackInfo(bundleName, bundlePackFlag).then(data => { 339 console.info('Operation succeed:' + JSON.stringify(data)); 340 }).catch(err => { 341 console.error('Operation failed:' + JSON.stringify(err)); 342 }); 343} catch (err) { 344 console.error('Operation failed:' + JSON.stringify(err)); 345} 346``` 347 348## getDispatchInfo 349 350getDispatchInfo(callback: AsyncCallback\<DispatchInfo>): void; 351 352获取有关dispatch版本的信息。使用callback异步回调。 353 354**系统接口:** 此接口为系统接口。 355 356**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 357 358**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 359 360**参数:** 361 362| 参数名 | 类型 | 必填 | 说明 | 363| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 364| callback | AsyncCallback<[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)> | 是 | 回调函数。当函数调用成功,err为null,data为获取到的[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)信息。否则为错误对象。 | 365 366**示例:** 367 368```js 369import freeInstall from '@ohos.bundle.freeInstall'; 370try { 371 freeInstall.getDispatchInfo((err, data) => { 372 if (err) { 373 console.error('Operation failed:' + JSON.stringify(err)); 374 } else { 375 console.info('Operation succeed:' + JSON.stringify(data)); 376 } 377 }); 378} catch (err) { 379 console.error('Operation failed:' + JSON.stringify(err)); 380} 381``` 382 383## getDispatchInfo 384 385getDispatchInfo(): Promise\<DispatchInfo>; 386 387获取有关dispatch版本的信息。使用Promise异步回调。 388 389**系统接口:** 此接口为系统接口。 390 391**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 392 393**系统能力:** SystemCapability.BundleManager.BundleFramework.FreeInstall 394 395**返回值:** 396 397| 类型 | 说明 | 398| ------------------------------------------------ | ------------------------------------------------------------ | 399| Promise<[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)> | Promise对象,返回[DispatchInfo](js-apis-bundleManager-dispatchInfo.md)信息。 | 400 401**示例:** 402 403```js 404import freeInstall from '@ohos.bundle.freeInstall'; 405try { 406 freeInstall.getDispatchInfo().then(data => { 407 console.info('Operation succeed:' + JSON.stringify(data)); 408 }).catch(err => { 409 console.error('Operation failed:' + JSON.stringify(err)); 410 }); 411} catch (err) { 412 console.error('Operation failed:' + JSON.stringify(err)); 413} 414``` 415