Electron 是一個方便的跨平台桌面程式開發架構,透過 JavaScript, Bootstrap, CSS 就可以快速打包一套在多個作業系統上運行的自適應(Adaptive) 使用者介面。但我一直有個每次都會困擾很久的技術問題, Electron 釋出的 APP 如何管理與持續維護。

先聊聊 Electron 內部的更新技術套件- electron-updater – npm (npmjs.com)
electron-updater 是 Electron 提供的自動更新技術,不僅僅可以提供在 Linux, Windows 與 Mac 均能實踐,這無疑是這類型跨平台桌面應用程式開發的利器。但我們也仔細看一下針對這3者更新機制對於其安裝檔的需求差異,眼尖的你應該也很快就發現:

我們先談最常見的 Squirrel 與 NSIS ,這其實是兩者有點差異的技術,怎麼說呢? 我想就蹭一下最近很夯的 ChatGPT

Eidolon: Squirrel 與 NSIS 差異?

ChatGPT:
Squirrel 是一個輕量級的 C ++ 語言,用於開發和編譯跨平台的應用程序。它提供了一個功能強大的語言,可以用於構建複雜的應用程序,並支持多種編程模型,如面向對象編程,函數編程和面向過程編程。

NSIS 是一個開源的軟件安裝系統,用於創建跨平台的安裝程序。它使用一個模塊化的腳本語言,可以用來創建複雜的安裝程序,並支持多種操作系統,包括 Windows、Linux 和 Mac OS X。它也支持多種編程模型,如面向對象編程、函數編程和條件編程。

Eidolon: Squirrel 與 NSIS 何者使用最為廣泛?
ChatGPT: 
NSIS 是一個自由開源的軟體安裝系統,它是一個用於創建安裝程序的框架,可以讓開發人員輕鬆地創建具有複雜功能的安裝程序。NSIS 已經被許多公司和開發人員使用,包括Mozilla、Skype、Google Chrome 和 iTunes 等。

Squirrel 是一個開源的軟體安裝器,它是一個用於創建安裝程序的框架,它可以讓開發人員輕鬆地創建具有複雜功能的安裝程序。Squirrel 已經被許多公司和開發人員使用,但它並不像NSIS那樣廣泛使用

上面的內容是 ChatGPT 的回覆,就我自己的使用經驗也確實如此, NSIS 的打包形式確實比較貼近我們常取得的應用程式安裝介面。你可以定義很多參數,顯示比較多的畫面資訊供使用者調整與設定安裝路徑與相關版權宣告等資訊。

稍微有點概念後,我們一定會希望在版本推進過程當中有一個網頁與資料庫可以協助我們管理這麼多的安裝檔案與版本發布歷程。
GitHub – ArekSredzki/electron-release-server: A fully featured, self-hosted release server for electron applications, compatible with auto-updater.
Electron Release Server 這款就是 Electron 推薦的平台之一,他也是其中維護與使用者人數最多的專案。他可以做到使用者管理與版本發布控管,但他有幾大小問題,也是我追蹤好一陣子最後還是棄用的關鍵

  • NSIS 只支援單一套件。換言之,如果你有多個APP發布的話,因為 endpoint 關係你需要起多個相同專案,因為每個專案只能有一個 NSIS APP。
  • Squirrel 支援多個套件(Favor)與版本(Alpha, Beta, Release)管理,但尷尬的是Electron在原生自動更新程式中在Windows只支持NSIS。

畢竟這套工具還是有不少的優點,漂亮的介面與完善的管理。這些問題不是不能克服,甚至你也可以轉為優勢,這些部份我們可以留在日後分享我的解決策略…