把 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 交出去(或反過來):使用者那邊載入失敗,營運方發佈時也會被擋。
交出去之後
- 某一版有問題要撤回,請聯絡營運方。撤回後使用者不會再被預設安裝到它,已經裝好的不受影響。
- 修正請一律提高版本號再交出去。同一個版本號不會讓已經裝過的使用者更新。