Я пытаюсь установить пользовательское программное обеспечение для сборки на 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.