Windows Installer가 한 번에 하나의 프로그램 만 설치할 수있는 이유는 무엇입니까?


10

Windows Installer가 한 번에 하나의 프로그램 만 설치할 수있는 이유가 항상 궁금합니다. 특히 새로운 Windows 설치를 설정할 때 여러 설치를 시작할 수 없다는 것은 매우 실망스러운 일입니다. 그 이유는 무엇입니까?

답변:


6

동시 설치시 파일의 일부를 공유한다고 가정하면 정확성을 보장하는 것은 매우 복잡합니다. 이것은 어떤 형태의 거래가 필요합니다.

  • 파일을 잠 가야합니다
  • 설치가 실패하면 중간 변경 사항을 취소 할 수 있어야합니다 (지금 가능하다면 확실하지 않습니까?).

이러한 개념은 트랜잭션 데이터베이스에서 알려져 있지만 주제가 사소한 것은 아니며 일반적으로 파일 시스템에서 저널링 파일 시스템이 그 일부를 제공하더라도 완벽하게 트랜잭션 인프라를 찾지 못합니다. 한 가지 문제는 여러 개의 잠금이 교착 상태로 이어질 수 있다는 것입니다. 교착 상태 감지가 필요합니다 (또는 두 설치 관리자 모두 영원히 중단됨). 교착 상태는 피할 수 있지만 (예 : 항상 같은 순서로 파일을 잠그면) 다른 문제가 있습니다.

필요한 모든 파일을 미리 잠그면 효과적으로 얻을 수 있습니다. 한 설치 관리자가 다른 설치 관리자가 완료 될 때까지 기다려야합니다. 필요한 모든 파일을 미리 잠그지 않고 계속 진행하면 "트랜잭션"이 실패 할 위험이 있습니다. 즉, 설치 프로그램 중 하나를 다시 시작해야합니다.

그런 다음 트랜잭션 격리 수준에 대해 생각해야 할 수도 있습니다. 완전히 정확하려면 트랜잭션을 "직렬화 할 수 있어야 " 하지만 많은 데이터베이스의 경우에도 쉽지 않습니다.

완전 격리를 우회하는 문제를 해결하기위한 대체 전략이있을 수도 있지만 일반적으로 정확성을 입증하기가 더 어려울 수 있습니다.

동시 설치를 사용하면 훨씬 더 다루기 힘든 설치 후 문제가 발생한다고 생각합니다. 특히 OS 공급 업체 (또는 배포판)가 모든 문제를 겪고 100 % 깨끗하게 만들 것이라고 생각하지 않기 때문입니다. 따라서 OS에서 제공하더라도 사용하지 않는 것이 좋습니다.

노트

그러나 당신이 정말로 원하는 것은 "동시에"설치하지 않는 것입니다. 설치를 대기열에 넣을 수 있다면 (이들 사이에 질문을하지 않고) 차례로 실행되는 것이 충분할 것입니다. 그리고 그것은 실제로 무언가, 다른 OS (배포판)가 훨씬 더 잘 처리합니다.


1
맞지만이 대답은 너무 장황한 것 같습니다. 설치 관리자 서비스가 작동하는 방식을 묻는 사람은이 답변을 이해하지 못할 것입니다.
gWaldo

2
@gWaldo : 좋아, 아마도 네 말이 맞아 ... 그럼 다시 말하지만, "복잡하고, 나를 믿어 (기간). 당신은 어쨌든 그것을 이해하지 못할 것"이라고 말하고 싶지 않습니다. 아마도 OP (또는이 질문에 걸려 넘어지는 다른 사람)는 정말로 관심이 있으며, 문제의 맨 아래에 도달하는 대답은 실제로 쉽게 보이는 것을 해결하기 위해 많은 복잡성 있는 경우 추정하는 데 도움이 될 것입니다. 표면. 누가 알아?
Chris Lercher

매우 사실입니다. 그건 좋은 지적이야.
gWaldo

격리 소리에 대한 모든 이야기는 그럴듯하지만 Windows Installer 프레임 워크를 사용하지 않으면 여러 설치 관리자를 실행할 수 있습니다. 나는 나란히 실행할 때 그들 중 어느 것도 깨뜨린 적이 없다 ... 어쩌면 나는 운이 좋다 :) 큐잉 설치에 대해서는 도구가 있지만 주어진 멀티 코어 CPU (데스크톱 CPU는 이제 8 개의 스레드를 실행할 수있다) ...), 그것들을 나란히 실행하면 답이 될 것 같습니다 (아직 I / O를 위해 싸울 수는 있지만).
Rytis

2
@ Rytis : 같은 행운을 빕니다 :-)-설치 프로그램을 동시에 실행하지 않아도 무작위로 중단되었습니다. 멀티 코어 정보 :이를 활용하는 다른 방법이 있습니다. 한 번의 설치 프로세스에서 여러 코어를 사용합니다. 그것은 항상 가능하거나 쉬운 것은 아니지만 훨씬 더 잘 조정할 수 있습니다. 전체 설치 프로세스 (큐)가 처음과 끝에 질문을하는 경우 전체 시간을 절약 할 수있는 가장 큰 방법은 여전히 ​​그렇습니다. 그런 다음 커피를 마시거나 설치가 진행되는 동안 다른 일을 할 수 있습니다 (원하는대로 나머지 코어를 사용하십시오).
Chris Lercher

6

이것은 동일한 파일 / 폴더 / 레지스트리 키 등을 조작하는 두 개의 설치를 피하기 위해 의도적으로 설계된 것입니다. 다른 방식으로 수행되었을 수도 있지만 Microsoft는이 선택을했습니다.


귀하의 주장을 뒷받침하는 참조 자료가 있습니까?
Aaron Digulla

1

배치 파일을 사용하여 여러 MSI 파일을 발췌하여 빠른 순서로 설치할 수 있습니다. 두 개의 MSI 파일이 동시에 디스크에 기록된다는 의미에서 두 개의 MSI 파일을 동시에 실행할 수는 없습니다.

그 이유는 MSI 설치의 일부가 "트랜잭션"으로 실행되기 때문입니다. 트랜잭션 목록의 작업이 오류없이 완료되는지 여부에 따라 커밋되거나 롤백되는 일련의 변경 사항입니다. 모두 오류없이 완료된 다음 트랜잭션이 커밋되고, 그렇지 않으면 모든 변경 사항의 전체 롤백이 발생합니다. 주어진 시간에 하나의 거래 만 활성화 될 수 있습니다.

기술 MSI 수준에서는 InstallExecuteSequence의 표준 작업 InstallInitialize와 InstallFinalize 간의 작업 만 트랜잭션으로 실행됩니다. 이러한 작업 이외의 시스템 변경은 발생하지 않지만 때때로 MSI 파일은 다른 순서로 변경하도록 잘못 설계되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.