如何修复wix“非法引用另一个属性”

问题描述 投票:0回答:1

我正在尝试为客户解决问题。他们有以下构建错误:

“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,但我不知道该怎么做。有什么建议吗?

wix
1个回答
0
投票

您无法使用

Property
的值初始化
Property
。那会很酷,但无论如何在这种情况下它都不起作用,因为
INSTALLFOLDER
将被初始化为空白。

通过

SetProperty
计算目录树后,您需要使用
CostFinalize
设置值。比如:

<SetProperty Id="WixShellExecTarget" Value="[INSTALLFOLDER]"
             After="CostFinalize" />

对财产及其可能发生的时间表有一个有效的了解会让您受益匪浅。 部署道场的第 32 集 有点深入,但观看后回过头来了解一些设置(没有双关语)将为您提供更多背景信息。

© www.soinside.com 2019 - 2024. All rights reserved.