Загрузчики установщика Windows - разрешения

У меня есть собственные загрузчики для SQL Server 2008 R2, .NET Framework 3.5, .NET Framework 4 и т. Д. Я использую проект развертывания Visual STudio 2010 для развертывания приложения .NET 4. Я знаю, что они уходят.

Есть ли способ указать загрузчику на сбой, если у пользователя нет определенных прав Windows? Программа установки SQL Server, похоже, позаботится об этом сама по себе, но выдает очень загадочные коды ошибок и тексты, которые пользователям трудно отследить. Я знаю, что могу установить обход для версий Windows, а SqlCheck.exe выполняет какую-то проверку версии. Придется ли мне создавать собственное приложение, которое проверяет разрешения пользователя, и загрузчик мог бы проверять его код возврата, аналогично SqlCheck.exe?

Можно ли это сделать с помощью генератора манифеста начальной загрузки, и поддерживается ли BMG в Visual Studio 2010? Похоже, что больше не поддерживается, но я не уверен, есть ли что-нибудь особенное для VS 2010 / Windows Installer 4.5 http://archive.msdn.microsoft.com/bmg


person Stealth Rabbi    schedule 25.10.2011    source источник


Ответы (1)


Максимум, что вы можете сделать с помощью стандартного загрузчика Visual Studio, - это проверить AdminUser значение свойства. В предопределенном предварительном компоненте профиля клиента .NET Framework 4.0 используется аналогичное условие. Вы можете найти его манифест в этой папке:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client

Это также должно поддерживаться генератором манифеста загрузчика.

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

Так что этот подход практически бесполезен в Vista или более поздних версиях.

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

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

Если у вас возникнут проблемы с этим подходом, я почти уверен, что они вызваны не привилегиями. Скорее всего, ваше предварительное условие настроено неправильно (например, неправильная командная строка).

person cosmin    schedule 25.10.2011
comment
Это определенно проблемы с разрешениями / привилегиями на основе журналов установки. К сожалению, наша пользовательская база имеет широкий спектр привилегий, доменов и т. Д. - person Stealth Rabbi; 25.10.2011
comment
Вы упомянули, что SQL Server показывает ошибки во время установки. Повышается ли процесс установки через приглашение UAC? - person cosmin; 25.10.2011
comment
Я не слышал об ошибках в Vista / Win7. 99% используют XP SP3, поэтому нет UAC. - person Stealth Rabbi; 25.10.2011
comment
Работает ли он при использовании параметра «Запуск от имени администратора» или при запуске установки из командной строки с повышенными привилегиями? Кроме того, запускается ли установщик SQL Server напрямую или с помощью настраиваемой командной строки? - person cosmin; 25.10.2011
comment
Пользователь входит в Windows с учетной записью, которая, по его мнению, имеет необходимые права. Я не думаю, что они пробовали использовать командную строку с повышенными правами. SQL Server устанавливается с использованием автоматической установки из командной строки, как это предусмотрено загрузчиком для SQL 2008, но мы устанавливаем SQL 2008 R2. - person Stealth Rabbi; 26.10.2011
comment
Тогда командная строка неверна. Если это будет проблема с разрешениями, установщик SQL Server должен показать сообщение «Доступ запрещен». - person cosmin; 26.10.2011
comment
Это выходит за рамки моего первоначального вопроса. Это не повсеместная ошибка. Загрузчик устанавливается для многих пользователей, но не работает для некоторых пользователей, у которых нет необходимых разрешений. Я пытаюсь заранее проверить разрешения, чтобы представить более понятное сообщение, чем коды загадочных ошибок, представленные сбойным установщиком SQL Server без вывода сообщений. - person Stealth Rabbi; 26.10.2011
comment
Возможно, я неправильно понимаю проблему. Какие именно сообщения вы имеете в виду? - person cosmin; 26.10.2011
comment
Что ж, SQL Server выводит загадочные недокументированные коды ошибок исключений в журнал установки. Мы обнаружили, что они были результатом того, что человек, выполняющий установку, не имел SeDebugPrivilege и т. Д. Я хотел добавить это как условие FailIf в загрузчик для этого конкретного кода. Я думаю, мне нужно написать собственное приложение, похожее на SqlCheck.exe, которое возвращает значение, соответствующее отсутствующим привилегиям, если таковые имеются. - person Stealth Rabbi; 28.10.2011