2

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

我知道我可以在 2003 年和 2008 年使用servermanagercmd.exe (尽管它有点麻烦)进行检查 - 不幸的是,这在 NSIS 安装程序中的 2008R2(64 位)中不再起作用- 如果我只是运行命令它确实有效。从安装程序调用,我收到“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 解析的字符串在那里工作。

4

1 回答 1

0

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

于 2011-06-28T13:17:39.560 回答