我正在使用BURN和StandardBootstrapper应用程序。 我也在使用bafunctions.dll在OnDetect()中做一些非常重要的工作。
我还想根据OnDetect()中的内容以编程方式更改UI标签
问题是: 我可以使用burn C API访问主题WXL文件中定义的本地化字符串吗?
如何使用burn C API更改标签元素的文本?
答案 0 :(得分:3)
如何使用burn C API更改标签元素的文本?
每次加载页面时,WixStdBA都会浏览该页面上每个控件的文本,并通过引擎的<Page>
<Text>#(loc.MyCustomText)</Text>
</Page>
方法对其进行格式化。请注意,在v3.x中,不在页面内的控件只会被格式化一次 - 在调用OnDetect之前。这是bafunctions.dll今天唯一支持更改控件文本的方法。它需要访问主题才能直接进行。
这是一个例子。使用loc字符串作为页面内控件的文本。
<String Id="MyCustomText">Static text plus [MyCustomTextVariable]</String>
在.wxl文件中,使用loc字符串值中的变量。
pEngine->SetVariableString(L"MyCustomTextVariable", sczValue);
在OnDetect或OnDetectComplete中,设置变量的值。
<unitTestProvider name="SpecRun+NUnit" />
我可以使用burn C API访问主题WXL文件中定义的本地化字符串吗?
这是可能的,但可能会更容易。您应该在http://wixtoolset.org/issues为bafunctions.dll提交功能请求,以便访问已加载的loc字符串和主题。
默认的.wxl文件与bafunctions.dll位于同一目录中。您可以使用dutil.lib中locutil.h中的LocUtil方法来处理.wxl文件。