2016-04-18 63 views
0

我已經使用引導程序創建了WIX刻錄ui安裝程序。它複製一個文件夾,複製一些註冊表項並安裝一項服務。沒有自定義操作。有沒有辦法在這種情況下顯示進度文本?它應該顯示什麼項目被複制,正在創建什麼註冊表等。任何幫助將不勝感激。 (看到很多類似的問題,但所有這些都基於顯示自定義操作的進度文本)顯示WIX引導程序安裝操作的進度文本

+0

您是否驗證過這會改善用戶體驗? –

+0

是的,因爲如果進度欄卡住一定比例,他們會想知道發生了什麼。這將幫助他們知道安裝仍在進行,但進度百分比沒有變化。爲了解決這種情況,我們將很高興展示發生的事情 – mayooran

回答

1

OnExecuteMsiMessage回調讓BA訪問Windows安裝程序正在執行的操作。以下是WixStdBA如何處理它:

virtual STDMETHODIMP_(int) OnExecuteMsiMessage(
    __in_z LPCWSTR wzPackageId, 
    __in INSTALLMESSAGE mt, 
    __in UINT uiFlags, 
    __in_z LPCWSTR wzMessage, 
    __in DWORD cData, 
    __in_ecount_z_opt(cData) LPCWSTR* rgwzData, 
    __in int nRecommendation 
    ) 
{ 
#ifdef DEBUG 
    BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: OnExecuteMsiMessage() - package: %ls, message: %ls", wzPackageId, wzMessage); 
#endif 
    if (BOOTSTRAPPER_DISPLAY_FULL == m_command.display && (INSTALLMESSAGE_WARNING == mt || INSTALLMESSAGE_USER == mt)) 
    { 
     int nResult = ::MessageBoxW(m_hWnd, wzMessage, m_pTheme->sczCaption, uiFlags); 
     return nResult; 
    } 

    if (INSTALLMESSAGE_ACTIONSTART == mt) 
    { 
     ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_ACTIONDATA_TEXT, wzMessage); 
    } 

    return __super::OnExecuteMsiMessage(wzPackageId, mt, uiFlags, wzMessage, cData, rgwzData, nRecommendation); 
} 
+0

我會試試這個,並讓你知道隊友:) – mayooran

+0

這些安裝程序我們這些日子如何顯示「複製一些文件」,「註冊表鍵」有點類似的東西?因爲來自ExecuteMsiMessage的消息看起來非常技術性。是否有任何黑客向非技術人員展示消息? – mayooran

0

我知道這是一個老舊的問題。但是最近我遇到了同樣的事情,我想清楚了。想與任何尋找答案的人分享:)。

您可以添加ExecuteMsiMessage事件處理程序來記錄進度文本(例如:更新註冊表,複製文件等)。

model.BootstrapperApplication.ExecuteMsiMessage += MessageHandler; 

private void MessageHandler(object sender,ExecuteMsiMessageEventArgs e) 
{ 
    // your message here 
    ProgressStatusText = e.Message; 
} 
相關問題