2017-11-29 15 views
-1

나는 dynamics crm 8.1을 사용하고 있습니다.조직에서 관리되지 않는 플러그인을 되돌릴 수있는 방법

나는 전통적으로 관리 솔루션의 일부로 해당 조직에 배포 된 플러그인이있는 조직에 연결했습니다. 나는 플러그인 등록 도구를 사용하여 플러그인을 덮어 썼다. 이 플러그인은 현재 솔루션의 일부로 배포되는 관리되는 버전 위에 항상 있어야하는 관리되지 않는 자산 일 것으로 예상됩니다.

향후 관리 솔루션 업그레이드가 해당 조직에 적용되도록 관리되지 않는 버전의 플러그인을 조직에서 지울 수 있습니까? 나는 이것이 어떤 종류의 crm 스크립트를 포함한다고 가정합니다.

감사합니다.

답변

0

일부 데이터베이스 리버스 엔지니어링을 통해 내 자신의 질문에 대한 대답을 찾았습니다. 이 프로세스는 저에게 효과적 이었지만, 모든 사람들에게 효과가 있다는 것을 보장 할 수는 없습니다.

플러그인 등록 도구를 사용하여 플러그인 어셈블리를 바꾸면 세 가지 작업이 수행됩니다.

1) 해당 플러그인의 PluginAssemblyBase 레코드의 OverwriteTime 열이 수정됩니다. 2) 방금 추가 한 플러그인 어셈블리에 대해 새 PluginAssemblyBase 레코드가 추가됩니다. 3) DependencyNodeBase 레코드의 TopSolutionId 열에있는 레코드가 플러그인에 대해 수정됩니다.

이의 반전 프로세스는 다음 SQL 쿼리를 사용하여 수행 하였다

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 

그 스크립트가 다른 사람에 의해 사용할 수 있지만 변수를 설정뿐만 아니라, 당신이 그렇게 거기에 약간의 유효성 검사를 추가 할 수 있습니다 그것은 잘못된 시나리오에서 사용되지 않는다는 것입니다.

0

관리되지 않는 버전의 플러그인 어셈블리는 관리되는 버전의 "맨 위에"있지 않습니다. 단지 관리되는 버전을 대체합니다. 즉,이 솔루션 구성 요소는 예를 들어, 엔티티 양식 및 레이블.

관리 솔루션을 다시 가져 오거나 관리 솔루션을 업그레이드하십시오. 이렇게하면 관리되지 않는 플러그인이 자동으로 관리되는 버전으로 변환됩니다.

+0

내가 묻는 것에 신경 쓰지 않는다면 PluginAssembly 테이블의 관점에서 어떻게 보이겠습니까? 관리 솔루션 가져 오기를 수행 할 때 관리되는 행과 관리되지 않는 행이 모두 제거됩니까? 또는 PluginRegistrationTool을 사용하여 플러그인을 업로드하는 작업은 테이블에 해당 어셈블리 이름의 인스턴스 하나만 유지합니까? – Jason

+0

관리되지 않는 버전은 유형에 관계없이 관리되는 구성 요소 위에 놓이지 않습니다. 모든 관리되지 않는 구성 요소가 기본 솔루션에 병합됩니다. 롤백 할 수 없습니다. –

+0

@ArunVinoth 귀하의 의견이 거짓이라고 확신합니다. 기본 솔루션의 관리되지 않는 구성 요소는 해당 구성 요소의 관리되지 않는 버전이 게시 된 경우 관리되는 구성 요소가 UX에 적용되지 않도록 적용됩니다. 이것은 내가 복수형, 개인적 경험 등을 포함한 여러 소스로부터 훈련받은 것입니다. 당신은 어떤 근원 자료를 사용하고 있습니까? 검토하는 것은 재미있을 것입니다. – Jason