代码之家  ›  专栏  ›  技术社区  ›  liggett78

WIX安装程序和禁用的功能

  •  4
  • liggett78  · 技术社区  · 15 年前

    我正在使用WIX3测试版和功能树用户界面。我将把几个程序集作为单独的组件安装到程序文件中的自定义子目录以及GAC中。另外,我希望将相同程序集的调试版本打包为一个组件,并让用户决定是否安装它们。现在,默认情况下禁用带有调试程序集的此功能,但不管安装了什么调试程序集。

    在相关代码段下方:

    <DirectoryRef Id="INSTALLDIR">
      <Directory Id="bin" Name="bin">
        <Directory Id="Debug" Name="Debug">
          <Component Id="DebugComponent" Guid="PUT-GUID-HERE">
            <File Id="DebugAssemblyXXX" DiskId="1" Source="Debug\XXX.dll"></File>
          </Component>
        </Directory>
        <Directory Id="Release" Name="Release">
          <Component Id="ReleaseComponent" Guid="PUT-GUID-HERE">
            <File Id="ReleaseAssemblyXXX" DiskId="1" Source="Release\XXX.dll"></File>
          </Component>
        </Directory>
      </Directory>
    </DirectoryRef>
    
    <Feature Id="All" ConfigurableDirectory="INSTALLDIR" Title="Title" Level="1"
             Display="expand" AllowAdvertise="no" Absent="disallow" Description="Desc">
    
      <Feature Id="DebugAssemblies" Title="Debug Assemblies" Level="1000" Absent="allow"
               AllowAdvertise="no" Description="Debug versions of assemblies.">
        <ComponentRef Id="DebugComponent" />
      </Feature>
    
      <Feature Id="ReleaseFeature1" Title="Feature" Level="3"
               AllowAdvertise="no" Description="Another description">
        <ComponentRef Id="ReleaseComponent"/>
      </Feature>
    </Feature>
    

    奇怪的是,如果我再次运行msi文件并转到“更改”并禁用调试功能,调试程序集将被删除,例如,这次逻辑工作正常。

    默认安装级别为3。

    有什么建议吗?

    1 回复  |  直到 15 年前
        1
  •  7
  •   liggett78    15 年前

    以防其他人陷入这种困境:显然,顶级功能不应该像在我的例子中那样命名为“all”——它可能对wix/windows安装程序有一些默认意义。把它改名为其他东西后,一切都按预期工作。