У меня есть приложение, которое будет развернуто как пакет MSI (созданный в WiX).
Я решаю, указать ли elevated
или limited
полномочия как требуется для установщика.
Приложение не включает, что-либо требующее подняло полномочия помимо местоположения установки по умолчанию, которое находится под Программными файлами.
Теперь проблема:
Если я указываю поднятые полномочия, то пользователю предлагает контроль учётных записей пароль администратора во время установки. Это не требуется и препятствует тому, чтобы неадминистраторские пользователи установили.
Если я указываю ограниченные полномочия, то пользователю дарят диалоговое окно для выбора местоположения установки с Program Files
быть значением по умолчанию. В случае, если они не изменяют местоположение установки (95% конечных пользователей, вероятно, не будут), затем установщик перестанет работать с сообщением, что они должны связаться с Администратором или запустить приложение как администратор. Если они запускают установщик как Администратор затем, они могут установить в Программные файлы без проблемы - но большинство пользователей не будет, вероятно, знать, как запустить установщик как администратор.
Я могу потенциально установить местоположение установки по умолчанию на, например, C:\Company name\Program\, но это кажется нестандартным мне, и большинству пользователей, вероятно, не понравится это (они, вероятно, привыкли к установке в Программные файлы).
Как Вы решаете эту проблему с устанавливанием приложений под ограниченными учетными записями пользователей?
Предложенное вами альтернативное расположение, непосредственно с диска C, скорее всего, также потребует повышенных привилегий. До Windows 7 я бы предложил использовать раннее пользовательское действие для изменения расположения по умолчанию для ограниченных установок. Обусловьте это свойством Privileged
(или, возможно, AdminUser
), проверьте, нужно ли устанавливать MSIUSEREALADMINDETECTION
для вашего случая, и используйте что-то вроде [LocalAppDataFolder]Company\Product
. К сожалению, такой подход приведет к тому, что пакет будет сложно установить для всех пользователей, поскольку вы должны предварительно поднять, а в ограниченном случае они все равно могут выбрать целевое местоположение, требующее поднятия. Они должны предварительно подниматься, потому что пакет должен быть помечен как не поднимающийся.
Если вы можете выбрать только Windows 7 и более поздние версии, вы можете условно установить MSIINSTALLPERUSER
, чтобы отменить место установки и требование поднятия, и вместо этого установить для каждого пользователя. В этом сценарии пользователю может быть задан вопрос, установить ли пакет для всех пользователей (требуется повышение уровня) или только для себя. Пакет может быть помечен как требующий повышения, а установка MSIINSTALLPERUSER
отменит это и пропустит приглашение UAC.
Запустите командную строку (cmd) от имени администратора.
Затем используйте команду msiexec для выполнения файла msi.
Вероятно, важнее, чтобы ваше программное обеспечение работало с обычными привилегиями пользователя, что, как я вижу, вы отметили, не является проблемой.
Нет ничего плохого в том, чтобы попросить права администратора для установки чего-либо.
Либо пользователь сам будет иметь данные, так как он работает под ограниченной учетной записью в целях безопасности, либо программное обеспечение будет установлено ИТ-отделом его компании в любом случае.