문제

WinXP에서 WIX3을 사용하여 공유 Win32 SXS 어셈블리를 제거하는 데 어려움을 겪고 있습니다. 내 wix 파일은 http://n2.nabble.com/tutorial-how-tonstall-files-into-winsxs-td841475.html.

문제는 어셈블리의 모듈이 사용중인 경우 성공 오류 코드로 Unstaller가 완료되지만 어셈블리를 깨진 상태로 둡니다. 매니페스트 및 보안 카탈로그가 삭제되었지만 어셈블리 디렉토리는 여전히 내 DLL과 함께 존재합니다. . DLL은 재부팅에서 살아남으므로 어떤 식 으로든 삭제할 수 없습니다. MSI 로그 파일에는 명백한 오류가 없습니다.

패키지를 다시 설치하려고하면 어셈블리 설치를 건너 뜁니다. 구성 요소가 더 이상 등록되지 않으므로 설치 프로그램이 다시 제거를 시도 할 수 없습니다. 다음은 후속 설치의 MSI 로그에 표시됩니다.

MSI (C) (98:44) [11 : 46 : 56 : 263] : 어셈블리가 이미 존재하기 때문에 어셈블리 구성 요소 설치 : {26A273E7-7F9A-4F77-9FA8-5E413A155BEC}

SXS를 어셈블리 디렉토리를 수동으로 삭제하지 못한 상태로 SXS를 다시 가져 오는 방법을 찾을 수 없습니다.이 시점에서 XP 시스템 복원에 의해 더 이상 보호되지 않습니다.

실제 설치 프로그램이 훨씬 더 복잡하지만 단일 구성 요소가 포함 된 단일 기능이있는 매우 기본적인 설치 프로그램으로이를 재현 할 수있었습니다. 이 구성 요소에는 DLL, 매니페스트 및 보안 카탈로그가 포함되어 있습니다. DLLSu003CFile> 요소에는 키패, 어셈블리 및 어셈블리 관리 속성이 설정되어 있습니다. 일단 설치되면 MSV에서 DLL을 열어 어셈블리 로딩 프로세스를 시뮬레이션 할 수 있습니다.

이 상황을 감지하고 방지하기 위해 제거를 해제해야 할 추가 조치가 있습니까? 또는 DLL이 이미 WinSX에 존재하더라도 설치 작업을 수행하도록 강요하는 방법이 있습니까?

다소 관련이 있습니다. 어셈블리가 변경되지 않은 경우 어셈블리를 설치 한 패키지를 업그레이드하려고하면 문제가 있습니다. 설치 프로그램은 어셈블리를 다시 설치할 필요가 없다고 결정하지만 (변경되지 않았으므로) SXSUNINSTALLCA가 실행되면 어셈블리가 진행되고 제거됩니다. Installer의 관점에서 구성 요소는 여전히 설치되었지만 파일은 사라졌습니다.

도움이 되었습니까?

해결책

나는이 같은 문제에 빠질 것이라고 생각하는 일을하고 있습니다.

이 시점에서 나의 가정은 나는 이것을 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations regkey 및 약간의 파일 권한이 부드러워 질 수 있습니다 (파일이 여전히 잠겨있는 경우).

물론 재부팅이 필요합니다.

물론, 설치 프로그램에서 키가 있는지 확인하고 설치가 사라질 때까지 블록을 확인할 수 있습니다. (예 : "재부팅해야합니다").

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top