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

.NET 對軟體安裝部署的衝擊:元資料、組件與 Side-by-Side 執行

     編輯:關於C語言

.NET 如何改變軟體安裝

.NET 引入新語言 C#、修改作業系統共享程式碼處理方式,根本性改變安裝部署模型。核心在於受管理程式碼與元資料。

受管理程式碼與元資料

  • 所有 MSIL 程式碼為受管理程式碼(C# 純受管理,C++ 可混合)。
  • 元資料描述程式碼中每個元素(型別、方法、組件等),使程式碼自我描述。
  • Runtime 利用元資料提供:記憶體管理、跨語言整合、程式碼安全、物件生命週期控制。

組件資訊清單

每個組件必須包含資訊清單,內容:

  • 組件身分識別(名稱、版本、公開金鑰)。
  • 包含檔案清單。
  • 匯出型別與資源。
  • 相依組件列舉。
  • 所需權限集。

資訊清單取代 COM 自我註冊,所有型別資訊內嵌於 DLL/EXE,安裝時無需寫入登錄表,實現 XCOPY 部署 基礎。

自安裝誤區

誤以為受管理程式碼只需複製檔案即可執行。實際上安裝程式仍需提供:

  • 友善使用者介面(選項選擇、授權協議)。
  • 建立捷徑、啟動項目、虛擬目錄。
  • 升級、修復、解除安裝支援。
  • 網路部署、授權管理。
  • 混合模式應用(受管理 + 非受管理)的相依性處理。

隔離應用程式與 Side-by-Side 元件

解決「DLL 地獄」的兩大機制:

機制原理優點缺點
隔離應用程式 應用程式自帶所有組件的隔離版本,不使用共享組件。 完全免受其他安裝影響。 需重寫程式碼,成本高,磁碟空間佔用大。
Side-by-Side 元件 多版本共享組件並存,作業系統依應用程式資訊清單載入正確版本。 不需重寫程式碼,共享磁碟空間,WinXP 系統組件已採用。 需撰寫應用程式資訊清單指定相依版本。

應用程式資訊清單範例:


<assembly>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="5.0.0.0" />
    </dependentAssembly>
  </dependency>
</assembly>

系統將依清單載入指定版本的 COMCTL32 v5,即使系統存在其他版本。

總結

.NET 透過元資料與組件模型奠定 XCOPY 部署基礎,Side-by-Side 技術解決版本衝突,但完整安裝體驗仍需專業安裝工具支援。開發者應理解組件資訊清單、應用程式資訊清單與版本原則,設計健全的部署策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved