4

문제와 Windows 서비스를 업데이트 할 수 없습니다 :가 된 .msi

나는 Windows 서비스 내가 VS2010 (C 번호) 및 설치하고 시작하는 대응의 .msi 만들었습니다. 버전, ProductCode, UpgradeCode 등이 올바르게 설정되었습니다. RemovePreviousVersions가 true로 설정됩니다. 잘 작동합니다.

이제 새 버전의 서비스를 만들고 싶습니다. 사용자가 이전 서비스를 먼저 수동으로 제거 할 필요없이 업데이트 된 .msi에서 서비스를 업데이트하려고합니다.

  1. 나는 (변경되지 않은 UpgradeCode를 유지하면서) 내가 버전 번호 및 제품 코드 변경의 .msi 프로젝트에서 내 서비스
  2. 의 소스 코드를 업데이트
  3. :

    은 내가하는 일은 이것이다

  4. 나는 모든 것을 재건한다.

그러나 나중에 업데이트 된 .msi를 시작하면 "오류 1001. .... 서비스 인스턴스가 이미 실행 중입니다."라는 메시지와 함께 실패합니다.

질문 :

  • 왜 서비스가 자동으로 업데이트 된 버전을 설치하기 전에 uinstalled되지 않는 이유는 무엇입니까?

  • 어떻게 작동합니까?

+0

실행중인 서비스를 중지하십시오. ('net stop servicename'이 문제인지 테스트해야합니다.) –

+0

그다지 도움이되지 않습니다. 그럼 난 그냥 "오류 1001. 특정 서비스가 이미 존재". 참고 : 제어판의 프로그램 추가/제거에서 응용 프로그램을 수동으로 제거하면 서비스가 중지되고 올바르게 제거됩니다. –

+0

MSI v5.0에 추가 된 서비스 구성에 대한 몇 가지 변경 사항이 있습니다. MSDN 설명서에서 [서비스 구성 사용] (http://msdn.microsoft.com/En-US/Library/Windows/Desktop/164280b2-1c75-49d2-ac04-c3654be84134)을 살펴볼 수 있습니다. 나는 이것이 당신과 같은 문제를 해결할 수 있는지를 기억하지 못합니다. –

답변

1

Windows Installer 5.0의 변경 사항은이 경우에 해당하지 않으며 오류 구성을 나타냅니다.

제어판에서 응용 프로그램을 수동으로 제거하면 서비스가 제거되므로 새 버전을 설치해도 이전 버전이 제거되지 않습니다. 자세한 로그를 작성하고 RemoveExistentProducts 표준 조치를 확인해야하는 이유를 조사하십시오. 로그 사용이 명령

에 msiexec/I {MSI 경로}/ℓ * 브이 file.log를 만들려면

당신은 확인하기 위해 처음 세 버전 번호 중 하나를 변경해야한다는 것을 알아야한다

OS는 새로운 패키지를 업그레이드로 간주하고, 그 앞뒤는 무시됩니다. 또한 패키지의 설치 유형이 동일해야합니다 (즉, 사용자 또는 기계별로). 설치 유형이 다른 경우 업그레이드를 건너 뜁니다.