2013-12-10 2 views
0

이전 Visual Studio 설치 관리자를 대체 할 제품의 WiX 설치 프로그램을 만들고 새 빌드 버전을 제공합니다 (1.0.5에서 1.0.6으로 업그레이드). . 제품의 GUID를 설치 프로그램에서 계산할 필요가 있고 제품의 이전 코드를 제품의 이전 반복과 동일하게 만들 필요가 있음을 이해합니다.VS 설치 프로그램에서 변환 한 후 WiX 구성 요소 GUID

내가 알아야 할 것은 구성 요소의 GUID를 결정하는 방법입니다. 다음 진술을 발견했습니다 :

구성 요소 GUID = - 이것은 이전 세대 제품에서 복사해야하는 제품/구성 요소 코드입니다. 이것이 가능하지 않거나 실행 가능하지 않은 경우 고객은 새 버전을 설치하기 전에 이전 버전을 설치 제거해야한다는 사실을 알려야합니다. 그렇지 않으면 어떤 제품 코드가 PC의 어떤 파일을 소유하고 있는지에 대해 충돌이 발생할 수 있습니다.

나는 구성 요소에 포함시키고 자하는 어셈블리의 어셈블리 정보에서 Guid를 가져옵니다. 그 맞습니까?

감사합니다.

답변

0

정보가 어디에서 왔는지는 확실하지 않지만 그 점은 정확하지 않습니다. 구성 요소 GUID는 어셈블리 정보와 전혀 관련이 없습니다.

구성 요소 GUID는 설치 프로그램의 각 리소스에 대한 고유 한 식별자입니다 (파일, 레지스트리 키 또는 SQL 스크립트 일괄 처리 일 수도 있음). 2 개 이상의 설치 관리자가 나란히 설치되고 일부 파일을 공유 할 수있는 경우 공유 구성 요소에 대해 동일한 GUID를 사용할 수 있습니다. 그러면 Windows 설치 관리자가 자동으로 종속성을 처리합니다. 그것은 실제 예제를 쉽게 할 수 있습니다

  • ProductA이 ComponentA, ComponentB 및 ComponentC을 가지고
  • ProductB는 ComponentC, ComponentD 및 ComponentE을 가지고 모두가 경우 ComponentC 한 번만 설치되어 설치되어있는 경우

GUID는 동일합니다. InstallerB가 설치 해제 된 경우, ProductA가 아직 설치되지 않았고 ProductB가 남아있는 경우 ComponentA는 여전히 종속되어 있으며 그 반대의 경우도 마찬가지입니다. 두 항목이 제거 될 때만 ComponentC가 제거됩니다.

ProductB의 ProductC에서 GUID를 변경하지 않고 변경하면 (즉, ProductA와 호환되지 않음) 복잡한 문제가 발생할 수 있습니다. 이 경우 ProductB를 업그레이드하면 ProductA 설치가 중단됩니다. 구성 요소 규칙 및 설치를 중단시킬 다른 시나리오에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/aa372795(v=vs.85).aspx을 참조하십시오.

그들을 다루는 가장 쉽고 안전한 방법은 wix가 해당 구성 요소에 대한 GUID를 자동으로 생성 할 때 "*"를 사용하는 것입니다.

+0

우수 감사합니다. 나는 자습서를 통해 자신의 길을 찾으려고 노력하고 있지만, 그들 중 누구도 다른 종류의 설치 프로그램에서 변환하는 주제를 탐구하는 것 같지 않습니다. 이 웹 사이트에서 참조 할 수 있습니다. [http://www.merlinia.com/mdt/WiXTutorial1.msl](http://www.merlinia.com/mdt/WiXTutorial1.msl) – Neverforget115

+2

업그레이드를 위해 이전 설치 프로그램, 즉 vbdproj에서 정말로 필요한 것은 UpdgradeCode guid가 일치하는지, 제품 GUID가 다른지, 버전 번호가 이전 버전보다 높고 MajorUpgrade 요소 (http://wixtoolset.org)를 사용하는지 확인하는 것입니다. /documentation/manual/v3/xsd/wix/majorupgrade.html). 이렇게하면 이전 msi를 완전히 제거하고 새 msi를 설치합니다. –