我正在开发一组WiX安装程序,这些安装程序将共享一个共同的表单。每个应用程序都需要设置的值,但每个应用程序的值都不同。
我试图允许属性(链接到控件)具有默认值(或不允许),并允许通过命令行设置属性值。
在我的" SharedDialog.wxs"我有:
<Fragment>
<PropertyRef Id="PROP1"/>
<PropertyRef Id="PROP2"/>
<UI>
<Dialog Id="SharedDialog" Width="370" Height="270" Title="[ProductName]">
<Control Type="Edit" Id="1" Property="PROP1" Wid... Indirect="no" />
<Control Type="CheckBox" Id="2" Property="PROP2" Wid...
CheckBoxValue="1" Indirect="no"/>
</Dialog>
</Fragment>
在特定于应用程序的项目的文件中:
<Fragment>
<Property Id="PROP1" Value="Test"/>
<Property Id="PROP2" Value="1"/>
</Fragment>
这一切都适用于我想要做的事情,但问题是当我想要清除这些值时:(所以他们没有默认值)
<Fragment>
<Property Id="PROP1"/>
<Property Id="PROP2"/>
</Fragment>
我收到此错误:
Unresolved reference to symbol 'Property:PROP1' in section 'Fragment:'.
Unresolved reference to symbol 'Property:PROP2' in section 'Fragment:'.
WiX也不允许您将值设置为&#34;&#34;。问题是,到目前为止,我可以告诉复选框将始终检查属性是否有值。如何设置属性&#34; PROP2&#34;到&#34; null&#34;?
答案 0 :(得分:3)
您可以在属性表中为PUBLIC PROPERTIES提供默认值,然后从命令行设置其他值。命令行会覆盖默认值:
msiexec.exe / I&#34; C:\ Test.msi&#34; / QN / L * V&#34; C:\ log.log&#34; TEST =&#34; myvalue的&#34; TEST2 =&#34; myvalue的&#34;
查看更多信息: How to set a check box to "unchecked" from the msiexec command line?
答案 1 :(得分:2)
Nvm ......我找到了解决方案
<Fragment>
<Property Id="PROP1" Secure="yes"/>
<Property Id="PROP2" Secure="yes"/>
</Fragment>