Windows에서 여러 프로그램을 한 번에 제거 할 수없는 이유는 무엇입니까?


99

Windows에서 여러 프로그램을 한 번에 제거하거나 제거 할 수없는 이유는 무엇입니까? 이것에 대한 추론은 무엇입니까? 내부 시스템을 망칠 수 있습니까?

한 번에 여러 프로그램을 제거하는 방법을 찾지 않고 단순히 옵션이 아닌 이유를 찾고 있습니다.


9
사람들이 한 번에 모든 것을 제거하지 못하게하려면 ...
M.Bennett

@ M.Bennett 나도 그렇게 생각했지만 여러 프로그램을 선택할 수있는 방법이 없으므로 사용자는 실수로 모든 것을 실제로 제거 할 수 없습니다.
Jeroen Bollen

5
실제로 여러 프로그램을 제거 할 수없는 유일한 Windows Installer 인 한 번에 여러 프로그램을 제거 할 수 있습니다. 즉, 단일 인스턴스 만 허용하기 때문입니다. 프로그램 파일을 쉽게 삭제할 수 있으며 원하는 경우 프로그램 파일의 모든 내용을 삭제할 수 있습니다. 그러면 해당 프로그램이 효과적으로 제거되지 않습니다.
Ramhound

@Ramhound : 당신은 여기에서 asker의 의도를 정확하게 이해 한 유일한 사람인 것 같습니다 : 그는 시스템이 프로그램 순차적 으로 제거하기를 원합니다 . 여기서 응답자들은 그의 질문을 다르게 이해했습니다 . 여러 프로그램 을 동시에 제거 할 수 있는지 여부 입니다. 말할 필요도없이, 리눅스에서는 쉽게 가능합니다 : 당신은 그냥 입력하면됩니다 apt-get -y uninstall prog1 prog2 prog3.
Niccolo M.

4
@NiccoloM 내 질문은 실제로 당신이 동시에 할 수없는 이유였습니다. : P
Jeroen Bollen

답변:


101

Windows Installer 시스템의 작동 방식에 대한 내용을 읽으면 .msi파일 자체가 데이터베이스 라는 것은 말할 것도없고 트랜잭션 데이터베이스에서 프로그램 설치 및 유지 관리에 아이디어를 적용한 것이 분명 합니다.

데이터베이스를 설계 할 때 항상 의문점이 있습니다. 속도 나 정확성 / 안전을 원하십니까? 설치자가 시스템 구성을 수정할 수 있고 사고로 인해 시스템이 작동하지 않을 수 있다는 점을 감안할 때 속도보다 안전이 우선시되었습니다. .msi설치 프로그램이 너무 느린 이유 중 하나는 각 파일 등에 대한 롤백 파일이 수정되어 나중에 삭제되어 중간에 문제가 발생하면 변경 사항이 "롤백"될 수 있기 때문입니다 ( 정전 또는 시스템 충돌 등).

이제 MSI 엔진 자체가 한 번에 하나의 프로그램 만 설치, 수정 또는 제거해야한다고 생각합니다. .msi예를 들어 다른 프로그램을 제거 하는 동안 실행하려고하면 실행 되지 않거나 현재 실행중인 제거를 기다릴 것입니다 끝내기 위해. MSI 이외의 설치 관리자는 MSI 엔진을 사용하지 않으므로이 방식으로 작동하지 않을 수 있습니다. 그러나 이러한 안전 설계 결정으로 인해 appwiz.cpl한 번에 하나의 제거 프로그램 만 호출하도록하는 이유 일 수 있습니다.

CCleaner를 사용하면 이전에 실행중인 설치 프로그램이 완료되기를 기다리지 않고 설치 제거 프로그램을 시작할 수 있습니다. 위의 이유로 인해 MSI 설치 프로그램이 여전히 병렬로 작동하지 않을 수 있습니다.


29
유닉스 계열 시스템의 패키지 관리자도 거의 같은 이유로 여러 패키지를 한 번에 제거하려고하지 않습니다. 여러 패키지를 제거하면 패키지가 하나씩 제거됩니다 (각각 자체 트랜잭션에서).
Joey

최고의 답변 +1! 한가지주의 할 점. 폴더에 CPU-Z와 같은 많은 독립 실행 형 실행 파일이 있으면 한 번에 모두 제거 (삭제)하십시오.
MonkeyZeus

4
@Joey 이것은 사실이지만 최소한 * nix 패키지 관리자에게이를 지시하면 주문을 처리 할 수 ​​있습니다. 더 큰 문제는 Windows가 패키지 관리 수준의 종속성 개념을 이해하지 못한다는 것입니다.
튜더

