使用 bafunctions.dll 从主题的 WXL 文件中获取字符串,并更改标签的文本

Get string from theme's WXL file using bafunctions.dll, and change the text of a label

我将 BURN 与 StandardBootstrapper 应用程序一起使用。 我也在使用 bafunctions.dll 在 OnDetect() 中做一些重要的工作。

我还想根据我在 OnDetect() 中所做的事情以编程方式更改 UI 标签

问题是: 我可以使用 burn C API 访问主题的 WXL 文件中定义的本地化字符串吗?

如何使用 burn C API 更改标签元素的文本?

How can I change the text of a label element using burn C API?

每次加载页面时,WixStdBA 都会遍历该页面上每个控件的文本,并通过引擎的 FormatString 方法对其进行格式化。请注意,在 v3.x 中,不在页面内的控件仅格式化一次 - 在调用 OnDetect 之前。这是 bafunctions.dll 目前唯一支持的更改控件文本的方法。它需要访问主题才能直接执行此操作。

这是一个例子。对页面内控件的文本使用 loc 字符串。

<Page>
    <Text>#(loc.MyCustomText)</Text>
</Page>

在 .wxl 文件中,在 loc 字符串的值中使用一个变量。

<String Id="MyCustomText">Static text plus [MyCustomTextVariable]</String>

在 OnDetect 或 OnDetectComplete 中,设置变量的值。

pEngine->SetVariableString(L"MyCustomTextVariable", sczValue);

Can I access localized strings defined in the theme's WXL file using burn C API?

这是可能的,但会更容易。您应该在 http://wixtoolset.org/issues 为 bafunctions.dll 提交功能请求以访问加载的 loc 字符串和主题。

默认的 .wxl 文件将与 bafunctions.dll 位于同一目录中。您可以在 dutil.lib 中使用 locutil.h 中的 LocUtil 方法来处理 .wxl 文件。