使用NSIS检查已安装的Windows Server功能

时间:2011-06-28 07:54:18

标签: powershell nsis windows-server

我正在尝试在Windows Server 2008R2,2008和2003上安装自定义构建软件。该软件需要安装Windows的“桌面体验”功能。

我知道我可以在2003年和2008年检查 servermanagercmd.exe (尽管它有点麻烦) - 不幸的是,这在2008R2(64位)内部不再起作用NSIS安装程序 - 如果我只运行命令它确实有效。从安装程序调用,我得到“servermanagercmd.exe不被识别为内部或外部命令,可操作程序或批处理文件。” - 错误,即使我将工作目录设置为c:\ windows \ system32 (是的,在64位机器上,但sysWOW64中没有servermanagercmd.exe)。 这是NSIS内部的代码行:

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

在2008R2中,我认为情况实际上会有所改善,因为默认情况下现在安装了PowerShell。但是,在尝试获取信息时,我需要先在PowerShell中加载ServerManager模块 - 但此模块不可用于读取 Trusted Installer 。所以我再次面临同样的情况:如果我从命令行运行powershell命令,它可以工作,但不能从NSIS安装程序内部运行。 再次,这是NSIS内部的代码行:

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

三个(!)(双)引号实际上是正确的。

那么,是否有人知道如何从NSIS安装程序内部检查Windows Server 2008R2中是否安装了Desktop-Experience(如果没有,则安装它)?该解决方案不需要在Server2003或2008上运行,因为从servermanagercmd.exe解析的字符串在那里工作。

1 个答案:

答案 0 :(得分:0)

您是否在x64.nsh中使用宏来关闭WOW64重定向? (或使用“$ windir \ sysnative \ servermanagercmd.exe”)