2011-06-28 47 views
2

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

+0

NSIS安裝程序通常不會作爲「可信安裝程序」運行,您確定您正在以此特殊用戶身份運行嗎? – Anders

回答

0

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

+0

謝謝,我不知道x64.nsh - 會爲我節省很多試驗和錯誤。我現在使用宏DisableX64FSRedirection並使用servermanagercmd。再次,非常感謝! –