簡體   English   中英

使用 NSIS 檢查安裝的 Windows 服務器功能

[英]Check installed Windows Server Features with NSIS

我正在嘗試在 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 解析的字符串在那里工作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM