我试图在几个产品之间共享一个属性,默认情况下没有设置。除了一个产品,我想为其设置一个值。
在shared.wxi中:
<Include>
<Property Id="MYPROP" Secure="yes"></Property>
</Include>
在product.wxs中:
<Wix>
<Product>
<?include ..\shared\shared.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
,它做了我想要的。
<CustomAction Id="CA_SETMYPROP" Property="MYPROP" Value="1" />
<InstallExecuteSequence>
<Custom Action="CA_SETMYPROP" Before="InstallInitialize" />
</InstallExecuteSequence>
发布于 2019-04-25 14:09:19
根本问题是InstallInitialize
不存在与InstallUISequence
。默认情况下,SetProperty
为Sequence
属性使用了两者。这意味着set属性是在InstallExecuteSequence的InstallUISequence之前和之后安排InstallInitialize动作。既然InstallInitialize
不存在于InstallUISequence
就会得到错误:
Unresolved reference to symbol 'WixAction:InstallUISequence/InstallInitialize'
使用Sequence='execute'
仅在InstallInitialize激活时安排InstallExecuteSequence
的属性。或者,您可以选择不同的操作来安排。
使用SetProperty
是这样:
<SetProperty Id="MYPROP" Value="1" After="InstallInitialize" Sequence="execute" />
https://stackoverflow.com/questions/-100006671
复制相似问题