我有一个C ++程序,它以静默方式安装.msi文件,同时指示Windows安装程序调用我的回调,然后我将显示(进度)UI。我这样做是使用MsiOpenPackage()来打开.msi文件,MsiSetExternalUI()让Windows安装程序调用我的回调,然后安装MsiDoAction()来安装。
在我的回调中,我得到了几种消息类型,一种是INSTALLMESSAGE_ACTIONDATA。在这种情况下,我的回调的第三个参数(LPCTSTR szMessage)是以下形式的消息:
文件:btn_exit_up.bmp,目录:C:\ Program Files \ My App \ Skin \ Dark \ Default_frame \,Size:2432
复制新文件时会发送上述消息。还有其他此类消息,具体取决于安装程序正在执行的操作。我不知道安装程序正在做什么操作,我只收到这些消息。我需要解析这些消息以提取信息并在我的UI中很好地显示它。我正在使用正则表达式来执行此操作。我的问题是,如果我的程序是在非英语系统上运行的,那么当消息到达我的回调时(而不是文件:会有Datei:等),消息将被本地化。
我在.msi中的ActionText表中找到了这些消息。该表可以本地化。所以我想在安装开始时加载表并从那里的模板构建我的正则表达式。工作正常,除了我的.msi没有本地化,表只有英文,但即便如此,如果我的程序运行德国操作系统,消息仍然是本地化的。
如何获取Windows安装程序将用于ACTIONDATA消息的本地化模板,即使这些模板不是来自我的.msi文件?