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

#visual-studio-2010 #windows-installer #setup-deployment #bootstrapper

#visual-studio-2010 #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

Ответ №1:

Самое большее, что вы можете сделать со стандартным загрузчиком Visual Studio, — это проверить значение свойства AdminUser. Предопределенное предварительное условие профиля клиента .NET Framework 4.0 использует аналогичное условие. Вы можете найти его манифест в этой папке:

 C:Program FilesMicrosoft SDKsWindowsv7.0ABootstrapperPackagesDotNetFX40Client
 

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

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

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

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

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

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

Комментарии:

1. Это определенно проблемы с разрешениями / привилегиями, основанные на журналах установки. К сожалению, наша пользовательская база имеет широкий спектр привилегий, доменов и т. Д.

2. Вы упомянули, что SQL Server показывает ошибки во время установки. Выполняется ли его процесс установки с помощью приглашения UAC?

3. Я не слышал об ошибках в Vista / Win7. 99% используют XP SP3, поэтому UAC отсутствует.

4. Работает ли это при использовании опции «Запуск от имени администратора» или при запуске установки из командной строки с повышенными правами? Кроме того, запускается ли установщик SQL Server напрямую или с помощью пользовательской командной строки?

5. Пользователь входит в Windows с учетной записью, которая, по его мнению, обладает необходимыми привилегиями. Я не думаю, что они пытались использовать командную строку с повышенными правами. SQL Server устанавливается с помощью автоматической установки из командной строки, как предусмотрено загрузчиком для SQL 2008, но мы устанавливаем SQL 2008 R2.