卸载非托管包的Apex脚本会引发INSUFFICIENT_ACCESS:访问权限不足错误

时间:2017-11-21 11:45:27

标签: salesforce apex sfdc-metadata-api

我试图在apex中编写一个简单的脚本来处理卸载非托管包。 代码如下

 public static void uninstallPackage() {    
    String[] fullNames = new String[1];
    fullNames[0] = 'SomePackage';
    System.debug('fullNames -->'+fullNames);
    MetadataService.DeleteResult[] result = createService().deleteMetadata('InstalledPackage',fullNames);
}   
private static  MetadataService.MetadataPort createService() {
    MetadataService.MetadataPort service = new MetadataService.MetadataPort();
    service.SessionHeader = new MetadataService.SessionHeader_element();
    service.SessionHeader.sessionId = UserInfo.getSessionId();
    return service;
}

当我运行此脚本时,我收到以下错误 ' INSUFFICIENT_ACCESS:对交叉引用ID的访问权限不足faultcode = sf:INSUFFICIENT_ACCESS faultactor = '

我尝试搜索所有可能的解决方案,但都指出在处理此脚本的配置文件上启用了 修改所有权限 ,是的,我是使用sys admin配置文件运行此脚本并启用权限。

我尝试使用已连接的应用来获取会话ID,但同样也没有解决问题。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

进一步研究发现,上述脚本不适用于非托管包。 使用上面的脚本,我们可以卸载托管包。 我们应该将包的名称空间作为name参数 由于非托管包没有命名空间,我们将无法卸载非托管包。