【问题标题】:Set sub-features to not install by default将子功能设置为默认不安装
【发布时间】:2012-09-19 21:29:27
【问题描述】:

我有一个带有一个功能和两个子功能的 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>

我想添加:

<Property Id="INSTALLLEVEL" Value=3 />

会将主要功能设置为安装,而将子功能设置为不安装。事实并非如此。默认安装所有功能。

我正在使用 WixUI_FeatureTree。我想知道这是否会弄乱 INSTALLLEVEL 属性

那么我正在尝试的可能吗?如何默认禁用这两个子功能?

编辑:很有趣。我设置了INSTALLLEVEL=1000 并再次尝试,所有功能仍然设置为安装。 WixUI_FeatureTree 会不会破坏INSTALLLEVEL

【问题讨论】:

    标签: wix installation windows-installer


    【解决方案1】:

    INSTALLLEVEL property 就像一个高水位标记。如果您将其设置为 1000 并且您不希望默认选择某个功能,则必须将该功能的级别设置为 1001 或更高。它是默认安装级别或低于该级别的所有内容。

    来自 MSDN:

    INSTALLLEVEL 属性是功能的初始级别 默认选择“开”进行安装。仅安装一个功能 如果 Feature 表的 Level 字段中的值小于或 等于当前的 INSTALLLEVEL 值。安装等级为 任何安装都由 INSTALLLEVEL 属性指定,并且可以 从 1 到 32,767 的积分。进一步讨论安装 级别,请参阅Feature Table

    【讨论】:

      【解决方案2】:

      还有一个观察,可能更重要。

      您的子功能具有 Level="1" 并且无论如何都会为任何有效的 INSTALLLEVEL 安装它们。如果您需要默认禁用它们,则应将其设置为更高的级别。像这样:

      <Feature Id="A" Level="3" AllowAdvertise="no" TypicalDefault="install" 
               InstallDefault="local" Absent="disallow" >
        <Feature Id="A1" Level="10" AllowAdvertise="no" />
        <Feature Id="A2" Level="10" AllowAdvertise="no" />
      </Feature>
      

      【讨论】:

        【解决方案3】:

        我认为您的问题在于在执行 UISequence 时覆盖 INSTALLLEVEL 属性的值。添加代码

        <Property Id="INSTALLLEVEL" Value=3 />
        

        在安装过程的最开始初始化属性值。但是,当您从一个对话框移动到另一个对话框时,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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多