2015-01-28 5 views
3

특히 GAC에 어셈블리를 설치하고 msxml3.dll에 기본 제공 DoRegisterTypeLib 작업이있는 .msi 설치 관리자를 만들었습니다. 그러나 (그리고 어떻게 든) 나쁜 msxml3.dll 버전 (Microsoft가 알고있는 8.70.1104.0)은 여전히 ​​일부 최종 사용자의 PC에 있습니다. 그리고 msxml3.dll이 나쁜 버전 일 경우 DoRegisterTypeLib가 실패합니다 (오류 코드 11). 최종 사용자에게 .NET 설치를 "복구"하라는 메시지를 전합니다.사용자가 .NET 설치에서 "복구"를 선택하면 어떻게됩니까?

다시 말해서이 "복구"는 무엇을합니까? 특정/모든 Microsoft .dll을 업데이트합니까?

DoRegsiterTypeLib을 그 (또는 .dll)로 만들지 않아도, "Repair .NET"이 무엇을하는지 알고 싶습니다. 누구나 가지고있는 통찰력은 인정 될 것입니다!

+0

gazillion 레지스트리 키를 다시 씁니다. 설치 관리자가 나쁜 DLL을 삭제하거나 레지스트리를 잃어 버릴 수있는 사항을 수정하는 작업은 Microsoft가 매일 처리해야하는 종류입니다. 직접이 일을 고려하지 마십시오. msxml3에 종속성을 가짐으로써 나쁜 설치자에게 자신을 드러내고 있습니다. msxml6으로 이동해야합니다. –

+0

DoRegisterTypeLib 호출을해서는 안됩니다. 병합 모듈 만 사용하는 것과 별도로 수행하는 잠재적 인 문제 외에도 조건이 맞지 않으면 제품을 수리하는 동안 사용자 지정 작업이 실행될 수 있습니다. 잘못된 Dll typelib을 등록한 다음 NET 복구가 수정되면 사용자 정의 복구가 다시 실행됩니다. – PhilDW

답변

1

각 구성 요소를 거쳐 KeyPath가 있고 정확한지 확인합니다.

은 DLL 및 구성 요소를 등록하며, 당신은 수리 첫 번째 단계는 창 설치에 대한 로깅을 설정하는 것입니다 에 대한 로그를 활성화 할 수있는 INSTALLDIR

을 손상 누락 된 파일을 복사합니다. MSI를 실행할 때 (제어판을 사용하지 않고 MSI 파일을 직접 실행한다고 가정) 또는 레지스트리 설정을 사용하여 로깅을 전역으로 켤 수 있습니다. 자세한 내용은 http://support.microsoft.com/kb/223300을 참조하십시오.

+0

그런 다음 특정 관련 레지스트리 키를 살펴 보겠습니다. .msi를 명령 줄에서 호출하고 최대한 많은 로깅을 설정하지만 .NET 복구 자체를 로깅하는 것이 좋습니다. 내가 할 수 있다면 +1 할거야 ... – branrigg

+0

당신의 발견을 게시하십시오, 항상 감사하다고 말하는 좋은 방법입니다.) 언제든지 나중에 투표 할 수 있습니다. – CheGueVerra

+0

실제로 더 높은 액티비티가 있습니다. .NET Framework는 단일 MSI가 아닙니다. OS와 비트 니스에 따라 여러 패키지를 함께 묶는 EXE 부트 스트 래퍼입니다. 수리는 다양한 MSI의 수리를 호출하는 EXE 수리를 호출합니다. 키 파일을 검사 할 수도 그렇지 않을 수도 있습니다. 그것은 단지 REINSTALL = ALL을 할 것입니다. –

관련 문제