讓C#程序run anywhere脫離.net Framework框架環境運行

爲了運行一個100K的C#程序,而安裝100M多的.NET 框架。。。。。於是發現偷懶的方法多多,試驗總結如下:

現成的工具有:

(1)Xenocode 的postbuidle或者vas

(2)Salamander .NET Linker .
(3)MaxToCode 作者以前做的 framework linker. 以及一些支持註冊表模擬和文件模擬的打包工具molebox,thinstall等.
(1)好像是使用虛擬機環境來模擬框架需要的註冊表信息和文件信息。Xenocode號稱的生成native代碼功能實際上就是指的這個功能。感覺兼容性不怎麼好。
(2)是Remotesoft的一個產品,似乎沒有可以下載的,但是其兼容性似乎很不錯。移動的飛信軟件就利用了它的核心。
(3)實際上是利用了 Remotesoft的內核文件,然後自己實現了一個loader。好像是使用的早期的內核文件,兼容性也不太好。
查閱資料,並按照資料的方法進行了試驗,發現有一種方法很不錯,記錄下來,記錄下來:

首先下載一個飛信,並安裝起來。在安裝目錄中有一個VMDotNet 目錄(默認安裝的話,位置在C:/Program Files/China Mobile/Fetion下)。

把這個目錄複製出來,放到自己的C#程序一起,當在沒有安裝.net框架的環境裏運行時,用這個命令:

FetionVM.exe 路徑/C#程序

FetionVM.exe這個文件在VMDotNet 目錄裏可以找到
這個是虛擬環境的loader。就是直接把你的 .Net 程序 作爲命令行參數傳遞給 FetionVM.exe 就可以在這個虛擬環境中執行你的。net程序了。

可以自己寫一個啓動程序,首先檢查是否安裝了框架,如果有則可以直接運行。否則調用虛擬環境運行。

據資料記載:這個啓動程序飛信也有,如果不想自己寫就直接拿飛信安裝目錄中的 Feition.exe,但是這樣的話你自己的.Net程序的名字必須叫 FeitionFX.exe 。把它和Feition.exe 放在同一目錄下,直接執行 Feition.exe 即可。

另外,如果你對。Net程序使用了加密保護,需要注意一下,目前市面上的大部分。Net加密工具加密後的程序集不能在這個虛擬環境中運行的。

這個東西除了能實現脫離 。net框架運行外,還有另外一個作用讓.net程序運行在指定版本的 .net 框架中(雖然機器上安裝了.net框架,仍然可以讓.net程序在這個虛擬框架下運行)。

往往要在別人機器上運行自己.net的程序,還要一再和別人解釋爲什麼運行之前還要在他的電腦上安裝一個100M多的大傢伙,現在終於可以擺脫這種尷尬了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章