【问题标题】:WiX (Windows Installer Xml), Create universal variablesWiX (Windows Installer Xml),创建通用变量
【发布时间】:2018-05-21 07:50:32
【问题描述】:

我通过一些在线教程学习了几天的 WiX。我看到了三个案例来创建一些变量

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

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

【问题讨论】:

  • 您最终可能仍然有三个选择,但属性是 Windows Installer 功能,而不是 WiX 功能,并且这三个中的任何一个都可以在 WiX 包含文件中使用 - 这是一个独立的概念。总的来说,本教程似乎过度使用了变量这个词并创建了错误的等效项。

标签: windows wix


【解决方案1】:

我没有过多地使用这些构造。但是,我认为 Bob Arnson(WiX 开发人员)在 this blog entry about localization 中很好地解释了这一点(解释很好,但我仍然设法让自己感到困惑 - 碳错误)。

基本上

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

我相信还有其他技术原因。 RobBob 需要点亮。 WiX 4 也可能与我在 WiX 3 中习惯的有所不同 - 并且可能有一些我不知道的计划更改。


一些链接

  1. Is it possible to pass variable to WIX localization file?(方便检索)
  2. Wix Installer : Setting component condition property when doing a MSIEXEC admin install at command line(对预处理器构造与其他用于创建设置风格的有用构造的冗长描述)
  3. Wix toolset license agreement multi-languages issue(使用本地化)
  4. Wix string with characters not available in database 's codepage although codepage is set
  5. 关于各种预处理器构造$(env.someval)$(sys.someval)$(var.someval)https://wixtoolset.org/documentation/manual/v3/overview/preprocessor.html

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多