共享属性:“错误LGHT0094:未解析的符号引用”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共享属性:“错误LGHT0094:未解析的符号引用”相关的知识,希望对你有一定的参考价值。

我试图在几个产品之间共享一个属性,默认情况下没有设置。除了一个产品,我想将其设置为一个值。

所以在shared.wxi中:

<Include>
    <Property Id="MYPROP" Secure="yes"></Property>
</Include>

在product.wxs中:

<Wix>
    <Product>
        <?include ..sharedshared.wxi?>
        <SetProperty Id="MYPROP" Value="1" After="InstallInitialize"/>
    </Product>
</Wix>

但我们的构建系统抱怨:

error LGHT0094 : Unresolved reference to symbol 'WixAction:InstallUISequence/InstallInitialize' in section 'Product:{583365A4-93C2-434A-BCD8-8A1035DF2AC7}'

我甚至不确定After="InstallInitialize"(或Before = ...)是否是正确的地方,我只想在包含之后但在考虑其他任何内容之前设置此产品的属性。此外,我对整个WIX系统几乎一无所知,我只是想在知识渊博的同事休假时快速解决问题。

更新 - 现在我尝试了这个而不是SetProperty,但仍然得到相同的错误:

  <CustomAction Id="CA_SETMYPROP" Property="MYPROP" Value="1" />
  <InstallUISequence>
    <Custom Action="CA_SETMYPROP" Before="InstallInitialize" />
  </InstallUISequence>

更新2 - 现在我用InstallUISequence取代了InstallExecuteSequence,它做了我想要的。请参阅Rob Mensching的答案以获得解释和替代解决方案。

  <CustomAction Id="CA_SETMYPROP" Property="MYPROP" Value="1" />
  <InstallExecuteSequence>
    <Custom Action="CA_SETMYPROP" Before="InstallInitialize" />
  </InstallExecuteSequence>
答案

当我第一次遇到它时(最近),这个问题让我陷入了一个循环。错误消息是正确的,但可能会更有帮助*。

根本问题是在InstallInitialize中不存在InstallUISequence。默认情况下,SetProperty使用both作为Sequence属性。这意味着在InstallInitializeInstallExecuteSequenceInstallUISequence行动之前/之后安排了set属性。由于在InstallInitialize中不存在InstallUISequence,您将收到错误:

Unresolved reference to symbol 'WixAction:InstallUISequence/InstallInitialize'

修复是使用Sequence='execute'只安排InstallExecuteSequence居住的InstallInitialize中的属性设置。或者,您可以选择不同的操作来安排前/后。

使用SetProperty会像这样:

<SetProperty Id="MYPROP" Value="1" After="InstallInitialize" Sequence="execute" />

*改进错误信息在我的雷达上。

以上是关于共享属性:“错误LGHT0094:未解析的符号引用”的主要内容,如果未能解决你的问题,请参考以下文章

Linux线程相互排斥量--进程共享属性

协议中的共享实例属性

win8.1 属性-共享:Windows无法显示此连接的属性。WMI信息可能损坏

列出共享相同属性的对象[重复]

Moose:角色中的共享属性

javascript原型继承-共享属性