2017-11-29 2 views
-1

Ich benutze Dynamics CRM 8.1.Wie kann ich ein nicht verwaltetes Plugin von einer Org wiederherstellen

Ich habe eine Verbindung zu einer Organisation hergestellt, die über ein Plug-in verfügt, das in dieser Organisation standardmäßig als Teil einer verwalteten Lösung bereitgestellt wird. Ich habe ein Plugin mit dem Plugin-Registrierungstool überschrieben. Dieses Plugin ist jetzt vermutlich ein nicht verwaltetes Asset, von dem ich erwarte, dass es immer auf der verwalteten Version sitzt, die als Teil der Lösung bereitgestellt wird.

Wie kann ich die nicht verwaltete Version des Plugins von der Organisation löschen, damit zukünftige Upgrades der verwalteten Lösung auf diese Organisation angewendet werden? Ich nehme an, dass es sich um ein Crm-Skript handelt.

Danke!

Antwort

0

Durch einige Datenbank-Reverse-Engineering, habe ich eine Antwort für meine eigene Frage gefunden. Dieser Prozess hat für mich funktioniert, aber ich kann nicht garantieren, dass er für alle funktioniert.

Wenn eine Plug-in-Assembly mithilfe des Plugin-Registrierungstools ersetzt wird, werden drei Dinge ausgeführt.

1) Die OverwriteTime-Spalte des PluginAssemblyBase-Datensatzes für dieses Plugin wird geändert. 2) Ein neuer PluginAssemblyBase-Eintrag wird für die gerade hinzugefügte Plugin-Assembly hinzugefügt. 3) Der Datensatz in der TopSolutionId-Spalte für den DependencyNodeBase-Datensatz wird für das Plugin geändert.

BEGIN TRANSACTION 
     DELETE dbo.PluginAssemblyBase 
     WHERE PluginAssemblyIdUnique <> @originalPluginAssemblyIdUnique and Name = @assemblyName and OverwriteTime = 0 

     UPDATE dbo.PluginAssemblyBase SET 
      OverwriteTime='1900-01-01 00:00:00.000' 
     WHERE PluginAssemblyIdUnique = @originalPluginAssemblyIdUnique 

     UPDATE dbo.DependencyNodeBase SET 
      TopSolutionId = @ManagedSolutionId 
     WHERE Objectid = @pluginAssemblyId 
COMMIT TRANSACTION 

Das Skript von anderen verwendet werden können, sondern zusätzlich die Variablen einstellen, können Sie dort einige Validierung hinzufügen möchten, in so:

für dieses Bild Der Umkehrprozess wurde mit der folgenden SQL-Abfrage durchgeführt dass es nicht im falschen Szenario verwendet wird.

0

Die nicht verwaltete Version einer Plugin-Assembly wird nicht auf der verwalteten Version "sitzen". Es ersetzt nur die verwaltete Version. Mit anderen Worten verhält sich diese Lösungskomponente anders als z.B. Entitätsformulare und Beschriftungen.

Importieren Sie die verwaltete Lösung erneut, oder aktualisieren Sie die verwaltete Lösung, falls dies praktischer ist. Dadurch wird Ihr nicht verwaltetes Plugin automatisch in eine verwaltete Version konvertiert.

+0

Wenn Sie mich nicht fragen, wie würde das aus der Perspektive der PluginAssembly-Tabelle aussehen? Werden bei einem Import einer verwalteten Lösung sowohl die verwalteten als auch die nicht verwalteten Zeilen entfernt? Oder behält der Upload des Plugins mit dem PluginRegistrationTool nur eine Instanz des Assemblynamens in der Tabelle? – Jason

+0

Die nicht verwaltete Version wird sich unabhängig vom Typ niemals auf einer verwalteten Komponente befinden. Jede nicht verwaltete Komponente wird mit der Standardlösung zusammengeführt. Es kann nicht zurückgerollt werden. –

+0

@ArunVinoth Ich bin zuversichtlich, dass Ihr Kommentar falsch ist. Nicht verwaltete Komponenten in der Standardlösung sollen so angewendet werden, dass die verwalteten Komponenten nicht auf das UX angewendet werden, wenn auch nicht verwaltete Versionen dieser Komponenten veröffentlicht werden. Dies ist, was ich aus mehreren Quellen gelernt habe, einschließlich Plural, persönliche Erfahrung, etc .... Aus welchem ​​Quellenmaterial arbeiten Sie? Es wäre interessant zu überprüfen. – Jason

Verwandte Themen