Проверьте установленные возможности Windows Server с NSIS - PullRequest
2 голосов
/ 28 июня 2011

Я пытаюсь установить пользовательское программное обеспечение для сборки на Windows Server 2008R2, 2008 и 2003. Для установки программного обеспечения требуется функция «Desktop-Experience» из Windows.

Я знаю, что могу проверить с помощью servermanagercmd.exe (хотя это довольно громоздко) в 2003 и 2008 годах - к сожалению, это больше не работает в 2008R2 (64 бита) изнутри NSIS Установщик - он работает, если я просто запускаю команду. Вызванный из установщика, я получаю сообщение «servermanagercmd.exe не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.» - ошибка, даже если я устанавливаю рабочий каталог в c: \ windows \ system32 (да, на 64-битной машине, но в sysWOW64 нет servermanagercmd.exe). Вот строка кода внутри NSIS:

nsExec::ExecToStack 'servermanagercmd.exe -query | findstr "Desktop-Experience"'

В 2008R2 я думал, что ситуация действительно улучшится, так как PowerShell теперь установлен по умолчанию. Однако при попытке получить информацию мне нужно сначала загрузить модуль ServerManager внутри PowerShell - но этот модуль недоступен для чтения для Trusted Installer . Поэтому я снова сталкиваюсь с той же ситуацией: если я запускаю команду powershell из командной строки, она работает, но не изнутри установщика NSIS. Опять же, вот строка кода внутри NSIS:

nsExec::ExecToStack 'powershell.exe "& "Import-Module ServerManager"'

Три (!) (Двойных) кавычки на самом деле правильные.

Итак, кто-нибудь знает способ проверить, установлен ли Desktop-Experience (и установить его, если нет) в Windows Server 2008R2 из установщика NSIS? Решение не должно работать на Server2003 или 2008, потому что там работает разбор строк из servermanagercmd.exe.

1 Ответ

0 голосов
/ 28 июня 2011

Используете ли вы макросы в x64.nsh для отключения перенаправления WOW64?(Или используйте «$ windir \ sysnative \ servermanagercmd.exe»)

...