分享方式:


建立修補程式簡化解決方案更新 

發佈日期: 2017年1月

適用對象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

如果您將實體新增至解決方案,且匯出該解決方案,則該解決方案中的實體和所有其相關資產都會匯出。 這些資產包括屬性、表單、檢視表、關聯和視覺效果,以及與實體一起封裝的所有其他資產。 匯出所有物件表示您可能不小心修改目標部署上的物件,或攜帶非預期的相依性。 

若要解決此情況,您可以建立和發行解決方案修補程式,當中包含實體的子元件,而不發行整個實體及其所有資產。  原始解決方案和一或多個相關的修補程式可以在稍後彙總 (合併) 至解決方案的更新版本,以取代目標 Microsoft Dynamics 365 組織中的原始解決方案。

修補程式

您可以將修補程式套用至受管理或未受管理的解決方案,並且僅包含實體的變更和相關的實體資產。 修補程式不包含任何非自訂的系統元件或它所相依的關聯,因為這些元件已存在做為部署目標的組織中。 在您開發週期的某個時間點,您可以將所有修補程式彙總至新的解決方案版本中,以取代建立修補程式所在的原始解決方案。

修補程式會儲存在 Dynamics 365 資料庫中做為 Solution 實體記錄。 非 null ParentSolutionId 屬性表示解決方案為修補程式。 修補程式可透過組織服務或 Web API 建立和管理,對於開發自動化非常實用,例如產品安裝指令碼。 不過,Dynamics 365 Web 應用程式提供各種 Web 表單,可讓您互動建立和管理修補程式。

  • 修補程式只能從上層解決方案建立,使用 CloneAsPatchRequestCloneAsPatch Action

  • 修補程式上層不可以是修補程式。

  • 修補程式只能有一個上層解決方案。

  • 修補程式會在其上層解決方案上建立相依性 (解決方案層級)。

  • 如果上層解決方案存在,才能安裝修補程式。

  • 您無法安裝修補程式,除非上層解決方案的唯一名稱和主要/次要版本號碼 (如 ParentSolutionId 所識別) 不符合安裝在目標組織中的上層解決方案的這些項目。

  • 修補程式版本必須擁有相同的主要和次要號碼,但組建或發行號碼必須高於上層解決方案版本號碼。 顯示名稱可以不同。

  • 如果解決方案為修補程式,後續修補程式的版本號碼必須高於該解決方案的任何現有修補程式。

  • 修補程式與解決方案支援相同的作業,例如新增更新,但不可移除。 您無法使用修補程式移除解決方案中的元件。 若要移除解決方案中的元件,請執行升級。

  • 修補程式匯出為受管理時,必須匯入至受管理上層解決方案之上。 規則為修補程式保護 (受管理或未受管理) 必須符合其上層。

  • 不要將未受管理的修補程式用於實際生產。

  • 修補程式僅在 8.0 版或更新版本的 Dynamics 365 組織中支援。

此版中的 SolutionPackager 和 PackageDeployer 工具支援解決方案修補程式。 請參閱工具的線上說明,了解任何與修補程式相關的命令列選項。

建立修補程式

使用 CloneAsPatchRequest 訊息或 CloneAsPatch Action,或是使用 Web 應用程式從組織中的未受管理解決方案建立修補程式。 您建立修補程式後,原始解決方案便會鎖定,您無法變更或將它匯出,只要組織中有相依的修補程式將解決方案識別為上層解決方案。 修補程式版本管理類似解決方案版本管理,並以下列格式指定:major.minor.build.release。 當您建立修補程式時,無法變更現有的主要或次要解決方案版本。

匯出及匯入修補程式

您可以使用組織服務或 Web API、Web 應用程式,或是 套件部署器工具 匯出和匯入修補程式。 相關的組織服務訊息要求為 ImportSolutionRequestExportSolutionRequest。 相關的 Web API 動作為 ImportSolution ActionExportSolution Action

修補範例

下表列出修補範例的詳細資料。 請注意,在此範例中,解決方案和修補程式會依數字順序匯入並且累加,大致與解決方案匯入相同。

修補程式名稱

描述

SolutionA,1.0 版 (未受管理)

包含 entityA 及 6 個欄位。

