2012-10-05 3 views
5

우리는 라이센스가있는 Eclipse 기능이 있으며 라이센스는 자체 코드에 의해 처리됩니다. 사용자는 업데이트 사이트를 방문하여 기능을 업그레이드 할 수 있습니다. 우리가 직면하게되는 문제는 새로운 업그레이드를 사용하기 전에 사용자 라이센스를 업데이트해야하는 경우입니다.설치 전에 업그레이드를 확인하는 방법

내가하고 싶은 일은 사용자 라이선스에 대해 기능 버전을 확인하고 설치하기 전에 라이선스를 업데이트해야한다고 사용자에게 경고하는 것입니다.

나는 custom eclipse p2 touchPoint action validateLicense를 사용하여이 작업을 수행 할 것이라고 생각했습니다.

예 : 나는 사용자의 라이센스에 대한 버전을 검증 곳

내 코드가 호출됩니다. 실패하면 사용자에게 경고하고 설치를 취소 할 수 있습니다.

  • 나는이 권리를받을 수 있나요, 아니면이 작업을 수행하는 다른 방법입니다 :

    그래서 내 첫 번째 질문은?

내 두 번째 질문은 아주 기본입니다 :

내 코드를 실행하는 일식 알 수 있습니까
  • ? 나는 그것이 무엇인지 설명하는 here at eclipse help을 보았다. 하지만 코드를 실행하기위한 정보를 어디에 둘 것인지 이해할 수 없습니까? feature.xml에 있습니다.

마지막 :

  • 작성 및 사용 (P2)의 touchPonts하는 방법을 예를 들어 있나요?

답변

1

표시된대로 사용자 지정 동작을 구현했습니다 (here). 작동하는 것처럼 보이는 시스템이 있습니다. 내 경우에는 "터치 포인트"확장을 생략했지만 나머지는 동일합니다.

내 작업 (instructions.install)의 설치 단계에서 내 작업이 실행되지만 위상 구성도 가능할 수 있습니다. 수집 단계가 작동하지 않았습니다.

조치는 다운로드가 이미 수행 된 후 설치 프로세스 중에 실행됩니다. 다운로드하기 전에는 이상적이지만 나에게 큰 문제는 아닙니다. 조치에서 오류 상태를 리턴하면 설치가 취소됩니다.다운로드 된 일부 파일은 남겨 두지 만 활성화되지는 않으며 나중에 p2의 가비지 수집기에서 제거됩니다.

나는 또한 더 재미있는 일을 할 수있었습니다. 내 액션 플러그인은 내 메인 플러그인에 종속성 (선택 사항 및 비욕 욕성)이 있습니다. 그래서 같은 작품을 설치합니다

  • 작업 플러그인을 다운로드
  • 사용자 지정 작업은 액션 내 주요 플러그인이 이미 설치되어 있는지 여부를 감지하고 예, 그것으로 호출하는 경우 정보 라이센스를 검색 할 수
  • 실행됩니다. 메인 플러그인은 액션을위한 API를 공개해야합니다. 또한 API가 있는지 여부를 감지하기 위해 메인 플러그인의 버전을 확인합니다.
  • 이제 조치를 수행하여 설치를 계속할 것인지 또는 취소 할 것인지 결정할 수 있습니다. Display # syncExec를 사용하여 사용자와 상호 작용할 수도 있습니다 (이는 checkTrust 단계의 코드가 수행하므로 안전하다고 생각합니다). 필요한 경우, 조치는 설치가 헤드리스인지 여부를 감지 할 수도 있습니다.

몇몇 개는 : 자체 버전해야

  • 액션. 그것은 plugin.xml 및 p2.inf 파일에서 선언 한 버전이며 플러그인 버전과 다릅니다. 나는 플러그인과 동일한 버전으로 1.0.0을 대체한다. 이렇게하면 액션 플러그인의 최신 버전이 실행되기 전에 항상 다운로드됩니다. 액션 플러그인에서 라이센스 규칙의 변경 사항을 구현할 수있게되었으므로이 기능이 유용합니다.
  • Eclipse 3.5와 3.6 사이에서 동작 API가 변경되었습니다. 어쨌든 나이가 들수록 아마 3.5에 대한 지원을 중단 할 것입니다.
  • 조치 플러그인이 서명되어 있어야합니다. 제 경우에는 그렇습니다. 이클립스가 업데이트 사이트를 가리켜 다운로드 된 코드를 실행하기 때문에 시스템이 나에게 너무 강력 해 보인다.

Eclipse와 다른 IDE의 다른 버전에서 어떻게 작동하는지 테스트해야합니다. 나는 이상한 (비 블로킹) 에러를 3.6으로 보았다. 그러나 그 결과는 유망하며 시스템이 실제로 작동하는 것처럼 보입니다.

+0

정말 대단했습니다! 감사 – giZm0

1

터치 포인트는 설치시 실행됩니다. 즉, 확인 (유효성 검사)이 이미 수행되었음을 의미합니다. 나는 그들이 도움을 줄지 확신하지 못한다. 사용자가 설치 한 라이선스를 나타내는 Installable Unit (IU) (또는 Eclipse 기능)을 만드는 것은 어떻습니까? 그런 다음 제품의 종속성을 해당 라이센스에 적용합니다.

예를 들어 com.mycompany.license (1.0.0)라는 IU를 만듭니다. com.mycompany.license (2.0.0)라는 또 다른 파일을 만들 수 있습니다. 라이센스를 설치하면 해당 IU가 프로파일에 추가됩니다.

이제 제품을 설치하면 새 버전의 제품에 라이센스 버전 2.0.0이 필요합니다. 이 라이센스가 설치되어 있지 않으면 확인이 실패합니다.

의미가 있습니까? 이것이 도움이 될 것이라고 생각하십니까?

+0

재미있는 생각이지만 코드를 실행할 수 있습니까? 그것은 설치 전후에 일어나는 경우 설치 전후에 일어나는 것이 중요하지 않습니다. 당신이 알고있는 어딘가에 대한 좋은 문서인가요? – giZm0

+0

왜 코드를 실행 하시겠습니까? 임의의 코드를 실행해야하는 경우 터치 포인트가 필요합니다. 하지만 터치 포인트로 인해 설치가 실패 할 수는 없습니다. 물론 예외를 던지거나 모든 것을 롤백하려고 할 수도 있지만 실제로는 그렇지 않습니다. 라이센스가 실제로 올바른지 확인하려면 런타임시 (설치 시간 아님)에이를 수행하고 IU 트릭을 사용하여 사용자가 유효하지 않은 상태가되지 않도록하십시오. 워드 프로세서에 관해서는 http://wiki.eclipse.org/Equinox/p2/Customizing_Metadata가 있습니다. – irbull

+0

유효성을 검사하려면 유효성 검사가 일부 코드를 실행해야합니다. 즉, 서버를 검사하거나 어떤 경우에는 "키 스토어"만 확인하십시오. 검사를하는 동안 예외를 던지거나 false를 반환하는 생각은 내가 의존하고 싶었던 것처럼했다. 그러나 나는 그것을 작동시킬 수 없다. IU를 자세히 살펴볼 것이지만, 언뜻보기에는 정말 도움이되지 않습니다. 고마워요! – giZm0