我试图在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,但同样也没有解决问题。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
进一步研究发现,上述脚本不适用于非托管包。 使用上面的脚本,我们可以卸载托管包。 我们应该将包的名称空间作为name参数 由于非托管包没有命名空间,我们将无法卸载非托管包。