Как заставить setup.exe из проекта установки VS2010 запрашивать права администратора? - PullRequest
0 голосов
/ 16 сентября 2011

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

Я развертываю приложение .NET с VS2010.У меня есть проект C # Windows Forms и проект развертывания.Мне нужно, чтобы программа установки работала с правами администратора, потому что приложение установлено для всех пользователей, и была сделана запись в реестре.

При запуске setup.exe у меня нет запроса на повышение привилегий.Установщик просто запустится и предложит установить в Program Files (x86), что хорошо.После нажатия «Далее» программа установки запускается и завершает работу с сообщением об успешном завершенииЧто в основном ложь, потому что она не была успешно установлена.Вместо этого он помещает exe-приложения непосредственно в C: \.

. Как мне заставить установщика запрашивать права администратора.Или я должен положиться на моего клиента, который щелкнет правой кнопкой мыши по настройке и выберет «Запуск от имени администратора», что очень подвержено ошибкам?

Разъяснения по поводу моей настройки :

  • В представлении «Файловая система» проекта установки я добавил (среди прочего) «Первичный вывод из проекта 01 (Active)» и «Создание выходов из проекта 01 (Active) в« Папку приложения ». Я также добавил ярлык для»Первичный вывод "в" Меню программ пользователя \ CompanyName \ ProgramName ".
  • В представлении реестра я добавил запись в HKEY_CLASSES_ROOT, поскольку мне нужно зарегистрировать обработчик URL.

Я такжеизменил настройки установки: я установил InstallAllUsers в True, потому что он должен был это делать.

Когда я собираю и запускаю setup.exe двойным щелчком (или выбирая Install из контекстного меню проекта), я всегда получаютот же результат: программа установки запускается без запроса прав администратора, запрашивает место установки (которое я оставляю по умолчанию C: \ Program Files (x86) \ Company \ ProgramName) и затем нажимает Далее.В результате исполняемый файл помещается непосредственно в C: \, а созданный ярлык, конечно, указывает на Nirvana.

Если я запускаю setup.exe вручную, как администратор, все работает нормально.Но это не может быть серьезно путь.

Так, как я могу сказать, чтобы установка всегда работала от имени администратора?

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

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

Я недавно столкнулся с этой проблемой. В моем случае причина в том, что на компьютере через GPO была установлена ​​политика AlwaysInstallElevated. Политика была установлена ​​на 1 в политике для каждого компьютера и 0 в политике для каждого пользователя. Эти политики можно настроить вручную, чтобы воспроизвести влияние, которое они оказывают на установщики MSI

Используя msexec /log install.log /i Deploy.msi, у меня был журнал установки, и в нем были такие строки:

MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property TARGETDIR
MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property VSDNETURLMSG
MSI (s) (A4:8C) [13:00:42:885]: Ignoring disallowed property VSDNETMSG

Кажется, что Visual Studio неправильно устанавливает SecureCustomProperties в MSI, и требуется какая-то постобработка. Я думаю, что переход на WiX может быть лучшим долгосрочным решением.

A сообщение в блоге на MSDN - это то, что я нашел, что помогло мне найти причину этой проблемы.

1 голос
/ 24 июля 2012

Я столкнулся с той же проблемой, что и вы, и нашел для нее достаточно хорошее решение.Так что это может сработать и для вас.Решение описано здесь:

Проект установки VS2010 - Запуск от имени администратора

Я кратко повторю решение здесь.По сути, вам нужно вручную отредактировать файл проекта установки (.vdproj) и следующее свойство в TRUE:

"MsiBootstrapper"
{
    ...
    "RequiresElevation" = "11:TRUE"
}
0 голосов
/ 16 сентября 2011

При запуске setup.exe у меня не запрашивается повышение привилегий.

Это нормальное поведение. Boostrapper не нуждается в возвышении.

Что в основном ложь, потому что она не была успешно установлена. Вместо этого он помещает исполняемый файл приложения непосредственно в C:.

Итак, оно установило ваше приложение, но не в том месте. Это не связано с возвышением. В редакторе файловой системы вашего проекта установки вы добавили файлы приложения? Вы добавили их в «Папку приложения»?

Как заставить установщика запрашивать права администратора.

Пакет MSI, установленный для всех пользователей, автоматически запрашивает повышение прав при нажатии кнопки Установить. Если он не повышается автоматически и устанавливается в отдельном расположении (например, C :), установка завершается неудачно и на целевой машине ничего не копируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...