我正在使用NSIS來部署.Net應用程序。安裝/卸載過程正常,但我想添加一個最終的ngen步驟來提高啓動性能。從NSIS安裝程序調用ngen
不幸的是,谷歌沒有透露任何相關材料。以前沒有人做過這種事 - 這裏也許有人有一些想法?
在不太可能的情況下,這是不可能的,沒有醜陋的黑客支持,我會願意使用不同的安裝技術提供它可以在我的Linux生成服務器上運行。 (例如,這排除了WiX。)
任何想法?
我正在使用NSIS來部署.Net應用程序。安裝/卸載過程正常,但我想添加一個最終的ngen步驟來提高啓動性能。從NSIS安裝程序調用ngen
不幸的是,谷歌沒有透露任何相關材料。以前沒有人做過這種事 - 這裏也許有人有一些想法?
在不太可能的情況下,這是不可能的,沒有醜陋的黑客支持,我會願意使用不同的安裝技術提供它可以在我的Linux生成服務器上運行。 (例如,這排除了WiX。)
任何想法?
NGEN將在.NET框架目錄,如:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
選項1 - GetCORSystemDirectory()是你可以用它來獲得.NET Framework的目錄系統正API調用,但這裏的問題是,它聽起來像從閱讀文檔,它需要從.NET應用程序調用。因此,您可以運行一個小型的.NET應用程序,並將GetCORSystemDirectory()的結果寫入一個ini文件。也許搜索這個功能,看看你是否發現任何有用的谷歌。
選項2 - 您可以在預期路徑中採用.NET框架,並遍歷導演並找到一個以「v2.0」開頭的項目。
選項3 - 簡單地從你的isntaller中提取ngen然後運行它。這是我偶爾會遇到的重大問題。我不確定你可能遇到什麼副作用,這是否完全合法,或者是否有其他文件依賴。如果它和regasm.exe一樣,只要.NET框架已經安裝,你應該沒問題。
謝謝!似乎有一個現成的解決方案來獲得運行時:http://nsis.sourceforge.net/Get_directory_of_installed_.NET_runtime – BlackStar 2010-03-26 18:52:20
似乎還有一種方法,通過NSIS獲得運行時目錄:http://nsis.sourceforge.net/Get_directory_of_installed_.NET_runtime
一旦路徑是已知的,所有剩下的就是調用使用正確的參數NGEN。大! 「
我假設你也必須探測32位和64位目錄。 (「'Framework'」與「'Framework64」) – 2011-01-18 15:43:22
」注意:這裏假設ngen位於路徑或當前目錄中,它可能不在大多數系統中,因此要麼使用SetOutPath設置當前目錄,要麼使用ngen的完整路徑「 實際上,我無法找到調用ngen的可靠方法。也許這是信息在註冊表中的某處可用? – BlackStar 2010-03-23 11:27:19
謝謝!你的帖子,以及下面的帖子(在NGen道路上)讓我找到了一個可行的解決方案。 – BlackStar 2010-03-26 18:53:06
@BlackStar:您可以將您的工作解決方案添加到問題的最後?或者,甚至更好,將它添加到http://nsis.sourceforge.net上的wiki並鏈接到您的問題中?你不是唯一一個想從NSIS安裝程序運行ngen的人。:-) – 2010-03-27 00:05:16