Можно ли установить в Program Files с ограниченными правами? - PullRequest
7 голосов
/ 06 мая 2010

У меня есть приложение, которое будет развернуто как пакет MSI (созданный в WiX).

Я решаю, указывать ли права elevated или limited в соответствии с требованиями установщика.

Приложение не содержит ничего, требующего повышенных прав, кроме местоположения установки по умолчанию, которое находится в разделе Program Files.

Теперь проблема:

  • Если я укажу повышенные привилегии , то пользователь UAC запрашивает пароль администратора во время установки. Это не требуется и не позволяет пользователям, не имеющим прав администратора, устанавливать.

  • Если я укажу ограниченные привилегии , то пользователю будет предложено диалоговое окно для выбора места установки с Program Files по умолчанию. В случае, если они не изменяют место установки (95% конечных пользователей, вероятно, не будут), тогда установщик не сможет с сообщением, что им следует связаться с администратором или запустить приложение от имени администратора. Если они запускают установщик с правами администратора, они могут без проблем устанавливать его в Program Files, но большинство пользователей, вероятно, не будут знать, как запустить установщик с правами администратора.

Я могу потенциально установить место установки по умолчанию, например, C: \ Company name \ Program \, но мне это кажется нестандартным, и большинству пользователей это, вероятно, не понравится (вероятно, они используются для установки в Program Files).

Как решить эту проблему с установкой приложений под ограниченными учетными записями пользователей?

Ответы [ 3 ]

6 голосов
/ 06 мая 2010

Альтернативное местоположение, которое вы предлагаете, прямо с диска C, вероятно, также потребует повышенных привилегий. До Windows 7 я предложил бы использовать раннее настраиваемое действие, чтобы изменить местоположение по умолчанию для ограниченных установок. Поставьте условие в свойство Privileged (или, возможно, AdminUser), убедитесь, что вам нужно установить MSIUSEREALADMINDETECTION для вашего случая, и используйте что-то вроде [LocalAppDataFolder]Company\Product. К сожалению, такой подход приведет к тому, что пакет будет трудно установить для всех пользователей, так как вы должны выполнить предварительный подъем, а в ограниченном случае они все равно смогут выбрать целевое местоположение, требующее повышения прав. Они должны быть предварительно подняты, потому что упаковка должна иметь маркировку, чтобы она не поднималась.

Если вы можете настроить таргетинг только на Windows 7 и более поздние версии, вы можете условно установить MSIINSTALLPERUSER, чтобы переопределить место установки и требование повышения прав, и вместо этого установить для каждого пользователя. В этом случае пользователю может быть предложено установить для всех пользователей (требуется повышение прав) или только для себя. Пакет может быть помечен для повышения прав, и настройка MSIINSTALLPERUSER переопределит это и пропустит приглашение UAC.

3 голосов
/ 10 мая 2010

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

В запросе прав администратора для установки чего-либо нет ничего плохого.

Либо у пользователя будут сами данные, поскольку он работает с ограниченной учетной записью в целях безопасности, либо программное обеспечение будет установлено ИТ-отделом его компании в любом случае.

0 голосов
/ 07 мая 2010

Запуск командной строки (cmd) от имени администратора.

Затем используйте команду msiexec для запуска файла MSI.

...