Wix как скрыть опции функций (без подфункций)

Есть похожий вопрос

Изменить контекстное меню (selectiontree) в диалоге настройки?

но ссылка в принятом ответе гласит:

"Невозможно удалить всю функцию, которая будет установлена ​​на локальном жестком диске из опций. Она отображается только при наличии подфункций и позволяет устанавливать подфункции, а также саму функцию, в отличие от" Будет установлена ​​на локальном жестком диске, который устанавливается только ". выбранные функции и не влияет на подфункции ".

Однако у меня нет подвохов. Как убрать опцию Вся функция...?

Вот код ниже:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Product Id="*" Name="WixTestFeatureTree" Language="1033" Version="1.0.0.0" Manufacturer="TestManufacturer" UpgradeCode="bb04a635-6251-4fd5-8d2f-182d3441dc0a">
      <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

      <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
      <MediaTemplate />

      <UIRef Id="WixUI_FeatureTree" />
      <UIRef Id="WixUI_ErrorProgressText" />

      <Feature Id="ExeFeature" Title="The EXE file" Level="1">
         <Component Id="TheApp" Guid="*" Directory="INSTALLFOLDER">
            <File Id="TestExe" Source="Test.exe" Vital="yes"></File>
         </Component>
      </Feature>

      <Feature Id="PdfFeature" Title="The PDF file" Level="1">
         <Component Id="ThePDF" Guid="*" Directory="INSTALLFOLDER">
            <File Id="TestPDF" Source="Test.pdf" Vital="yes"></File>
         </Component>
      </Feature>
   </Product>

   <Fragment>
      <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="WixTestFeatureTree" />
         </Directory>
      </Directory>
   </Fragment>
</Wix>

2 ответа

Решение

Похоже, установщик Windows всегда показывает, что вся функция будет установлена ​​на локальном жестком диске, даже если нет подфункций. По крайней мере, этот элемент присутствовал во всех случаях, которые я тестировал, где не было видимых субфункций. Это также может зависеть от версии установщика Windows, которую я тестировал в Windows 7 со всеми последними обновлениями.

Я всегда думал, что установщик Windows не отображает всю функцию будет установлена ​​на локальном жестком диске для функции, которая не имеет подфункций. Последние тесты доказали, что я был не прав.

Вам нужно добавить тип пользовательского интерфейса, чтобы в инсталляторе был другой интерфейс.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Product Id="*" Name="WixTestFeatureTree" Language="1033" Version="1.0.0.0" Manufacturer="TestManufacturer" UpgradeCode="bb04a635-6251-4fd5-8d2f-182d3441dc0a">
      <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

      <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
      <MediaTemplate />

      <UI Id="MyWixUI_FeatureTree">
         <UIRef Id="WixUI_FeatureTree" />
      </UI>
      <UIRef Id="WixUI_ErrorProgressText" />

      <Feature Id="ExeFeature" Title="The EXE file" Level="1">
         <Component Id="TheApp" Guid="*" Directory="INSTALLFOLDER">
            <File Id="TestExe" Source="Test.exe" Vital="yes"></File>
         </Component>
      </Feature>

      <Feature Id="PdfFeature" Title="The PDF file" Level="1">
         <Component Id="ThePDF" Guid="*" Directory="INSTALLFOLDER">
            <File Id="TestPDF" Source="Test.pdf" Vital="yes"></File>
         </Component>
      </Feature>
    <UIRef Id="WixUI_Mondo"></UIRef>
   </Product>

   <Fragment>
      <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="WixTestFeatureTree" />
         </Directory>
      </Directory>
   </Fragment>
</Wix>

добавлять <UIRef Id="WixUI_Mondo"></UIRef>, также добавьте ссылку на WixUIExtension.dll

каждая функция имеет **Level**Атрибут level=1 означает, что функция будет установлена, если вы измените уровень на 1000, например, пользователь может выбрать в пользовательском диалоговом окне, хочет ли он установить эту функцию или нет

Другие вопросы по тегам