WiX(Windows Installer Xml),创建通用变量

Kev*_*Lee 5 windows wix

我通过一些在线教程学习了 WiX 几天。我看到了三种创建一些变量的情况

  1. <? define Variable = "value" ?>然后将该值用作$(var.Variable)
  2. 创建本地化文件。输入内容为<String Id="Variable">Value</String>,然后使用值作为!(loc.Variable)
  3. 创建一个包含文件。输入内容为<Property Id="VARIABLE" Value="value" />,然后包含该文件,使用 Fragment 中的属性为[VARIABLE]

我知道本地化文件主要用于不同的语言环境。但我不知道我们什么时候应该使用每种情况。谁能帮忙解释一下吗?

Ste*_*mul 2

我还没有经常使用这些结构。然而,我认为Bob Arnson (WiX 开发人员)在这篇关于本地化的博客文章中很好地解释了这一点(解释很好,但我仍然设法让自己感到困惑 - 碳错误)。

本质上

  • 预处理器变量-$(var.Variable)- 由 WiX 预处理器解析 - 它发生在编译之前 (Candle.exe)。
  • 本地化变量- !(loc.LanguageLcid)- 在链接时 ( ) 解析Light.exe。链接过程可以生成不同语言的多个 MSI 文件。因此,本地化是一个链接时过程。
  • 有关本地化示例,请参阅下面的链接 3 。本地化后,您就本地化了大部分或所有字段。在下面的示例中,我没有本地化version-upgrade code它们对于所有输出 MSI 文件保持相同。
  • 您必须在每种情况下确定应本地化的内容。名称应该Manufacturer本地化吗?也许如果您想要亚洲字符用于亚洲设置,以及等效的拉丁字符名称?
  • 包含文件只是在编译之前包含在 WiX 源代码中。这就像在 C++ 中包含头文件一样。这使其成为一个预处理器构造。有关包含文件的使用的讨论,请参阅下面的链接 2 。
  • 更新:还有Burn Engine 变量- 如果您setup.exe使用 WiX 制作启动器。
  • Wix变量:

我确信还有其他技术原因。罗布鲍勃需要照亮。也可能与WiX 4我习惯的有所不同WiX 3——并且可能有我不知道的计划变化。


一些链接

  1. 是否可以将变量传递给 WIX 本地化文件?(方便检索)
  2. Wix 安装程序:在命令行执行 MSIEXEC 管理安装时设置组件条件属性(预处理器构造与其他有用构造的详细描述,以创建设置风格)
  3. Wix工具集许可协议多语言问题(使用本地化)
  4. 尽管设置了代码页,但 Wix 字符串中的字符在数据库的代码页中不可用
  5. 关于各种预处理器构造$(env.someval),,$(sys.someval): https $(var.someval): //wixtoolset.org/documentation/manual/v3/overview/preprocessor.html