0

我正在尝试在 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= 的访问权限不足

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

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

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

4

1 回答 1

0

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

于 2018-01-16T05:48:25.870 回答