Windows Installer (.msi 파일)가 다른 설치 프로그램보다 제거하는 데 시간이 더 걸리는 이유는 무엇입니까? Windows XP 이후로 InstallShield 설치

Windows XP 이후로 InstallShield 설치 관리자 (MSI의 부트 스트랩 임)를 포함하여 Windows Installer (.msi 파일) 는 다른 설치 프로그램보다 응용 프로그램을 제거하는 데 약 5 배 더 오래 걸렸습니다 . 일반적으로 설치에 대해서도 마찬가지입니다 .

왜 여전히 오래 걸리고 사람들이 여전히 MSI를 설치에 사용합니까? 예를 들면 다음과 같습니다.

VLC 제거-약 5 초가 소요됩니다.
XYZ 제거- “제거 준비 중 …”을 시작하고 15 초 지연시킵니다.

파일을 제거하고 레지스트리 (COM 등록을 포함 할 수 있음)를 정리하면됩니다. 왜 그렇게 오래 걸립니까?



답변

Windows 설치 관리자는 먼저 시스템 복원 지점을 체계적으로 생성합니다.이 작업은 상당히 느립니다.

또한 적절하게 “Windows Installer sucks” 라는 제목의 기사 에서 발췌 :

예전에는 설치가 소프트웨어를 설치하고 몇 가지 간단한 단계를 수행하여 설치를 취소 한 프로그램으로 구성되어있었습니다.

이것이 Windows Installer의 작동 방식이 아닙니다. 단순히 설치하고 완료하기 위해 프로그램을 실행하는 대신 시스템 상태를 검사 한 다음 프로그램 설치 관리자 인 데이터베이스의 상태를 검사 한 다음이 두 가지를 조정하는 방법에 대한 일련의 지나치게 복잡한 계산을 수행합니다.

설치 스크립트를 실행하는 대신 이동하는 판매원 문제를 해결하는 것으로 보입니다. 이것이 너무 느리게 실행되는 이유입니다. 아니면 적어도 저의 인상입니다.

또한 Windows 설치 관리자는 모든 정보를 레지스트리에 보관하며 이는 세계에서 가장 빠른 데이터베이스가 아닙니다.


답변

Windows Installer는 실제로 속도가 느리다는 명성을 가지고 있습니다. 이것에 기여하는 몇 가지 사항이 있으며 아래에서 다루겠습니다. 그러나 궁극적으로 소프트웨어 설치 및 제거시 1 분, 2 분 또는 3 분이 실제로 경합의 문제인지 스스로에게 문의해야합니다. TV 채널을 넘기는 것보다 시간이 더 걸립니다. 🙂

레지스트리
이것은 범인입니다. Windows Installer는 작업을 위해 레지스트리를 많이 사용합니다. 시스템이 성숙함에 따라 응용 프로그램을 설치 및 제거하고 레지스트리 크기가 커지거나 조각화되면 MSI 속도가 느려집니다. 동일한 응용 프로그램은 성숙 된 시스템보다 원래의 Windows 설치에서 훨씬 빠르게 설치 및 제거됩니다. 여기서 해결책은 레지스트리를 깨끗하고 조각 모음을 시도하는 것입니다.

레지스트리 정리를 위해 사용 가능한 많은 도구 중 하나를 사용하십시오. 그러나 레지스트리 조각 모음의 경우 내부 하이브 최적화에 충분한 NTREGOPT 를 권장 하고 실제 파일 조각 모음에 대해서는 PageDefrag 를 권장하지 않습니다 .

MSI 작동이 레지스트리에서 느려질 수있는 이유는 MSI가 사용하는 방법과 관련이 있습니다. Windows Installer는 레지스트리를 사용하여 어떤 제품이 어떤 구성 요소를 설치했으며 어떤 위치에 설치했는지 추적합니다. 원래 설치 GUID는 압축 형식으로 사용됩니다. 설치에 대한 머신 별 정보는에서 찾을 수있는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18반면, 사용자 별 데이터는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\사용자 SID가있는 키와 아래 에 있습니다.

이 두 키는 상당히 클 수 있으며 수많은 하위 키와 값을 포함합니다. 설치된 각 응용 프로그램의 제품, 구성 요소 및 키 경로를 제어합니다. 올바른 설치 제거 절차를 위해서는이 모든 정보를 읽고 처리해야합니다. 그러나 레지스트리 형식은 이진 검색을 허용하는 키를 알파벳 순서로 나열합니다. 그러나 그 가치는 그렇지 않습니다. 생성 된대로 저장되므로 선형 검색 절차를 수행해야합니다. 알고리즘 성능이 느려집니다.

대체로 MSI는 소프트웨어 설치 및 제거를위한 완전하고 정확한 방법입니다. 그러나 레지스트리 종속성으로 인해 어려움을 겪습니다. 시스템이 우수합니다. 오래 전에 점검해야했던 Windows 레지스트리입니다 🙂

자세한 고급 정보 :
각 설치 또는 제거 절차 중에 MSI가 수행하는 작업에 대한 심층 분석은 MSI 디버그 설정 방법을 설명하는 이 문서 를 참조하십시오 . 또는, 더 적은을 위해 여전히 가치있는 정보 이것 활성화 방법 로깅 한.


답변

Windows 설치 프로그램은 회사 배포에 많은 이점 이 있으며 여기에 설명되어 있습니다. https://serverfault.com/a/274609/20599

Windows Installer 세션 의 속도 저하 의 대부분은 롤백 기능 때문 입니다. 먼저 설치 또는 제거 전에 복원 지점을 만듭니다 (제공된 시스템 복원이 비활성화되지 않은 경우). 그런 다음 설치 제거 및 설치 중에 영향을받는 모든 파일 을 백업 하여 오류가 발생할 경우 시스템을 원래 상태로 복원 할 수 있도록합니다.

또 다른 기여 요인은 MSI의 모든 구성 요소 가 레지스트리에 등록 된다는 것 입니다. 여기에는 약간의 오버 헤드가 포함됩니다 .

컴파일 된 MSI 파일의 경우 설치 파일추출하는 데 약간의 시간이 필요 합니다 .

MSI 설치 속도를 높이기 위한 기술적 세부 사항 은이 답변을 참조하십시오 .


답변

Windows Installer 는 운영 체제 통합, 보안 정책, 무인 설치 등 여러 가지 이유로 일반적으로 사용됩니다.

내가 생각할 수있는 가장 일반적인 이유는 무인 설치 및 네트워크 배포 때문입니다. 대기업은 네트워크 드라이브에 .MSI 파일을 가지고 원격 시스템에서 배치 파일 (또는 배포 마법사 응용 프로그램)을 호출하여 설치 프로세스를 자동화함으로써 응용 프로그램을 쉽게 배포 할 수 있습니다.

다른 옵션은 .MSI 파일 외부에 있지만 대부분의 Windows 버전과 통합되는 고유 한 기능이 있습니다. 많은 설치 관리자에는없는 있습니다.

InstallShield가 항상 MSI 파일의 프런트 엔드 인 것은 아닙니다. 또한 자체 소유 설치 솔루션이 있습니다.