Skip to Content
Plugin 開發把 Plugin 交給使用者

把 Plugin 交給使用者

Plugin 寫好、測好之後,怎麼交到使用者手上?有兩條路:線上目錄(使用者在主程式裡按一下安裝)和直接給 DLL(使用者自己放進資料夾)。 這一章先講使用者看到什麼,再講你需要準備什麼,最後講怎麼上線上目錄。

使用者怎麼安裝

從線上目錄(Plugin Manager)

視窗版選單 ☰ → Plugin → Plugin Manager(見選單:Plugin)有兩個分頁:Installed 是本機已有的,Online Catalog 是線上可以下載的。 選一顆按 Install/Update 就會下載安裝,Remove 移除。指令列版對應的是:

plugin catalog 查線上目錄有哪些 Plugin plugin install <名稱> [版本] 安裝;省略版本就裝「跟目前主程式相容、且沒被撤回」的最新版 plugin remove <名稱> 移除
  • 裝完要重新啟動主程式才會載入。 視窗版會有 Restart Now 按鈕。
  • 線上目錄的 Plugin 都有簽章:主程式用內嵌的公鑰驗證,驗不過就不會安裝。
  • 目錄會依你 Plugin 宣告的最低 ABI 版本與最低主程式版本過濾,不相容的版本不會被當成預設安裝對象。
  • 被撤回(yank)的版本不會被預設安裝,也就是說撤回是「別再裝這一版」,不是遠端刪除已經裝好的。
  • 目錄上的 Plugin 也可以在網站的Plugin 清單看到,並直接下載 DLL。

直接給 DLL

主程式在啟動時掃描它自己所在資料夾底下的 plugins\ 資料夾,所有 *.dll 都會被載入。所以你也可以直接把 DLL 交給使用者, 請他放進主程式資料夾的 plugins\,重新啟動。記得:x86 與 x64 兩種架構各一顆 DLL,要和使用者主程式的架構相同,見架構要對:x86/x64。

你要準備什麼

這些是交給營運方上線上目錄時要附的資料,自己發 DLL 時使用者也用得到:

項目規則
名稱IcPlugin::name,英文字母、數字、底線,1~31 個字元,不可有連字號。名稱不分大小寫視為同一顆,請固定一種拼法
版本M.m.p,來自 plugin_version.h(見版本號與 ABI 相容)。兩種架構的版本號必須相同,且要等於 DLL 內的 VERSIONINFO 資源版本
DLL:兩種架構x86 與 x64 各一顆,DLL 的實際架構要和你標示的一致
VERSIONINFO 資源DLL 必須帶版本資源,沒有就上不了線上目錄。PDK 的四顆範例都已經附好 .rc;自己複製範本就繼承得到。建置要真的把 .rc 編進去,見下面「常見錯誤」
最低 ABI 版本你的 Plugin 需要的最小 ABI(例如 4.0)。可以逐架構不同
最低主程式版本(選填)你依賴某版才有的主程式行為時才填
摘要第一次上線上目錄時必填:1~200 個字元、單行
版本說明選填,單行、只能是印刷用 ASCII(非 ASCII 的說明放在摘要或簡介裡)
簡介頁選填,可以是 Markdown,圖片只允許外部的 https: 連結

想上線上目錄

線上目錄由營運方發佈。

如果你是外部的 Plugin 作者:目前請用「直接給 DLL」的方式散佈,同時把上面表格的資訊準備好(名稱、版本、兩種架構的 DLL、最低 ABI、摘要、版本說明)。 想上線上目錄,就把這些交給營運方發佈。

常見錯誤

  • 忘了重新編 .rc。 改了 plugin_version.h 但沒有重編資源,DLL 的檔案版本仍是舊的,IcPlugin 內卻是新的,兩者不一致:營運方發佈時會被退回;直接給 DLL 時,使用者在 Plugin Manager 看到的版本會是錯的。 改版後兩種架構都要完整重建。
  • 只建了一種架構。 x86 與 x64 的 DLL 要分別建置(見架構要對:x86/x64)。
  • 版本號留著 0.0.0 或忘了改。 0.0.0 是「未宣告」,上不了線上目錄;複製範本忘了改版本號,Plugin Manager 會把它當成範本的版本。
  • 名稱有連字號或超過 31 個字元。
  • 把 x86 DLL 當成 x64 交出去(或反過來):使用者那邊載入失敗,營運方發佈時也會被擋。

交出去之後

  • 某一版有問題要撤回,請聯絡營運方。撤回後使用者不會再被預設安裝到它,已經裝好的不受影響。
  • 修正請一律提高版本號再交出去。同一個版本號不會讓已經裝過的使用者更新。