WiX中方括号 [ ] 的含义是什么?

6
我正在使用WiX工具集为IIS网站创建安装程序,参考这篇指南。我遇到了以下语法:
<iis:WebSite Id="DemoWebsiteWebsite" Description='Demo Website' Directory='INSTALLFOLDER' AutoStart='yes' StartOnInstall='yes'>
  <iis:WebAddress Id="AllUnassigned" Port="80" />
  <iis:WebApplication Id="DemoWebsiteApplication" Name="[DemoWebsiteWebsite][WEBSITE_ID]" WebAppPool="DemoWebsiteAppPool"></iis:WebApplication>
</iis:WebSite>

我对WiX中的[]语法和网站id的使用方法感到困惑。我需要使用用户输入的一些自定义值。所以,我有以下问题:

  1. []语法在WiX中是什么意思?它与$()语法如何关联,用于访问已定义的值?
  2. 两个连续的[]是否有其他含义,例如[DemoWebsiteWebsite][WEBSITE_ID]
  3. 为什么在[DemoWebsiteWebsite]表达式中使用WebSite Id?这只是巧合还是命名约定?
  4. []中允许使用哪些值?是否有任何列表可以参考?
  5. 在哪里可以找到关于此语法及其用例的更多信息?

简短回答:对WiX来说没有任何意义。@PhilDW的答案解释了它们对Windows Installer的含义。 - Tom Blodget
1个回答

16
这是将 Windows Installer 属性解析为实际值的方法。如果您在 MSI 对话框中输入了一个名为 WEBSITE 的属性,通过将其放在方括号中,您可以将其解析为实际值。这就是为什么您会看到像 [TARGETDIR]、[SourceDir] 等等的东西。因为这种语法是 Windows Installer 的一部分,所以大多数生成 MSI 文件的工具都会使用它。
这是文档链接,它全部隐藏在这里: 格式化的 Windows Installer 所以, 1 - 它们是 MSI 文件中的属性,可以是标准的 Windows Installer 属性或用户创建的属性 属性参考 2 - 它们只是两个属性连接在一起。它们区分大小写,所以不要写错了。在理解它们是安装程序属性之后,其他要点应该很清楚了。
在 WiX 源中,$() 值是编译时的 - 它们在构建时解析为实际值。[] 值在安装时解析。

那看起来是一个更好的解释!你能否请回答所有1-5项并提供更多细节? - Pavel K
现在它几乎完全清晰,除了一个问题 - 3 - 为什么在[DemoWebsiteWebsite]表达式中使用WebSite Id?这只是巧合还是某个属性定义与WebsiteId相对应?如果是的话,它评估为什么值? - Pavel K
2
根据定义,如果有像括号中那样的属性,则必须在某个地方创建该属性,如果WiX构建无法找到引用,则会出现错误。困难在于,您可以通过指定它们来创建属性,包括在msiexec命令行上,并且除非它们在MSI文件的Property表中使用WiX中的Property Id元素,否则没有用户定义属性的默认值列表。 - PhilDW
谢谢你的回答!我会尝试使用Orca软件来确定该属性的值。如果在属性表中找不到它,我将在运行时尝试确定它。 - Pavel K
1
!()语法也是很有用的。它们在链接时解析,并可用于提取已链接文件的属性。请参阅:http://wixtoolset.org/documentation/manual/v3/overview/light.html - Dave Andersen
@PhilDW 构建不会失败,因为在使用格式化属性的地方没有尝试解析属性引用。毕竟,该属性可以通过命令行传递。它不需要事先被创建。 - Tom Blodget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接