2012-04-04 3 views
2

이미 보았습니다 Why doesn't my new Windows Installer file (MSI) install properly over an older version of the MSI? 하지만 그게 도움이되지 않습니다.설치 (MSI)가 이전 버전 위에 제대로 설치되지 않습니다

은 이제 비주얼 스튜디오 2010로 이동 설치 패키지 (MSI) 원래 플러그인 및 설치 프로젝트를 비주얼 스튜디오 2005 솔루션에 만들어진

으로 설치되는 프로그램 (오피스 플러그인)가 있습니다. 새 MSI를 만들어 이전 버전 위에 설치하려고하면 프로그램 추가/제거 -> 수정 -> 복구를 사용하여 복구하기 전에 새 버전이 작동하지 않음 이전 버전을 제거하면 새 버전이 완벽하게 설치됩니다 먼저 버전.

그것은 그것이 RemovePreviousVersion True로 설정없이 컴퓨터 경험

으로 여러 사용자에 의해 사용되기 때문에 새로운 MSI가 원활하게 새 버전을 이전 버전을 제거하고 설치 할 수 있는지 우리에게 중요합니다. 나는 버전을 3.1.1에서 4.0.0으로 업그레이드했으며, proces는 새로운 ProductCode를 승인했다. Orca에서 Reinstallmode를 amus로 설정했지만 아무 것도 도움이되지 않습니다.

감사합니다.

답변

1

내가 올바르게 이해했다면 새로운 버전의 수리를 실행하면 업그레이드가 작동한다고합니까? 이 상황은 두 패키지 모두 공유 구성 요소, 즉 패키지 구성 요소에 대한 중복 GUID가있을 때 나타날 수 있습니다. 이를 추적하는 가장 좋은 방법은 설치 로그를 작성하여 분석 할 수 있도록하는 것입니다.

수리하는 동안 이전 버전과 충돌이 없습니다. 이미 제거 되었기 때문에 패키지의 구성 요소가 올바르게 설치되었으므로 플러그인이 작동하는 이유입니다.

자세한 로그를 만들어서 살펴볼 수 있습니까?

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 새 버전에 대한 복구를 실행하면 업그레이드가 제대로 작동하는 것이 맞습니다. 두 설치에 대한 자세한 로그를 만들었습니다. 여기에서 다운로드 할 수 있습니다. http://download.ditmer.dk/klu/Installlogs.zip –

+0

로그에는 응용 프로그램의 두 버전에서 공유되는 GUID가있는 구성 요소가 표시됩니다. {1BB1F0AD-8476-42BE-A165-9116EEDCB560} . 새 버전의 패키지에서이 구성 요소에 대한 새 GUID를 생성하고 업그레이드를 다시 테스트하는 것이 좋습니다. –

+0

무슨 일이 일어 났습니까?이 두 구성 요소가 공유하는 구성 요소는 새 버전이 설치를 건너 뛰었지만 Windows Installer의 버그로 인해 이전 버전을 제거하면 공유 구성 요소가 제거 되었기 때문에 누락 된 자원. 이것이 수리 후 모든 것이 올바르게 작동하는 이유입니다. 새 GUID를 생성하면 문제가 해결됩니다. –

0

이상한 두 번째 로그에는 눈에 띄는 문제가 없으므로 업그레이드가 올바르게 설치되어야합니다. 더 자세한 정보를 얻으려면 OS가 자동 복구를 트리거 할 때 생성 된 자세한 로그가 필요합니다. http://support.microsoft.com/kb/2545723

+0

자세한 로그는 여기에서 다운로드 할 수 있습니다 : download.ditmer.dk/klu/verboseLog.zip –

0

내가 로그에서 자세한 정보를 얻기 위해 노력했지만 많은 정보를 찾을 수 있습니다 : 여기에 설명 된대로 전역 로깅을 활성화해야이 로그를 작성합니다. 그러나 수리의 이유를 알아내는 또 다른 방법을 찾았습니다. 온 디맨드 설치의 원인에 대한 자세한 내용을 보려면 이벤트 뷰어 ("시작 -> 실행", "eventvwr.msc")를 열고 응용 프로그램 노드 아래에서 "MsiInstaller"로그 메시지를 찾습니다.

이벤트 종류 :에서 MsiInstaller 이벤트 ID : 이벤트 원본 경고 (1001)는 설명 : 제품의 감지 '{000C1109-0000-0000-C000-000000000046}'기능 '예'구성 요소에 대한 요청 '{00030829 동안 실패 -0000-0000-C000-000000000046} '

메시지와 GUID는 물론 다를 수 있습니다. 그런 다음 프로젝트의 GUID를 검사하여 복구를 트리거하는 구성 요소를 확인할 수 있습니다.

0

Orca 도구로 msi를 편집하면 문제가 해결 될 수도 있습니다.

먼저 InstallValidate 이후 및 InstallExcecuteSequence 탭 아래 InstallInitialize 이전에 RemoveExistingProducts의 시퀀스 번호를 설정하여 기존 제품을 제거합니다.

감사합니다. Saurabh

0

감사합니다. 버전 번호, 제품, 구성 요소, 업그레이드 및 패키지 코드를 교환하고 있습니까? 어떤 소프트웨어를 사용하고 있습니까?

일반적으로 제품 내에서 업그레이드 코드를 동일하게 유지합니다. 이전/현재 업그레이드 코드를 포함하여 업그레이드 표에서 버전 번호를 지정해야합니다.

RemoveExistingProducts을 어디에서 예약 할 것인가에 따라 다르며, 구성 요소 코드를 유지하는 경우 일부 오래된 구성 요소가 교체되지 않을 수 있습니다.

일정을 항상 이후에 예약하십시오. InstallInitialize.

FindRelatedProducts이 호출되는지 확인하십시오.

this Post에서 WIX를 사용하여 샘플을 찾을 수 있습니다.

관련 문제