Windows에서 여러 프로그램을 한 번에 제거하거나 제거 할 수없는 이유는 무엇입니까? 이것에 대한 추론은 무엇입니까? 내부 시스템을 망칠 수 있습니까?
한 번에 여러 프로그램을 제거하는 방법을 찾지 않고 단순히 옵션이 아닌 이유를 찾고 있습니다.
apt-get -y uninstall prog1 prog2 prog3
.
Windows에서 여러 프로그램을 한 번에 제거하거나 제거 할 수없는 이유는 무엇입니까? 이것에 대한 추론은 무엇입니까? 내부 시스템을 망칠 수 있습니까?
한 번에 여러 프로그램을 제거하는 방법을 찾지 않고 단순히 옵션이 아닌 이유를 찾고 있습니다.
apt-get -y uninstall prog1 prog2 prog3
.
답변:
Windows Installer 시스템의 작동 방식에 대한 내용을 읽으면 .msi
파일 자체가 데이터베이스 라는 것은 말할 것도없고 트랜잭션 데이터베이스에서 프로그램 설치 및 유지 관리에 아이디어를 적용한 것이 분명 합니다.
데이터베이스를 설계 할 때 항상 의문점이 있습니다. 속도 나 정확성 / 안전을 원하십니까? 설치자가 시스템 구성을 수정할 수 있고 사고로 인해 시스템이 작동하지 않을 수 있다는 점을 감안할 때 속도보다 안전이 우선시되었습니다. .msi
설치 프로그램이 너무 느린 이유 중 하나는 각 파일 등에 대한 롤백 파일이 수정되어 나중에 삭제되어 중간에 문제가 발생하면 변경 사항이 "롤백"될 수 있기 때문입니다 ( 정전 또는 시스템 충돌 등).
이제 MSI 엔진 자체가 한 번에 하나의 프로그램 만 설치, 수정 또는 제거해야한다고 생각합니다. .msi
예를 들어 다른 프로그램을 제거 하는 동안 실행하려고하면 실행 되지 않거나 현재 실행중인 제거를 기다릴 것입니다 끝내기 위해. MSI 이외의 설치 관리자는 MSI 엔진을 사용하지 않으므로이 방식으로 작동하지 않을 수 있습니다. 그러나 이러한 안전 설계 결정으로 인해 appwiz.cpl
한 번에 하나의 제거 프로그램 만 호출하도록하는 이유 일 수 있습니다.
CCleaner를 사용하면 이전에 실행중인 설치 프로그램이 완료되기를 기다리지 않고 설치 제거 프로그램을 시작할 수 있습니다. 위의 이유로 인해 MSI 설치 프로그램이 여전히 병렬로 작동하지 않을 수 있습니다.
이것은 실제로 Windows Installer 시스템 을 사용하는 프로그램에만 적용됩니다 .
프로그램이 자체 (설치되지 않은) 설치 프로그램 시스템을 사용하는 경우 다른 설치 제거 프로그램을 동시에 실행하는 데 방해가되지 않습니다.
Windows Installer는 시스템 전체 (종종 공유) 설정 및 파일을 변경하는 동안 여러 프로그램에서 충돌이 발생하지 않도록 인스턴스 수를 제한합니다.
대부분의 제거 프로그램은 변경 사항을 추적하므로 실패시 성공적으로 롤백 할 수 있습니다. 다른 설치 제거 프로그램이 수행 한 모든 변경 사항을 모르는 경우 실패한 설치를 롤백하려고하면 실제로 문제가 발생할 수 있습니다.
Windows Installer 시스템은 모든 응용 프로그램 개발자가 Windows에서 사용할 수있는 통합 시스템으로 이러한 문제를 피할 수 있도록하기 위해 만들어졌습니다.
제거 작업은 종종 여러 프로그램 또는 시스템 파일 \ 레지스트리에서 공유하는 파일을 수정합니다 (관리 권한이 필요한 부분적인 원인). 여러 개의 제거 작업이 동시에 실행 된 경우 충돌이 발생할 수 있습니다. "DLL Hell"을 사용한 적이 있다면 동일합니다. 다른 프로그램이나 Windows 자체가 일관성이없는 상태로 남아있을 수 있습니다.
잠재적으로 언급 된 잠재적 인 문제 외에도 프로그램을 동시에 제거하면 이점이 거의 없습니다. 프로그램을 순차적으로 제거하는 것보다 훨씬 빠르지는 않습니다. 프로그램을 알아내는 것은 디스크 IO와 관련된 작업입니다. IO를 수행하는 여러 프로그램을 실행하는 것이 순차적으로 실행하는 것보다 빠르지 않습니다 (프로그램이 별도의 물리적 디스크에 설치되어 있지 않는 한). 실제로 경쟁하는 두 개의 IO 작업으로 인해 디스크 캐시의 효율성이 떨어지고 디스크의 물리적 헤드가 다른 곳으로 이동해야하기 때문에 속도가 느려질 수 있습니다 .