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

时间:2015-11-09 17:50:52

标签: installation wix installer bootstrapper burn

我正在使用BURN和StandardBootstrapper应用程序。 我也在使用bafunctions.dll在OnDetect()中做一些非常重要的工作。

我还想根据OnDetect()中的内容以编程方式更改UI标签

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

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

1 个答案:

答案 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文件。