4
@ tudor : 다른 OS에서 응용 프로그램을 관리하는 방법의 차이점이라고 생각합니다. Windows는 응용 프로그램을 관리 하는 반면 Unix 와 유사한 패키지 관리자는 패키지 , 라이브러리, 응용 프로그램 및 이와 유사한 것들을 관리합니다. Windows 이러한 작업을 관리 수 있지만 (예 : Windows 구성 요소를 사용하거나 사용하지 않도록 설정하는 경우 내부적으로 가능하지만) 시스템 전체에 타사 라이브러리가있는 것은 90 년대 후반에 그다지 잘 진행되지 않았으므로 응용 프로그램을 사용하는 것이 좋습니다. 모든 의존성을 묶습니다.
Joey

@Joey 나는 당신의 요점을 취하지 만 사용자 (또는 개발자)를 비난하는 것은 그러한 열린 공유 공간에서 멀지 않을 것입니다. 사용자는 응용 프로그램 만 볼 수 있지만 응용 프로그램은 패키지의 하위 집합 일뿐입니다. 버전과 공급 업체가 다른 여러 라이브러리도 관리하면 됩니다. 개발자에게 관리를 요구하는 것은 기껏해야 낙관적이었습니다 (IMHO). Windows 스토어는 이것에 약간의 관심을 기울이고 있지만 여전히 자동 의존성 해결과는 거리가 멀기 때문에 이런 점에서 * nix를 훨씬 간단하게 만듭니다.
tudor

19

이것은 실제로 Windows Installer 시스템 을 사용하는 프로그램에만 적용됩니다 .

프로그램이 자체 (설치되지 않은) 설치 프로그램 시스템을 사용하는 경우 다른 설치 제거 프로그램을 동시에 실행하는 데 방해가되지 않습니다.

Windows Installer는 시스템 전체 (종종 공유) 설정 및 파일을 변경하는 동안 여러 프로그램에서 충돌이 발생하지 않도록 인스턴스 수를 제한합니다.

대부분의 제거 프로그램은 변경 사항을 추적하므로 실패시 성공적으로 롤백 할 수 있습니다. 다른 설치 제거 프로그램이 수행 한 모든 변경 사항을 모르는 경우 실패한 설치를 롤백하려고하면 실제로 문제가 발생할 수 있습니다.

Windows Installer 시스템은 모든 응용 프로그램 개발자가 Windows에서 사용할 수있는 통합 시스템으로 이러한 문제를 피할 수 있도록하기 위해 만들어졌습니다.


9

제거 작업은 종종 여러 프로그램 또는 시스템 파일 \ 레지스트리에서 공유하는 파일을 수정합니다 (관리 권한이 필요한 부분적인 원인). 여러 개의 제거 작업이 동시에 실행 된 경우 충돌이 발생할 수 있습니다. "DLL Hell"을 사용한 적이 있다면 동일합니다. 다른 프로그램이나 Windows 자체가 일관성이없는 상태로 남아있을 수 있습니다.


이것이 정답에 관한 것입니다. 프로그램 "A"가 핵심이 아닌 Windows DLL "X"를 설치하고 프로그램 "B"가 설치 프로그램에 필요하면 마찬가지로 제거 프로그램의 일부일 수 있습니다. 그러나 DLL "X"를 제거하면 프로그램 "A"가 손상됩니다. 따라서 제거 프로그램은 일반적으로 공유 DLL 및 기타 파일을 삭제해야하는 경우 묻습니다. 동시에 실행하면 이런 종류의 프롬프트가 제대로 작동하지 않습니다. 마지막으로, 그리고 아마도 더 중요한 것은 모든 사람이 Windows 레지스트리를 잊어 버렸습니다. Windows 레지스트리는 설치 관리자 / 설치 제거 프로그램에서 자주 업데이트되는 데이터베이스 핵심 구성 요소입니다.
Darrell Teague

-1

잠재적으로 언급 된 잠재적 인 문제 외에도 프로그램을 동시에 제거하면 이점이 거의 없습니다. 프로그램을 순차적으로 제거하는 것보다 훨씬 빠르지는 않습니다. 프로그램을 알아내는 것은 디스크 IO와 관련된 작업입니다. IO를 수행하는 여러 프로그램을 실행하는 것이 순차적으로 실행하는 것보다 빠르지 않습니다 (프로그램이 별도의 물리적 디스크에 설치되어 있지 않는 한). 실제로 경쟁하는 두 개의 IO 작업으로 인해 디스크 캐시의 효율성이 떨어지고 디스크의 물리적 헤드가 다른 곳으로 이동해야하기 때문에 속도가 느려질 수 있습니다 .


이것은 답변과 관련이 없습니다. 디스크 I / O와 관련된 모든 작업은 한 번에 너무 많은 작업을 수행하면 속도가 느려질 수 있지만 Windows가 실제로 수행 하지 못하게 하는 유일한 방법 은 동시 (설치) 설치 뿐입니다 . 그리고 동시에 (설치하지 않고) 설치를 수행 할 수있는 좋은 이유가 있습니다. 사용자가 여러 작업을 대기열에 놓고 모두 함께 실행하여 앉아서 대기하는 것이 훨씬 쉬울 것입니다. 각각 하나씩 차례로 완료합니다. 또한 SSD의 경합 문제는 더 이상 사용되지 않습니다.
Andrew Medico
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.