2017-02-01 12 views
0

MyApp라는 제품이 있습니다. 이 제품에는 BASIC 및 PRO와 같은 다른 버전이 함께 제공됩니다. 두 버전 모두 동일한 버전의 자체 설치 프로그램이 있습니다.업데이트시 패키지 코드의 변경을 감지하는 방법 (Small Update)

기본 버전을 설치하고 PRO 설치 프로그램을 실행하면 InstallShield가이를 감지하도록합니다. 전반적인 별자리는 다음 이미지에 설명되어 있습니다.

  • UpCo = 업그레이드 코드
  • PrCo = 제품 코드
  • 파코 = 패키지 코드 검은 화살표는 문제없이 주요 업그레이드로 처리됩니다

enter image description here

. 빨간색 화살표가 문제를 설명합니다.

너무 변경된 패키지 코드를 확인하는이 시나리오를 감지했습니다. 다음 링크에서이 시나리오는 작은 업데이트로 정의됩니다.

http://helpnet.flexerasoftware.com/isxhelp22/isxhelp22.htm#CSHID=helplibrary%2FUpgradeConsiderations.htm|StartTopic=helplibrary%2FUpgradeConsiderations.htm

  1. 속성은 내가 사용할 수있는, 같은 IS_MINOR_UPGRADE 또는 IS_MAJOR_UPGRADE 있습니까?
  2. 이전 및 현재 설치의 패키지 코드, 제품 코드 및 업그레이드 코드를 찾을 수 있습니까? 그런 다음 그 값을 비교하고 InstallScript에서이 시나리오에 응답 할 수 있습니다.
+0

어떻게이 문제를 해결하기로 결정 했습니까? 제품의 크기가 다르지 않은 경우 하나의 옵션을 단일 설치 프로그램에 병합하고 설치 후에 프로덕션 라이센스 키를 사용하여 프로 기능을 "잠금 해제"하는 것입니다. 프로 버전 라이센스가 입력되면 기본 설치에 추가되는 개별 기능을 추가 할 수도 있습니다. –

답변

1

이 시나리오에서는 IS_MINOR_UPGRADE가 설정되어 있지 않으면 해당 속성이 없습니다. 설치된 패키지에 대해 현재 기록 된 정보를 검사하는 사용자 지정 동작을 작성할 수 있지만 (MsiGetProductInfo 참조) 사용자 지정 동작 내에서 호출 할 수있는 Windows Installer API의 제한 사항을 신속하게 실행할 수 있습니다.

버전간에 서로 다른 파일이 있다고 가정하면 (즉, 동일한 파일 이름의 다른 빌드가 아니라 다른 이름) "왼쪽"과 "오른쪽"으로 모두 이동하는 데 문제가있을 것으로 생각됩니다. 이렇게하면 적어도 하나의 방향으로가는 컴퓨터의 고아 구성 요소가있을 수 있습니다.

  • 측면을-으로 방지하기 위해 ISPreventDowngrade 하나에 비슷한 전략을 사용하기 위해 (여러 주요 업그레이드를 추가 할 수있는 다른 제품 코드와 아마 또한 다른 업그레이드 코드를 사용 : 나는이 다른 방법 중 하나를 사용하는 것이 좋습니다 것입니다 -side installs)
  • 작은 MSI (예 : 공유 파일의 경우 하나, 에디션마다 다양한 파일의 경우 하나, 후자는 이전 글 머리표처럼 상호 배타적 일 수 있음)에 대한 리 팩터는 아마도 Suite/Advanced UI 프로젝트에 의해 배포되며, 또는
  • 에디션을 적용하기 위해 설치 프로그램 라이선스를 사용하지 마십시오.
+0

답변 해 주셔서 감사합니다. 그래서 MsiGetProductInfo를 사용하여 INSTALLPROPERTY_PACKAGECODE를 사용하여 패키지 코드를 얻을 수 있습니다.그러나 이전에 설치된 버전의 제품 코드를 얻는 방법을 모르겠습니다. UpgradeTable 관련 속성을 사용하면 주요 업그레이드를 위해서만 작동합니다. 그렇지 않으면 비어 있습니다. –

+1

왜 PackageCode에 관심이 있으십니까? 업데이트, 업그레이드, 패치 등 새로운 MSI를 만들 때마다 달라야합니다. – PhilDW

+0

맞습니다. 패키지 코드는 항상 다릅니다. 따라서 동일한 제품 코드를 확인해야합니다. 그러나 제품 코드는 어떻게 얻을 수 있습니까? 전에 썼듯이 MyApp BASIC 버전 2가 설치되어 있고 MyApp PRO 버전 2 설치 프로그램을 실행하면 업그레이드 표가 비어 있습니다. –