【问题标题】:Check installed Windows Server Features with NSIS使用 NSIS 检查已安装的 Windows Server 功能
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 谢谢,我不知道 x64.nsh - 会为我节省很多试错。我现在使用宏 DisableX64FSRedirection 并使用 servermanagercmd。再次,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多