Dot-Net

為可以在 Windows 和 OS X 上執行的 .NET 應用程序建構安裝程序?

  • August 3, 2009

我很驚訝我找不到這個問題已經問過了,所以如果我只是錯過了它,請及時通知。

我需要在 .NET 中編寫一個非常小、相當簡單的應用程序,最終消費者將下載並安裝在他們的系統上。Silverlight 的沙盒模型將不起作用 - 它必須是完整下載、安裝的執行檔。

這是我所知道的:

  • 我開發了在受控桌面環境中執行的應用程序——例如,在一百台內部電腦上執行的 IT 應用程序。
  • 我已經使用 Mono 開發了應用程序

我不知道的是:

  • 如何創建一個靈活、健壯的安裝程序,可以在無數不受控制的桌面配置和環境中執行。
  • 如何對針對 Mac OSX 的 Mono 執行相同操作。
  • 安裝廣泛分佈的最終使用者應用程序的常見問題是什麼,以及如何緩解這些問題?

我正在尋找最好的資源來填補我的知識空白

有關的

等效於帶有 Mono 的 OSX 上的 Windows 服務

對於 Windows,請考慮Windows Installer XML (WiX)。對於 OSX,您需要生成一個 .app 包。這是一個使用Monobjc項目中包含的 nant 任務的範例。

以下是您將面臨的一些主要問題:

在 Windows 上:

  • 您的安裝程序必須檢測以前/舊版本並酌情關閉/解除安裝/遷移。NSIS 和 WiX 都有這方面的機制。
  • 您的安裝程序/應用程序必須與不同版本的 Windows(XP、Vista、7)和不同版本的 .NET(最終為 2.0、3.0、3.5)兼容。實際上,測試這是您面臨的更乏味的任務之一。我強烈建議為此使用一些乾淨的虛擬機映像。

在 OSX 上:

  • 您很可能希望發布一個獨立的應用程序包,這意味著 mono 將捆綁在您的 .app 中。這將為您的可分發文件增加約 50mb。
  • 您必須引用不同版本的 Monobjc 來支持 OSX 10.4 和 10.5,您需要配置您的建構來執行此操作,並測試這兩個版本。
  • 通過在程式碼庫上執行Mono Migration Analyzer (MoMA) ,確保您的 c# 程式碼未使用 Windows/.NET 特定呼叫。

升級:

您還沒有提到您計劃如何提供升級。NSIS 和 WiX 具有處理升級的能力。確保在部署初始版本之前製定好建構版本控制方案。在 OSX 上,Monobjc 可以與Sparkle集成。

引用自:https://stackoverflow.com/questions/1223203