Как создать установщик, не требующий прав администратора?

При создании установки / MSI с Visual Studio можно ли настроить простое приложение, для установки которого не требуются права администратора? Если это невозможно под Windows XP, возможно ли это под Vista?

Например, простое приложение для обработки изображений, которое позволяет вставлять фотографии поверх фона. Я считаю, что для установки в папку Program Files требуются права администратора? Можем ли мы вместо этого установить в папку \ AppData?

Цель состоит в том, чтобы создать приложение, которое будет устанавливаться для пользователей, которые не являются членами группы администраторов на локальном компьютере, и не будет отображать приглашение UAC в Vista.

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

Обновлять:

Можете ли вы упаковать щелчок после установки в обычный установщик типа setup.exe? Вы можете спросить, зачем нам это нужно - причина в том, что у нас есть установщик, который выполняет предварительную проверку и устанавливает все необходимое (например, .NET), а затем мы загружаем и запускаем MSI. Мы также хотели бы отображать обычный стартовый экран установщика, даже если отображается только это. Мы не против, если приложение может видеть только один пользователь (пользователь, для которого оно установлено).


person Pete    schedule 16.09.2008    source источник


Ответы (4)


ClickOnce - хорошее решение этой проблемы. Если вы перейдете в Project Properties> Publish, вы можете настроить для этого параметры. В частности, стоит обратить внимание на "Режим установки и настройки":

  • Приложение доступно только в Интернете - по сути, это приложение для однократного запуска.
  • Приложение также доступно в автономном режиме (запускается из меню «Пуск») - приложение устанавливается на ПК.

На самом деле вам не обязательно использовать средства веб-развертывания ClickOnce. Если вы выполните Build> Publish, а затем заархивируете содержимое папки publish \, вы сможете эффективно распространить это как установщик. Чтобы сделать его еще более плавным, создайте самораспаковывающийся архив из папки, в которой автоматически запускается файл setup.exe.

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

person gregmac    schedule 16.09.2008

Vista более ограничивает подобные вещи, поэтому, если вы не можете сделать это для XP, можете поспорить, что Vista вам тоже не позволит.

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

К счастью, если вы используете .Net, вы можете использовать развертывание ClickOnce вместо msi, что должно позволить вам выполнить установку в папку в профиле каждого пользователя, не требуя прав администратора.

person Joel Coehoorn    schedule 16.09.2008

Единственный известный мне способ сделать это - создать приложение ClickOnce в .NET 2.0+.

Если у пользователя вашего приложения установлены правильные предварительные требования, приложение можно просто «запустить».

Проверить:

person MrHinsh - Martin Hinshelwood    schedule 16.09.2008

ЕСЛИ UAC включен, вы не сможете писать в Program Files. При установке в \ AppData программа действительно будет установлена ​​только для одного пользователя.

Однако вы должны отметить, что любые изменения конфигурации, которые потребуют изменений в реестре, вероятно (мне придется дважды проверить это) с правами администратора. Изначально изменения фона рабочего стола в конечном итоге сохраняются в HKEY_CURRENT_USER.

person junkforce    schedule 16.09.2008