2012-04-04 3 views
1

찾은 코드를 기반으로 설치 프로그램을 만들었습니다. here. 이전 버전의 응용 프로그램이있는 경우 설치 프로그램에서 새 버전을 설치하기 전에 삭제해야합니다.WiX 주요 업그레이드가 생성되기 전까지 설치를 완료하지 않습니다.

깨끗한 설치라면 모든 것이 잘됩니다.

업그레이드의 경우 이상한 일이 발생합니다. 예상대로 이전 버전이 제거되고 레지스트리가 변경되며 바로 가기가 바탕 화면에 나타납니다. 이상하게도, 설치 프로그램이 완료되면 기본 파일이 응용 프로그램 폴더에 존재하지 않습니다.

업그레이드 후 설치 프로그램이 시작되면 작은 설치 프로그램 메시지 상자가 나타나고 "Windows가 구성하는 동안 기다려주십시오. -app name- .."라고 표시됩니다. 이 빠른 메시지 다음에 파일이 app 폴더에 있어야하며 앱이 실행됩니다.

하지만 출시하기 전에는 없습니다. 심지어 어떤 종류의 캐시에 갇혀 있다면 파일을 배치할지 여부를 확인하기 위해 앱을 시작하기 전에 재부팅을 시도했습니다.

누구든지이 동작을 봅니까? this questiom과 약간 비슷하지만 업그레이드 할 때마다 발생합니다.

답변

1

이상하게도 설치 프로그램이 완료되면 기본 파일이 응용 프로그램 폴더에 없습니다.

구성 요소가 올바르게 관리되지 않는 경우 Windows Installer 업그레이드에서 자주 발생하는 문제입니다. 일반적으로 제어판에서 설치 프로그램을 유지 관리 모드로 시작하고 "복구"를 수행하면 누락 된 파일이 다시 나타납니다. 이 경우 실행했을 때 windows repaired the application automatically입니다.

내 머리 위로의 몇 가지 가능한 설명은 :

  1. 하여 설치 프로그램의 새로운 버전은 새로운 GUID와 구성 요소에서이 파일을 설치합니다. 구성 요소 GUID가 안정적이어야하므로 문제가 발생합니다.

  2. 설치 프로그램은 구성 요소마다 여러 파일을 설치합니다. 구성 요소를 설치해야하는지 여부는 keypath에 의해 결정되고 하나의 파일 만 keypath가 될 수 있기 때문에 문제가 발생합니다. Stick to one file per component.

  3. 파일의 "새 버전"에는 실제로 더 낮은 버전 번호가 있습니다. 이러한 "업그레이드"doesn't work correctly.

+0

가능한 설명 중 첫 번째 시나리오 만 적합합니다. 원래 앱의 GUID 구성 요소를 찾을 수 있는지 확인합니다. 내가 할 수 없다면 설치시 파일을 강제로 삭제할 수있는 방법이 있습니까? – Tony

+0

@ 토니 : 내가 아는 것은 아닙니다. 파일이 설치되지 않았지만 설치 프로세스가 끝나면 이전 버전의 제품이 제거 될 때 문제가 * 제거 *됩니다. GUID를 변경하면 구성 요소 참조 계산 메커니즘이 엉망입니다. –

+0

기본 파일에 대한 이전 구성 요소 GUID 재사용을 시도했지만 문제가 여전히 존재합니다. 이번에는 설치 프로그램이 다시 부팅해야했습니다. 이전 설치 프로그램이 해당 구성 요소 항목 아래에있는 모든 파일을 가지고 있다는 것을 알았습니다. – Tony

관련 문제