Sau*_*ack 7 installer windows-installer wix
我有一个带有功能和两个子功能的WIX安装.我希望该功能是必需的,并且两个子功能是可选的,但默认情况下不安装.这是我的功能树:
<Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install"
InstallDefault="local" Absent="disallow" >
<Feature Id="A1" Level="1" AllowAdvertise="no" />
<Feature Id="A2" Level="1" AllowAdvertise="no" />
</Feature>
Run Code Online (Sandbox Code Playgroud)
我想添加:
<Property Id="INSTALLLEVEL" Value=3 />
Run Code Online (Sandbox Code Playgroud)
将设置主要功能安装和子功能不安装.情况并非如此; 默认情况下安装所有功能.
我正在使用WixUI_FeatureTree.我想知道这是否会搞乱INSTALLLEVEL属性.
那么我正在尝试甚至可能吗?如何默认禁用这两个子功能?
编辑:有趣.我重新设置INSTALLLEVEL=1000并尝试了,所有功能仍然设置为安装.WixUI_FeatureTree会破坏INSTALLLEVEL吗?
Chr*_*ter 12
该INSTALLLEVEL性质就像是一个高水位标记.如果将其设置为1000并且您不希望默认选择某个功能,则必须将该功能的级别设置为1001或更高.它是默认安装级别或低于该级别的所有内容.
来自MSDN:
INSTALLLEVEL属性是默认情况下安装选项"ON"的初始级别.仅当Feature表的Level字段中的值小于或等于当前INSTALLLEVEL值时,才会安装该功能.任何安装的安装级别由INSTALLLEVEL属性指定,并且可以是1到32,767之间的整数.有关安装级别的进一步讨论,请参阅功能表.
我认为您的问题是在执行 UISequence 时覆盖 INSTALLLEVEL 属性的值。添加代码
<Property Id="INSTALLLEVEL" Value=3 />
Run Code Online (Sandbox Code Playgroud)
在安装过程一开始就初始化属性值。但是,当您从一个对话框移动到另一个对话框时,INSTALLLEVEL 属性可能会在您看到 FeathreTree 对话框之前发生变化。请验证日志文件末尾的“属性值已更改”的详细日志条目以及 INSTALLLEVEL 属性的最终值。您可能需要创建自定义操作以将 INSTALLLEVEL 设置为您需要的任何值。示例可以在 WIX 源中找到:SetupType 对话框正是这样做的:
<Control Id="TypicalButton" Type="PushButton" X="40" Y="65" Width="80"
Height="17" ToolTip="!(loc.SetupTypeDlgTypicalButtonTooltip)"
Default="yes" Text="!(loc.SetupTypeDlgTypicalButton)">
<Publish Property="WixUI_InstallMode" Value="InstallTypical">1</Publish>
<Publish Event="SetInstallLevel" Value="3">1</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)