我試圖在Windows Server 2008R2,2008和2003上安裝自定義生成軟件。該軟件需要安裝Windows的「桌面體驗」功能。使用NSIS檢查已安裝的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模塊 - 但該模塊不適用於受信任的安裝程序。所以我又面臨同樣的情況:如果我從命令行運行我的powershell命令,它可以工作,但不能從NSIS安裝程序中運行。 同樣,這裏的代碼中NSIS行:(!)
nsExec::ExecToStack 'powershell.exe "& "Import-Module ServerManager"'
三(雙)引號實際上是正確的。
那麼,有沒有人知道在NSIS安裝程序中檢查Windows Server 2008 R2中是否安裝了Desktop-Experience(如果沒有安裝它)的方法嗎?該解決方案不需要在Server2003或2008上工作,因爲servermanagercmd.exe的字符串解析在那裏工作。
NSIS安裝程序通常不會作爲「可信安裝程序」運行,您確定您正在以此特殊用戶身份運行嗎? – Anders