Yükleme çubuğunun durumunu, yükleyiciye INSTALLMESSAGE_PROGRESS
iletilerini vererek el ile denetleyebilirsiniz. Detaylar burada bulabilirsiniz:
Özellikle
http://msdn.microsoft.com/en-us/library/aa370354.aspx
, durum çubuğunu yönetmek için özel bir eylem gerekir (bu MsiProcessMessage
uygun çağrı yapmaya sorumlu olacak budur sana da tavsiye ederiz. alt montajcılar yumurtlamaya için kullanabilirsiniz İşte aklında ne var göstermek için bazı pseudocode geçerli:.
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);
}
ana aşağı tarafı ilerleme çubuğu biraz dalgalı bir şekilde ilerleyeceğine olan gerçekten isteseydin. Fantezi ve daha pürüzsüz hale getirmek için, bekleyeceğiniz ayrı bir "dinleyici" iş parçacığı başlatabilirsiniz Alt-yükleyiciden, ilerleme çubuğuna daha ince taneli artışlar yapmak için güncellemeler. gibi bir şey:
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
}
}
}
Açıkçası her bir alt yükleyici yapılmış ilerlemeye ana yükleyici sinyal edebilmek gerekir, bu nedenle bu potansiyel ürün genelinde daha kapsamlı değişiklikler gerektirecektir. Bu çabaya değer olup olmadığı size kalmış.
WPF UI'yi WIX ile kullanma hakkında herhangi bir bilginiz var mı? Gömülü UI seçeneğini kullanmayı ve herhangi bir örnek bulunamadı. –