Локализованные шаблоны сообщений в установщике Windows. Обратный вызов ExternalUI. - PullRequest
1 голос
/ 26 октября 2011

У меня есть программа на C ++, которая устанавливает MSI-файл в автоматическом режиме, в то же время инструктирует установщик Windows, чтобы он вызвал мой обратный вызов, и я покажу пользовательский интерфейс (хода выполнения).Я делаю это, используя MsiOpenPackage (), чтобы открыть MSI-файл, MsiSetExternalUI (), чтобы попросить установщик Windows вызвать мой обратный вызов, а затем MsiDoAction () для установки.

В моем обратном вызове я получаю несколько типов сообщений, одинбудучи INSTALLMESSAGE_ACTIONDATA.В этом случае третьим параметром моего обратного вызова (LPCTSTR szMessage) является сообщение следующей формы:

Файл: btn_exit_up.bmp, каталог: C: \ Program Files \ My App \ Skin \ Dark \ Default_frame \, Размер: 2432

Приведенное выше сообщение отправляется при копировании новых файлов.Существуют и другие подобные сообщения, в зависимости от того, что делает установщик.Я не знаю, какую операцию выполняет установщик, я получаю только эти сообщения.Мне нужно проанализировать эти сообщения, чтобы извлечь информацию и красиво показать ее в моем пользовательском интерфейсе.Я использую регулярные выражения для этого.Моя проблема в том, что если моя программа запущена в неанглийской системе, сообщения будут локализованы, когда они поступят в мой обратный вызов (вместо файла: там будет Datei: и т. Д.).

Я нашел эти сообщенияв таблице ActionText в .msi.Эта таблица может быть локализована.Поэтому я подумал загрузить таблицу в начале установки и построить там свое регулярное выражение из шаблонов.Работает нормально, за исключением того, что мой .msi НЕ локализован, таблица только на английском языке, но даже если моя программа работает на немецкой ОС, сообщения все равно приходят в локализованном виде.

Как я могу получить локализованные шаблоны, которые установщик Windows будет использовать для сообщений ACTIONDATA, даже если эти шаблоны НЕ приходят из моего MSI-файла?

...