आप इंस्टॉलर को 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 का उपयोग करने पर कोई जानकारी है? एम्बेडेड यूआई विकल्प का उपयोग कैसे करें और कोई उदाहरण नहीं मिला है। –