wix - 有没有一种方法可以将预处理器变量设置为属性的值?

标签 wix xsd wix3

我有一个带有以下代码的WiX包含文件

<Fragment Id="PropertyFragment">
  <Property Id="DynamicLanguageCode" Value="[SystemLanguageID]" />
  <?define productLanguage = [DynamicLanguageCode]?>
</Fragment>

现在,在我的WiX脚本的“产品”标签中,我想将“语言”属性设置为productLanguage的值,因为它仅采用可本地化的整数。有没有办法让我的变量分配属性值?

谢谢

最佳答案

关于wix变量和Windows Installer属性之间的区别,您似乎有一些困惑。

wix变量可以称为$(var.foo)。可以通过将-d命令行参数传递给candle.exe来定义这样的变量。也可以通过<?define foo="bar"?>语法定义。 wix变量是仅在build设置时存在的概念。 wix预处理器会在其他任何事情发生之前填充它,就像C++中的#define语句一样。

Windows安装程序的属性是在安装过程中填写的。定义属性的一种方法是将它们放在MSI文件的Property table中。这就是wix Property元素的作用。 Windows安装程序数据库中使用的一些(但不是全部)data types允许您使用[FOO]语法引用此类属性。支持此数据类型的一个示例是Shortcut数据类型,由wix Shortcut元素的Target属性使用。 Language数据类型不支持!

关于wix - 有没有一种方法可以将预处理器变量设置为属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162623/

相关文章:

service - 使用CAQuietExec的WiX自定义操作因无效的命令行错误而失败

java - 无法从文档读取架构文件

.net - NetFx45WebLink 和 NetFx45RedistLink 有什么区别

excel - 检测是否安装了 Excel 2003 的最佳方法是什么?

wix - Windows 安装程序错误 : "Object already exists"

wix - 基于 WIX 的安装程序的安装日志表明安装过程发生了两次,导致自定义操作在意外时间发生

python-3.x - 在Python中,如何使用字典为Zeep设置_soapheaders?

xml - 强制执行注册表值引用的最低 DLL 版本

wix - 如何将 msiexec 属性传递给 WiX C# 自定义操作?

python - 关注 xs :include when parsing XSD as XML with lxml in Python