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, например, пользователь может выбрать в пользовательском диалоговом окне, хочет ли он установить эту функцию или нет