ProgressBar 컨트롤 작성

Windows Installer에는 작업 표시 대화 상자에 진행률 표시기를 표시하는 기능이 포함되어 있습니다. ProgressBar 컨트롤은 개별 구성 요소의 설치를 그래픽으로 나타내며 남은 시간을 기준으로 경과된 총 시간 또는 설치가 완료될 때까지 남은 대략적인 총 시간을 보고합니다.

설치에 예상되는 총 시간을 확인하기 위해 설치 관리자는 실행 스크립트를 생성하는 동안 각 작업에서 예상한 총 진행률 틱을 추적합니다. 스크립트 생성이 완료되면 진행률 틱 합계가 저장되고 설치가 시작됩니다.

경과된 진행률 틱 수를 자세히 설명하는 진행률 메시지는 스크립트의 각 작업이 실행될 때 활성 메시지 처리기로 전송됩니다. 각 진행률 메시지에서 설치 관리자는 현재 활성 대화 상자에 SetProgress ControlEvent를 브로드캐스트합니다. 설치 관리자로부터 SetProgress ControlEvent 메시지를 수신하려면 스크립트 실행 중에 작업 표시 대화 상자를 만들도록 UI 시퀀스를 작성해야 합니다.

작업 표시 대화 상자가 SetProgress ControlEvent를 받으면 ControlEvent를 구독하는 모든 컨트롤에 대해 EventMapping 테이블을 확인합니다. 작업 표시 대화 상자의 ProgressBar 컨트롤은 특성 열에 지정된 Progress 컨트롤 특성을 사용하여 구독됩니다. 진행률 컨트롤 특성은 ProgressBar 컨트롤이 SetProgress ControlEvent와 함께 “ticksSoFar” 및 “totalTicks” 값을 전달하도록 지정합니다. 진행률 표시줄 컨트롤은 이 정보를 사용하여 설치를 위해서는 그래픽 막대를 왼쪽에서 오른쪽으로 이동하고 롤백 작업을 위해서는 그래픽 막대를 오른쪽에서 왼쪽으로 이동합니다.

또한 설치 관리자는 각 진행률 메시지에 TimeRemaining ControlEvent를 브로드캐스트합니다. 설치에 남은 총 시간은 먼저 실행 속도를 계산하여 결정됩니다. 이 실행 속도는 경과된 총 틱 수를 설치가 시작된 이후의 총 시간으로 나눈 값입니다. 남은 총 틱을 실행 속도로 나눈 값은 대략적인 남은 시간을 나타냅니다.

작업 표시 대화 상자가 TimeRemaining ControlEvent를 받으면 EventMapping 테이블에서 구독된 모든 컨트롤을 다시 찾습니다. 남은 시간을 표시하려면 특성 열에 지정된 TimeRemaining 컨트롤 특성이 있는 Text 컨트롤을 구독해야 합니다.

구독한 Text 컨트롤은 UIText 테이블에서 “TimeRemaining”이라는 매개 변수가 있는 템플릿 문자열을 쿼리합니다. 이 문자열에는 [1](분)과 [2](초)의 두 가지 매개 변수가 있습니다. Text 컨트롤은 각 값을 분 및 초로 변환하고, TimeRemaining 템플릿 문자열을 평가하고, Text 컨트롤을 새 정보로 업데이트합니다.

UI 표시 수준이 기본 이하로 설정된 경우 설치 관리자는 진행률 표시줄과 TimeRemaining 텍스트 필드가 포함된 기본 대화 상자를 표시합니다. 자세한 내용은 사용자 인터페이스 수준을 참조하세요.