我正在尝试为客户解决问题。他们有以下构建错误:
“WixShellExecTarget”属性的值中包含“[INSTALLFOLDER]”,这是对另一个属性的非法引用。如果该值是字符串文字,而不是属性引用,请忽略此警告。要使用另一个属性的值设置一个属性,请使用具有 Property 和 Value 属性的 CustomAction。
这是我认为相关的片段:
<!-- Open destination folder after install -->
<Property Id="WixShellExecTarget" Value="[INSTALLFOLDER]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="EULA" Guid="{32e8fdf3-8a40-471c-8ff6-1ac27e0fae7c}">
<File Id="eulaRTF" Name="EULA.rtf" DiskId="1" Source="$(sys.SOURCEFILEDIR)\EULA\EULA.rtf" Vital="yes" KeyPath="yes" />
</Component>
</DirectoryRef>
我不熟悉 wix 文件及其工作原理。听起来我必须将第二行更改为 CustomAction,但我不知道该怎么做。有什么建议吗?
您无法使用
Property
的值初始化 Property
。那会很酷,但无论如何在这种情况下它都不起作用,因为 INSTALLFOLDER
将被初始化为空白。
通过
SetProperty
计算目录树后,您需要使用 CostFinalize
设置值。比如:
<SetProperty Id="WixShellExecTarget" Value="[INSTALLFOLDER]"
After="CostFinalize" />
对财产及其可能发生的时间表有一个有效的了解会让您受益匪浅。 部署道场的第 32 集 有点深入,但观看后回过头来了解一些设置(没有双关语)将为您提供更多背景信息。