我有一个要求,需要将源组织上安装的托管包部署到目标组织。我相信一定有一种方法可以使用 ANT 来部署相同的组件,就像我们对所有其他 Salesforce 相关组件所做的那样。
有人可以帮我指出实现此目的的过程和 ANT 语法吗?
我首先想在本地检索包,然后将包部署到目标组织。
您也可以对托管包使用 ANT 迁移。只需使用 ANT 命令中的“retrieveNamedPackage”目标即可提取托管包。
在此“retrieveNamedPackage”目标中,您应该在 packageNames 属性中指定正确的托管包名称。
<target name="retrieveNamedPackage">
<sf:retrieve
username="${sf.username}"
password="${sf.password}"
sessionId="${sf.sessionId}"
serverurl="${sf.serverurl}"
retrieveTarget="projectFolder"
packageNames="mySourcePackage"/>
</target>
检索后,内容现在将位于“projectFolder”中(正如在retrieveTarget属性中提到的那样)。
要将“projectFolder”(这是您的托管包组件)中的内容部署到目标组织,请使用以下目标。
<target name="deployPackaged">
<sf:deploy
username="${sf.username}"
password="${sf.password}"
sessionId="${sf.sessionId}"
serverurl="${sf.serverurl}"
deployroot="projectFolder"/>
</target>
您可能遇到的一些错误: 1.指定的包命名空间:NAMESPACE与服务器的命名空间不匹配
原因: 发生这种情况是因为 package.xml 包含一个标签,该标签的名称空间值与您的组织名称空间不匹配。
修复 1:从 package.xml 中删除标签,然后尝试使用 ANT 进行部署。
修复 2: 设置组织的命名空间 (https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/namespaces_creating.htm),然后在您的组织中指定此命名空间package.xml 并尝试使用 ANT 进行部署。
免责声明:如果您尝试修复 2,请在设置命名空间之前在您的组织中进行影响分析。我认为设置命名空间后无法回滚它。在您的 SF 开发人员组织中尝试此操作,然后再在您的客户组织中尝试此操作。
为了将托管包从源组织部署到目标组织,您可以尝试另一种更简单的方法。
有一个 DevOps 工具 Zuppio https://appexchange.salesforce.com/appxListingDetail?listingId=a0N4V00000G6g5UUAR&channel=recommended&tab=r。
在它的帮助下,您不仅可以安装/升级托管软件包,还可以更新不可升级的元数据、执行匿名 Apex 以及在一次操作中根据需要在多个目标上执行更多操作。
托管软件包所有者的完美工具 - 如果您与大量订阅者组织合作,这是必备工具。
希望这对您有帮助。