使用部署 CRM 包时如何覆盖非托管解决方案?

How can I overwrite an unmanaged solution when using deploying a CRM package?

使用 a powershell script to deploy a CRM Package 效果很好,但我 运行 遇到了一些意外行为。

该包有 1 个上传的非托管解决方案。如果目标 CRM 组织中不存在该解决方案,它会完美运行。但是,如果该解决方案在组织中已经存在,并且我尝试通过一些更改再次部署它,它就不会起作用。更改未上传,我没有收到任何错误。

如果我更改解决方案中的版本号(例如,从 0.0.1 到 0.0.2),那么上传它会按预期进行。

虽然我不想每次都更改版本,并且由于手动上传具有相同版本号的非托管解决方案非常有效,我希望脚本也能够做到这一点。

我尝试使用 CRM Package Deployer 导入包的方法,看看它是否能按我预期的那样工作,或者是否会显示任何错误消息。

消息显示:

Skipping solution MySolution. Version 0.0.2 of the solution is already loaded.

因此,如果组织中存在具有相同名称和版本号的解决方案,那么它将被完全跳过。这有点不幸。

看来我必须实施一个解决方法。我看到两个选项:

  1. DeployPackage 脚本会在尝试上传之前删除目标 CRM 组织中的解决方案(如果存在)。
  2. 我的 ExportSolution 脚本每次运行时都会更改版本号。