利用Salamander .Net Linker生成可脫離.net framework環境執行的程式

luckeryin發表於2009-04-13

這是對上一篇文章: 驗證C#程式脫離.net framework環境執行(飛信法)的擴充,在文章的末尾,提到了飛信法的幾點不便,於是有網友提出了自己編寫loader的方法來解決,這當然是一個好方法,但是loader需要用能生成native型別程式碼的語言工具來編寫,如VC++等,然後還要判斷是否安裝了.net framework,如果安裝了,就直接執行,如果沒安裝再呼叫虛擬機器的loader程式.這種方法有難點是對VC++的熟悉和如何判斷.net framework是否安裝.這裡要著重介紹的是利用Salamander .Net Linker來生成.其實據說飛信用的就是這個工具來製作的獨立執行程式的.


Linker是一個命令列工具,它以將我們的.net程式生成可脫離.net framework環境執行的程式 .
Linker不支援中文的路徑,在程式中也不能有中文的識別符號.
Linker 有2種部署方式-mdeploy和-native,-mdeploy方式提取的虛擬環境大概40MB左右,而-native方式則是將MSIL程式碼轉換為NativeImages,配合-il指令使用,最終提取出來的虛擬環境不到30MB.
語法分別是:
-mdeploy方式:linker -mdeploy -casoff 您的程式.exe (-casoff是為了避免一些bug)
-native方式:linker -native -il System -il System.* -il mscorlib -il accessibility 您的程式.exe
注意:-native方式必須附加這4個-il,意思是指這些程式集不轉換為NativeImages,如果未附加-il,則非常耗時,而且提取出來的框架將近100MB。

這裡採用的Salamander .Net Linker是從網上下載的破解版,僅供交流學習之用.

步驟:
1,點選執行:setenv.bat自動定位到當前Linker所在的目錄.
2,採用上面提到的第二種方式.在提示符下輸入:linker -native -il System -il System.* -il mscorlib -il accessibility mygamePath.exe,執行後,程式會在mygamePath.exe 所以目錄下生成一個名叫mdeployed 的資料夾.裡面就是生成的可以單獨執行的程式了.

這個過程很簡單.到純淨的XP系統上測試執行成功.

相關文章