2013-04-17 4 views
1

공유 된 dll (COM 개체)이 있고 여러 제품에서 설치 한 Utility.dll이라고합니다. 내 WIX 파일에서 별도의 구성 요소로 Utility.dll을 설치합니다.Wix : 구성 요소 업데이트가 예상대로 작동하지 않습니다.

이제 새 버전 2.0을 출시하고 동일한 구성 요소 GUID 및 경로를 사용합니다.

  1. 제품 (1) 1.0 (Utility.dll 1.0)
  2. 설치 제품이 2.0 (Utility.dll 2.0)

를 설치 :이 무슨 문제되지 않습니다 howevever 이론적으로 자신의 구성 요소는 계산을 심판해야한다 디스크의 Utility.dll은 2.0입니다.

  1. 제거 제품 1 1.0 및 Utility.dll이 제거되었습니다.

이전 설치 관리자는 InstallShield에서 작성되었으며 현재 설치 관리자는 Wix3에 있습니다. 유틸리티 GUID와 경로는 동일합니다 (두 번 선택).

답변

1

자세한 로그 파일에서 Component의 GUID를 찾습니다. Component의 다른 클라이언트 (제품)가 있는지 여부를 나타내는 메시지가 표시되어야합니다. 그러면 제거 프로그램이 파일을 제거하는 이유가 설명됩니다.

+0

"공유 구성 요소 제거 허용 : {Component-GUID}, 다른 클라이언트는 있지만 다른 위치에 설치되었습니다"라고 표시됩니다. Windows는 구성 요소가 다른 위치에 설치되어 있다고 생각합니다. 그러나 최종 위치는 같습니다. – cuteCAT

+0

그리고 그것은 당신의 대답입니다. 구성 요소 *는 두 번 설치되지만 다른 위치에 설치됩니다. –

+0

Windows Installer에서 "다른 위치"를 정의하는 방법을 모르겠습니다. 그러나 파일은 같은 위치에 설치됩니다. 이전 설치 관리자가 InstallShield에서 수행 되었기 때문에 Directory의 이름이 완전히 동일하지는 않지만 최종 경로는 동일합니다. – cuteCAT

1

두 개의 구성 요소간에 KEYPATH가 다르므로 동일한 문제가 발생하여 파일이 제거됩니다. 제 상황에서는 최신 버전의 설치 프로그램에 동반자 파일을 추가하여 최신 텍스트 파일이 설치되었는지 확인했습니다. 파일은 KEYPATH가 될 수없고 첨부 파일이 있기 때문에 KEYPATH를 변경해야합니다.

구성 요소 GUID의 처음 8자를 역순으로 검색하여 레지스트리에서 해당 구성 요소를 찾을 수 있습니다. 해당 레지스트리 폴더에는 해당 GUID를 설치 한 각 MSI에 대한 키가 있으며 데이터 필드에는 KEYPATH가 표시됩니다. 내 생각 엔 KEYPATH가 버전 1.0의 컴퓨터와 2.0의 컴퓨터에서 다르다는 것입니다.

관련 문제