ソリューションの更新を簡略化する修正プログラムの作成
このトピックは、Dynamics 365 Customer Engagement (on-premises) に適用されます。 このトピックの Power Apps バージョンについては、以下を参照してください。 ソリューションの更新を簡略化する修正プログラムの作成.
エンティティをソリューションに追加して、そのソリューションをエクスポートする場合、そのエンティティおよびすべての関連資産は当該ソリューションにエクスポートされます。 これらの資産には、属性、フォーム、ビュー、関連付け、ビジュアル化、およびエンティティと共にパッケージ化される他のすべての資産が含まれます。 すべてのオブジェクトをエクスポートすることは、展開先のオブジェクトを誤って変更したり、意図しない依存関係を引き継ぐ場合があることを意味します。
これに対処するために、エンティティ全体とその資産すべてを公開するのではなく、エンティティのサブコンポーネントを含むソリューション パッチを作成および公開することができます。 元のソリューションおよび 1 つ以上の関連修正プログラムは、ソリューションの更新バージョンに後日ロールアップ (統合) される場合があり、これにより対象Dynamics 365 Customer Engagement (on-premises)組織の元のソリューションは置換可能です。
修正プログラム
マネージドまたはアンマネージド ソリューションに修正プログラムを適用し、エンティティとその関連の資産エンティティに対する変更のみ含めることができます。 修正プログラムには、当該コンポーネントが既に組織への展開に存在しているので、依存するカスタマイズ不可のシステム コンポーネントまたは関連付けが含まれていません。 開発サイクルのいずれかの時点で、すべての修正プログラムを新しいソリューションバージョンにロールアップして、修正プログラムが作成された元のソリューションを置換することができます。
修正プログラムは、Customer Engagement データベースに Solution
エンティティ レコードとして保存されます。 null 以外の ParentSolutionId
属性は、ソリューションが修正プログラムであることを示します。 修正プログラムは、組織サービスまたは Web API により作成および管理可能で、このことは、製品インストール スクリプトなどの自動化の開発に便利です。 ただし、Customer Engagement Web アプリケーションは、対話形式で修正プログラムを作成および管理可能な各種の Web フォームを提供します。
修正プログラムは、CloneAsPatchRequest または CloneAsPatch Action を使用して上位のソリューションからのみ作成可能です。
上位の修正プログラムを修正プログラムとすることはできません。
修正プログラムは、上位のソリューションを一つのみ持つことができます。
修正プログラムは、上位のソリューションで (ソリューション レベルで) 依存関係を作成します。
上位のソリューションがある場合には、修正プログラムのみをインストールすることができます。
ParentSolutionId
で識別される親ソリューションの固有名とメジャー/マイナーバージョンの番号が、対象組織にインストールされている親ソリューションの固有名と一致しない限り、修正プログラムをインストールすることはできません。修正プログラムのバージョンは同じメジャーおよびマイナー番号がある必要がありますが、上位のソリューションのバージョン番号より高いビルドおよびリリース番号が必要です。 表示名は異なる場合があります。
ソリューションに修正プログラムがある場合、後続の修正プログラムには、一覧が、当該ソリューションのいずれかの既存の修正プログラム値より数値的に高いバージョン番号が必要です。
修正プログラムは、付加的更新プログラムなどのソリューションと同じ操作をサポートしますが、削除はサポートしません。 修正プログラムを使用してソリューションからコンポーネントを削除することはできません。 ソリューションからコンポーネントを削除するには、アップグレードを実行します。
マネージドとしてエクスポートされた修正プログラムはマネージド上位のソリューションの最上位にインポートされる必要があります。 ルールは、修正プログラム (マネージドまたはアンマネージド)がその親に一致する必要があることです。
本番の運用でアンマネージド修正プログラムを使用しないでください。
修正プログラムはバージョン 8.0 またはそれ以降の Customer Engagement 組織のみでサポートされています。
修正プログラムをインストールするときは、修正対象の基本ソリューションの上および上位の任意のソリューションの下にのみインストールされます。 これは上位の任意のソリューションにより、同じコンポーネント タイプの修正プログラムの設定が上書きされることを意味します。
このリリースの SolutionPackager および PackageDeployer ツールはソリューション更新プログラムをサポートします。 パッチに関連付けるいずれかのコマンド ライン オプションのツールのオンライン ヘルプを参照してください。
修正プログラムの作成
CloneAsPatchRequest メッセージまたは CloneAsPatch Action を使用して、またはWebアプリケーションを使用して、組織のアンマネージド ソリューションから修正プログラムを作成します。 一度パッチを作成すると、元のソリューションはロックされた状態になり、このソリューションが親ソリューションであることを特定する依存関係のあるパッチが組織内に存在する限りは、変更もエクスポートもできません。 修正プログラムのバージョン管理はソリューションのバージョン管理と同様で、次の形式で指定されます: major.minor.build.release。 修正プログラムを作成すると、既存のメジャーバージョンやマイナーバージョンのソリューションに変更を加えることはできません。
修正プログラムのインポートとエクスポート
修正プログラムをエクスポートまたはインポートするには、組織サービスまたは Web API、あるいは Package Deployer ツールを使用できます。 関連の組織サービスメッセージ要求は ImportSolutionRequestおよびExportSolutionRequestです。 Web API に関連するアクションは ImportSolution アクション と ExportSolution アクションです。
修正の例
次の表には、修正の例の詳細がリスト表示されています。 この例では、ソリューションおよび修正プログラムが番号順でインポートされ、追加され、これは、全般のソリューションのインポートと一致していることに注意してください。
修正プログラムの名前 | 内容 |
---|---|
SolutionA、バージョン 1.0 (アンマネージド) | 6つのフィールドと entityA を含んでいます。 |
SolutionA、バージョン 1.0.1.0 (アンマネージド) | 6 つのフィールド (3 つの更新) と entityA を含み、10 のフィールドとともに entityB が追加されます。 |
SolutionA、バージョン 1.0.2.0 (アンマネージド) | 10 のフィールドと entityC を含んでいます。 |
インポート プロセスは、次のとおりです。
デベロッパーまたはカスタマイザーは最初にベース ソリューション (SolutionA 1.0) を組織にインポートします。 その結果、組織には 6 つのフィールドと entityA があります。
次に、SolutionA 修正プログラム 1.0.1.0 がインポートされます。 組織には、6 つのフィールド (3 つが更新されています) と entityA に加えて、10 のフィールドと entityB が含まれるようになりました。
最後に、SolutionA 修正プログラム 1.0.2.0 がインポートされます。 組織には、6 つのフィールド (3 つの更新) と entityA、10 のフィールドと entityB に加えて、10 のフィールドと entityC が含まれるようになりました。
別の修正の例
次の表に詳細がリスト表示されている、別の修正の例を見てみましょう。
修正プログラムの名前 | 内容 |
---|---|
SolutionA、バージョン 1.0 (アンマネージド、ベース ソリューション) | 取引先企業番号フィールドの長さが20から30文字に調整されたAccount エンティティが含まれています。 |
SolutionB、バージョン 2.0 (アンマネージド、異なるベンダー) | 取引先企業番号フィールドの長さが 50 文字に調整されたAccount エンティティが含まれています。 |
SolutionA、バージョン 1.0.1.0 (アンマネージド、修正プログラム) | 取引先企業番号フィールドの長さが 35 文字に調整されたAccount エンティティに対する更新プログラムが含まれています。 |
インポート プロセスは、次のとおりです。
デベロッパーまたはカスタマイザーは最初にベース ソリューション (SolutionA 1.0) を組織にインポートします。 結果は 30文字の取引先企業番号フィールドを含む
Account
エンティティです。SolutionB がインポートされます。 組織には50文字の取引先企業番号フィールドを含む
Account
エンティティが含まれるようになりました。SolutionA 修正プログラム 1.0.1.0 がインポートされます。 組織はさらに SolutionB によって適用されるように、50 文字の取引先企業番号フィールドを持つ
Account
エンティティを含んでいます。SolutionB はアンインストールされます。 組織は SolutionA 1.0.1.0 修正プログラムによって適用されるように、35 文字の取引先企業番号フィールドを持つ
Account
エンティティを含むようになりました。
修正プログラムの削除
DeleteRequest を使用して修正プログラムまたはベース(親)ソリューションを削除することができ、あるいは、Web API の場合には HTTP DELETE
メソッドを使用できます。 削除プロセスは、組織に存在する 1 つ以上の修正プログラムを持つマネージド ソリューションまたはアンマネージド ソリューションごとに異なります。
アンマネージド ソリューションの場合、ベースソリューションをアンインストール前に、それらが作成された反対のバージョン順序で、ベース ソリューションに対するすべての修正プログラムをアンインストールする必要があります。
マネージド ソリューションでは、単にベースソリューションをアンインストールするだけです。 Customer Engagement システムでは、ベース ソリューションをアンインストールする前に、反対のバージョン順序で修正プログラムを自動的にアンインストールします。 単一の修正プログラムだけをアンインストールすることもできます。
ソリューションの更新
ソリューションの更新には、そのソリューションに対するすべての修正プログラムをソリューションの新しいバージョンにロールアップ(結合)することが含まれます。 その後、ソリューションはアンロックされるようになり、もう一度、変更(アンマネージド ソリューションのみ)またはエクスポートすることができます。 マネージド ソリューションの場合、新たに更新されたソリューションから修正プログラムを作成する場合の除き、ソリューションに対する変更が許可されません。 アンマネージド ソリューションに修正プログラムをロールアップするには、CloneAsSolutionRequest または CloneAsSolution Action を使用します。 ソリューションの複製によって新しいバージョンのアンマネージド ソリューションが作成され、より高いmajor.minorバージョン番号、同じ一意の名前、および表示名を含む、すべての修正プログラムが組み込まれます。
マネージド ソリューションの場合、少し異なる方法で処理されます。 最初にすべての修正プログラムが組み込まれた、アンマネージド ソリューション (A) が複製され、それから、管理ソリューション (B) としてエクスポートされます。 (A) ソリューションのマネージド バージョンとその修正プログラムを含む対象組織では、管理ソリューション (B) をインポートしてから、DeleteAndPromoteRequest または DeleteAndPromote アクション を実行して、管理ソリューション (A) とその修正プログラムをより高いバージョン番号を持つアップグレードされた管理ソリューション (B) と置き換えます。
関連項目
セグメント化したソリューションと修正プログラムを使用してソリューションの更新を簡易化
ソリューション開発の計画
ソリューションを使用した拡張機能のパッケージ化および配布
ソリューション エンティティ
マネージド ソリューションの保守
AppSource でアプリを公開する