【发布时间】:2011-09-24 02:28:50
【问题描述】:
我正在尝试在 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 解析的字符串在那里工作。
【问题讨论】:
-
NSIS 安装程序通常不会作为“受信任的安装程序”运行,您确定您是作为这个特殊用户运行的吗?
标签: powershell nsis windows-server