首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

免安裝 .NET Framework 執行程式:利用飛信 VMDotNet 虛擬環境

     編輯:關於C#

痛點:目標機器未安裝 .NET Framework

早期 .NET 應用部署常面臨「客戶電腦沒裝 Framework、不想裝、不能裝」的困境。主流解決方案有:

  • 商業打包工具:Xenocode PostBuild、Salamander .NET Linker、VMware ThinApp
  • 開源/免費:ILMerge(僅合併組件)、Costura.Fody(內嵌 DLL)
  • 本文介紹的輕量方案:騰訊飛信自帶的 VMDotNet 虛擬運行時

原理:攜帶專屬 CLR 與基礎類庫

飛信安裝目錄下的 VMDotNet\ 資料夾包含:

  • FetionVM.exe:自訂載入器
  • mscorlib.dll、System.dll 等核心組件(經修改/裁剪)
  • 模擬登錄與檔案系統的虛擬化層

執行方式:

FetionVM.exe YourApp.exe

載入器會在虛擬環境中初始化 CLR,載入你的組件並執行,完全不依賴系統安裝的 .NET Framework。

實操步驟

  1. 安裝飛信(任意版本),複製安裝目錄下完整的 VMDotNet 資料夾
  2. 將你的 .NET 應用程式(.exe + 相依 .dll)放入同層或子目錄
  3. 建立啟動腳本 Launch.bat:
    @echo off
    VMDotNet\FetionVM.exe MyApp.exe
    
  4. 打包發布:整個資料夾複製給用戶,雙擊 Launch.bat 即可運行

進階:智慧啟動器(偵測系統 Framework)


// Launcher.cs
class Program
{
    static void Main(string[] args)
    {
        string appPath = "MyApp.exe";
        if (IsNetFrameworkInstalled(4, 0)) // 檢查註冊表
        {
            Process.Start(appPath); // 直接運行
        }
        else
        {
            Process.Start("VMDotNet\\FetionVM.exe", appPath); // 虛擬環境
        }
    }

    static bool IsNetFrameworkInstalled(int major, int minor)
    {
        using (var key = Registry.LocalMachine.OpenSubKey($@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v{major}.{minor}"))
        {
            return key?.GetValue("Install")?.ToString() == "1";
        }
    }
}

限制與注意事項

替代方案對比

限制說明
相容性僅支援 .NET 2.0/3.5 時代組件;.NET 4.0+、.NET Core/.NET 5+ 無法運行
加密/混淆衝突大多數 .NET 保護殼(如 Themida、VMProtect、.NET Reactor)加密後的組件無法在虛擬環境載入
功能缺失WPF、WCF、ASP.NET、System.Transactions 等高階功能可能不支援
法律風險飛信 VMDotNet 為騰訊專有元件,商業再發布需確認授權

結語

VMDotNet 是解決 Legacy .NET 2.0/3.5 應用「免安裝部署」的輕量應急方案。現代專案應優先採用 .NET Core/5+ Self-contained 或 Native AOT,獲得官方支援、完整功能與長期維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案適用版本體積相容性授權
VMDotNet2.0/3.5~15 MB中專有
Self-contained .NET Core3.1/5.0/6.0/7.0/8.0~60 MB高MIT
Native AOT (.NET 7+)7.0/8.0~5-10 MB高(有平台限制)MIT
Xenocode/Salamander2.0-4.8~20-40 MB高商業