2016-04-18 11 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

Я попробую это и дам вам знать mate :) – mayooran

+0

Как эти установщики, которые мы находим в эти дни, показывают «копирование какого-то файла», «ключи для регистрации»? Потому что сообщения из ExecuteMsiMessage кажутся довольно техничными. Есть ли какие-либо хаки, чтобы показывать сообщения для нетехнических людей? – mayooran

0

Я знаю, что это старый вопрос. Но недавно я наткнулся на одно и то же, и я понял это. Мысль делиться ею со всеми, кто ищет ответы :).

Вы можете добавить обработчик событий ExecuteMsiMessage для регистрации текстов прогресса (например: обновление реестра, копирование файлов и т. Д.).

model.BootstrapperApplication.ExecuteMsiMessage += MessageHandler; 

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

 Смежные вопросы

  • Нет связанных вопросов^_^