SolutionA,1.0.1.0 版 (未受管理)

包含 entityA 及 6 個欄位 (3 個已更新),並新增 entityB 及 10 個欄位。

SolutionA,1.0.2.0 版 (未受管理)

包含 entityC 及 10 個欄位。

匯入程序如下。

  1. 開發人員或自訂員先將基礎解決方案 (SolutionA 1.0) 匯入至組織。 結果組織內會有 entityA 及 6 個欄位。

  2. 接著匯入 SolutionA 修補程式 1.0.1.0。 現在組織包含 entityA 及 6 個欄位 (3 個已更新),加上 entityB 及 10 個欄位。

  3. 最後匯入 SolutionA 修補程式 1.0.2.0。 現在組織包含 entityA 及 6 個欄位 (3 個已更新)、entityB 及 10 個欄位,加上 entityC 及 10 個欄位。

另一個修補範例

讓我們來看看另一個修補範例,下表列出詳細資料。

修補程式名稱

描述

SolutionA,1.0 版 (未受管理,基礎解決方案)

包含 Account 實體,其中客戶編碼欄位的長度從 20 個字元調整為 30 個。

SolutionB,2.0 版 (未受管理,不同廠商)

包含 Account 實體,其中客戶編碼欄位的長度已調整為 50 個字元。

SolutionA,1.0.1.0 版 (未受管理,修補程式)

包含 Account 實體的更新,其中客戶編碼欄位的長度已調整為 35 個字元。

匯入程序如下:

  1. 開發人員或自訂員先將基礎解決方案 (SolutionA 1.0) 匯入至組織。 結果為 Account 實體,其中客戶編碼欄位為 30 個字元。

  2. SolutionB 已匯入。 現在組織包含 Account 實體,其中客戶編碼欄位為 50 個字元。

  3. SolutionA 修補程式 1.0.1.0 已匯入。 現在組織仍包含 Account 實體,其中客戶編碼欄位為 50 個字元,如 SolutionB 所套用。

  4. SolutionB 已解除安裝。 現在組織包含 Account 實體,其中客戶編碼欄位為 35 個字元,如 SolutionA 1.0.1.0 修補程式所套用。

刪除修補程式

您可以使用 DeleteRequest 或 (針對 Web API) 使用 HTTP DELETE 方法刪除修補程式或基礎 (上層) 解決方案。 組織中有一個或多個修補程式的受管理和未受管理解決方案的刪除程序不同。

若是未受管理的解決方案,您必須先解除安裝基礎解決方案的所有修補程式,依照建立版本的相反順序,再解除安裝基礎解決方案。

若是受管理的解決方案,您只要解除安裝基礎解決方案。Dynamics 365 系統會先依版本的相反順序自動解除安裝修補程式,再解除安裝基礎解決方案。 您也可以只解除安裝單一修補程式。

更新解決方案

更新解決方案包含彙總 (合併) 該解決方案的所有修補程式到新版的解決方案中。 之後,該解決方案會解除鎖定,並且可再次修改 (僅限未受管理的解決方案) 或匯出。 若是受管理的解決方案,則無法進一步修改解決方案。除非是從剛更新的解決方案建立修補程式。 若要將修補程式彙總到未受管理的解決方案中,請使用 CloneAsSolutionRequestCloneAsSolution Action。 再製解決方案會建立新的未受管理解決方案版本,納入其所有修補程式,使用更高的 major.minor 版本號碼,相同的唯一名稱及顯示名稱。

若是受管理的解決方案,處理的方式稍有不同。 首先再製未受管理的解決方案 (A),納入其所有的修補程式,然後將它匯出為受管理的解決方案 (B)。 在包含受管理版本的 (A) 解決方案及其修補程式的目標組織中,匯入受管理的解決方案 (B),然後執行 DeleteAndPromoteRequestDeleteAndPromote Action 將受管理的解決方案 (A) 及其修補程式取代為版本號碼較高之升級的受管理解決方案 (B)。

另請參閱

TechNet:使用分割的解決方案和修補程式簡化解決方案更新
解決方案開發計劃
使用解決方案,封裝與發佈擴充功能
解決方案實體訊息和方法
維護受管理的解決方案
使用 AppSource 註冊您的應用程式

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權