INSTALLMESSAGE_PROGRESS
메시지를 설치 프로그램에 실행하여 진행률 표시 줄의 상태를 수동으로 제어 할 수 있습니다. 자세한 사항은 여기에서 찾을 수 있습니다 :
특히
http://msdn.microsoft.com/en-us/library/aa370354.aspx
, 당신은 상태 표시 줄을 관리 할 수있는 사용자 지정 작업이 필요합니다 (이 MsiProcessMessage
에 적절한 통화를 만들기위한 책임이 무엇 나는 또한 당신이하는 것이 좋습니다. 하위 설치를 생성하는 데 사용할 여기에 내가 생각하고있는 것을 설명하기 위해 일부 의사 코드는 다음과 같습니다.
LONG LaunchSubinstallersCA(MSIHANDLE current_installer)
{
// Initialize the progress bar range and position
MsiProcessMessage(current_installer, reset_message); // see MSDN for details
for each (subinstaller in list_of_installers)
{
launch subinstaller; // see MSDN for details
// Update the progress bar to reflect most recent changes
MsiProcessMessage(current_installer, increment_message); // see MSDN for details
}
return (result);
}
주요 아래 쪽은 진행 표시 줄이 다소 고르지 방식으로 진행하는 것입니다 당신이 정말로 원하는 경우. 멋지게 만들고 더 매끄럽게 만들려면 기다리는 별도의 "리스너"스레드를 시작할 수 있습니다. 하위 설치 프로그램의 업데이트를 통해 진행률 표시 줄을 더 세분화합니다. 같은 뭔가 :
LONG LaunchSubinstallersCA(MSIHANDLE current_installer)
{
// Initialize the progress bar range and position
MsiProcessMessage(current_installer, reset_message); // see MSDN for details
launch_listener_thread(); // launches listener_thread_proc (see below)
for each (subinstaller in list_of_installers)
{
launch subinstaller; // see MSDN for details
}
tell_listener_thread_to_stop();
optionally_wait_for_listener_thread_to_die();
return (result);
}
void listener_thread_proc()
{
// Loop until told to stop
while (!time_for_me_to_stop)
{
// Listen for update from sub-installer
timed_wait_for_update(); // probably required IPC, perhaps a named event?
// Only update the progress bar if an update message was actually received
if (!timeout)
{
// Update the progress bar to reflect most recent changes
MsiProcessMessage(current_installer, increment_message); // see MSDN for details
}
}
}
는 물론 각 하위 설치의 진행 상황 설치 메인 신호를 할 수있는 것, 그래서 이것은 잠재적으로 당신의 제품에서보다 광범위한 변화가 필요합니다. 그것이 그 노력의 가치가 있는지 여부는 당신에게 달렸습니다.
WIX에서 WPF UI 사용에 관한 정보가 있습니까? 포함 된 UI 옵션을 사용하는 방법을 찾고 있었지만 예제가 없습니다. –