«Скрыть» функции, основанные на ALLUSERS / MSIINSTALLPERUSER - PullRequest
0 голосов
/ 08 октября 2018

У меня есть установщик, который я преобразовываю из установки только для администратора в Единый пакет авторинга , который можно установить для текущего пользователя или для всех пользователей.Две мои функции требуют записи в раздел реестра, который не будет доступен обычному пользователю.Они имеют дело с интеграцией в другое приложение, поэтому я не могу записать значения реестра где-то еще в пространстве пользователя ... Они должны идти в это место.

Я не обеспокоен тем, что пользователи не могутустановите эти 2 конкретные функции, если они не являются администраторами, и функции установщика без проблем, если они не выбраны, но я хочу, чтобы они вообще не отображались в дереве компонентов, и убедитесь, что они не включены в «завершенную» установку.

Решения, которые я видел, позволяют мне ставить условия вокруг компонентов, чтобы компоненты не устанавливались ... или помещать условие внутри функции, которое установило бы ее уровень на какое-то высокое значение.Как я могу полностью отключить и / или скрыть эту функцию, если ALLUSERS = 2 или MSIINSTALLPERUSER = 1.

1 Ответ

0 голосов
/ 09 октября 2018

Настройки для каждого пользователя : Я не буду лгать вам, я активно избегаю такого рода настроек.Я считаю, что установки MSI для каждого пользователя "не идеальны".Это связано с плохим обслуживанием (обновления, исправления и т. Д.) И рядом других деталей. Некоторые подробности в середине страницы здесь .

Некоторые ссылки для тех, кто читает этот ответ (я думаю, что вы читали это):

Условия функции : При этом вы можете использовать условия функции для отмены выбора функций в зависимости от того, определенное условиеэто правда или ложь.Вы можете даже установить Level функции на 0, которая будет полностью скрывать его от GUI во время установки.Вы можете попробовать это.Пожалуйста, прочитайте связанный ответ ниже (выделен жирным шрифтом).Он содержит более подробное объяснение состояния функций.

У меня нет времени для проверки этого, но вот макет WiX, который вы можете попробовать:

<Feature Id="MyFeature" Level="1"> <!--Default to install feature-->

    <Condition Level="0"> <!--Do not install feature if condition is true-->
       ALLUSERS=2 OR MSIINSTALLPERUSER=1
    </Condition>

</Feature>

Эти ответы могутпомочь вам получить обзор этого:


Скрыть проверку возможностей : я добавлю небольшой фрагмент, который можно использовать для проверки работы скрытия функции.Он заставляет рассматриваемое условие быть истинным, устанавливая его равным 1 - в отличие от использования «реального условия», которое может неожиданно быть ложным.

<Feature Id="SupportingFiles" Title="SupportingFiles" Level="1">
   <Condition Level="0">1</Condition>
</Feature>

Это должно скрыть функцию SupportingFiles из вида в графическом интерфейсе настройки, и он также не должен устанавливать его.Пожалуйста, дайте мне знать, если вы видите другое поведение.


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

Я не уверен, что это будет работать.Я проверю, когда у меня будет шанс.Просто добавьте эту ссылку на данный момент.

ОБНОВЛЕНИЕ : Я не могу исследовать это прямо сейчас.Я хочу предупредить вас о возможности добавления временных строк в базу данных во время установки.Возможно, это способ скрыть функцию "в интерактивном режиме".Я просто не знаю, так как я никогда не пробовал. Вот первая ссылка, которую я нашел во временных записях внизу - ссылки .Никаких гарантий.

Кроме этого, я полагаю, вы можете использовать внешний графический интерфейс запуска.Я мог бы прокомментировать это позже. Я недавно писал об этой проблеме (внешний графический интерфейс) .


Некоторые дополнительные ссылки для справки :

...