將 Script 轉化為原生 Mac App 的強大工具:Platypus

更新 發佈閱讀 6 分鐘
raw-image

在 macOS 上,如果你要打包 Script 到應用程式有很多方法,我常用的是 Automator 或是用 PyInstaller。

雖然這兩個工具一般情況下還算夠用,但就是有時候打包過程有點囉嗦(由其是 PyInstaller 還必須用 Shell 指令打包;而 Automator 打包的程式在換個環境用還會有 Gatekeeper 簽名憑證的問題,那這樣要分享開發的成果就變得還要自簽憑證。最後的指向都會是往 App Store 開發者的環境…… 😮‍💨

不過最近在改 Sigil 的流程中,寫了一堆補足 Sigil 的 Plug-in,然後在偶然間發現了一個有趣的工具「Platypus」。

Platypus(鴨嘴獸)是什麼樣的一款工具

Platypus 是一款專為 macOS 開發者設計的工具,其核心功能是將 Script(例如 Shell、Python、Perl、Ruby、Tcl、JavaScript 或 PHP)快速的封裝成原生的 macOS 應用程式(.app)。這款工具自 2003 年起便持續開發與維護,是一款以 Objective-C 與 Cocoa 框架編寫的免費開源軟體。

Platypus 的核心功能與優勢

Platypus 的主要用途在於簡化腳本的分享與使用,讓不熟悉終端機(Terminal)介面的使用者也能透過圖形介面來執行複雜的程式。它具備以下關鍵特性:

raw-image
  • 多樣化的圖形介面:開發者可以為 Script 選擇不同的介面類型,包括執行進度條(Progress Bar)文字對話窗口(Text Window)網頁視圖(Web View)狀態欄選單(Status Menu)或拖放應用(Droplet)
  • 高度整合系統功能:Platypus 支援接收拖放的文件或文字作為參數、註冊 URI 協議(如 myscheme://)、發送系統通知,以及在背景執行。
  • 權限管理:應用程式可以透過 macOS Security Framework 以 root 權限執行腳本。
  • 自動化與配置:提供命令行工具(platypus)與「設定檔(Profiles)」功能,方便整合進大型的構建流程中。

這個工具很適合現階段還不想碰 Xcode 的人

raw-image

如果不用 Platypus,開發者若想手動在 Mac 上將一個開源腳本打包成符合規範的應用程式,會面臨非常繁瑣的步驟:

  1. 複雜的目錄結構 (Bundle Structure):macOS 的應用程式實際上是一個特殊的資料夾(Bundle),必須包含特定的層級,例如 Contents/MacOS/(存放執行檔)、Contents/Resources/(存放資源與腳本)以及必備的 Info.plist 設定檔。
  2. 編寫包裝執行檔 (Wrapper Binary):腳本本身無法直接作為 Mac 應用的入口,開發者必須親自編寫並編譯一個二進位執行檔,用來啟動腳本、捕捉其輸出(stdout/stderr),並將其導向至圖形介面。
  3. UI 與資源處理:若需要圖形介面,必須使用 Xcode 處理 Nib 文件。此外,還需要手動製作並封裝 .icns 格式的圖標文件。
  4. 處理 GateKeeper 與安全限制:現代 macOS 有嚴格的安全檢查。手動打包的應用若未經過代碼簽署(codesign)與公證(notarization),使用者開啟時會遭到系統阻攔。
  5. 環境與參數傳遞:手動處理如何將拖放的文件路徑正確傳遞給腳本作為參數(Arguments),或處理 stdin 的輸入限制,都是技術上的難點。

Platypus 將上述所有複雜的過程自動化,開發者只需要幾次點擊,就能完成原本需要編寫大量代碼與手動調整配置的工作。

我對這個 Platypus 的看法

想像你要把一封手寫信(你的腳本)寄給一個不識字的人。手動打包就像是你得自己砍樹造紙、製作信封、學習郵局複雜的編碼規則,最後還得去申請政府的官印證明這不是偽造信件。(簽憑證)

而 Platypus 就像是一個全自動郵寄機器人,你只要把信交給它,它就會自動幫你裝進漂亮的盒子裡、貼上正確的標籤並蓋好所有合法的印章,讓收信人只要打開蓋子就能看到內容。

raw-image

其實本來 Apple 的 Automator 和 Shortcuts(捷徑)就是為了開發者降低門檻的設計,結果 Apple 又把 Automator 的強大功能用憑證鎖在個人使用的環境裡面,再往上就得直接往開發者跳階,完全忽視了中間還有一群在用開源苟延殘喘人。

我認為開源明明就有一股不小的商機,由其是 B2B 的應用更為廣大。可惜 Apple 就只會佈建 B2C 的環境,從賈伯斯到現在的庫克,都從未正眼看過這個商機。

要上架到 App Store 應該還是需要用 Cocoa API,即便 Platypus 這個方式還需要自己簽署才能執行,但是對於小範圍的佈建也應該足夠,所以它還是一個不錯的開源軟件。

Platypus 作者是來自冰島的軟體工程師「Sveinbjorn Thordarson」,他 Blog 上還有幾個很棒的 Open Source 看起來也很不錯,有機會我會再分享他的其他作品。

https://sveinbjorn.org/platypus

留言
avatar-img
Publishub
7會員
33內容數
這裡是Publishub,專門寫一些和數位發展趨勢、技術相關,我在這邊分享一些我觀察到的新知,希望你會喜歡~
Publishub的其他內容
2025/12/28
如果你對製作 EPUB 電子書足夠熟悉的話,你應該知道 Sigil 這個製作 EPUB 的專業工具。 我自己本來是透過 Adobe InDesign 轉製 EPUB,不過這兩年經過 Adobe 的神助攻,InDesign 鼓勵我尋找其他解決方案。🤣 當深度使用 Sigil 之後就發現,Sigi
Thumbnail
2025/12/28
如果你對製作 EPUB 電子書足夠熟悉的話,你應該知道 Sigil 這個製作 EPUB 的專業工具。 我自己本來是透過 Adobe InDesign 轉製 EPUB,不過這兩年經過 Adobe 的神助攻,InDesign 鼓勵我尋找其他解決方案。🤣 當深度使用 Sigil 之後就發現,Sigi
Thumbnail
2025/12/11
最近看了幾篇類似的文章,大致上都在講 Apple 在 AI 方面毫無作為,導致高管們紛紛出走,現在產品疲軟,蘋果神話即將破滅? Apple 在 AI 上的發展確實比起其它科技巨頭來得慢,也沒有發展自己的算力……假如你用現在的 AI 巨頭們的發展方向來看,Apple 確實在 AI 競賽中大為落後,其
Thumbnail
2025/12/11
最近看了幾篇類似的文章,大致上都在講 Apple 在 AI 方面毫無作為,導致高管們紛紛出走,現在產品疲軟,蘋果神話即將破滅? Apple 在 AI 上的發展確實比起其它科技巨頭來得慢,也沒有發展自己的算力……假如你用現在的 AI 巨頭們的發展方向來看,Apple 確實在 AI 競賽中大為落後,其
Thumbnail
2025/12/07
許多 EPUB 電子書都是用 Adobe InDesign 加上自訂義樣式、客製化轉換程式來解決的。不過這兩年 InDesign 的更新版本實在令人不敢恭維,不知道他們家 Coding 是不是菜市場賣菜的阿伯在負責,寫出來的 Code 不僅是無中生有,今年還每個版本更新就會有一堆 Bug 跑出來。
Thumbnail
2025/12/07
許多 EPUB 電子書都是用 Adobe InDesign 加上自訂義樣式、客製化轉換程式來解決的。不過這兩年 InDesign 的更新版本實在令人不敢恭維,不知道他們家 Coding 是不是菜市場賣菜的阿伯在負責,寫出來的 Code 不僅是無中生有,今年還每個版本更新就會有一堆 Bug 跑出來。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這篇文章彙整了我從 2021 到 2024 年間累積的 Shell Script、Bash 相關的 snippets,同時也是原 blog 搬家後做的去蕪存菁、濃縮的結果。
Thumbnail
這篇文章彙整了我從 2021 到 2024 年間累積的 Shell Script、Bash 相關的 snippets,同時也是原 blog 搬家後做的去蕪存菁、濃縮的結果。
Thumbnail
這篇文章分享了作者學習Python的過程,以及利用Python將經緯儀測量數據轉換成重測系統可讀取的檔案的心得。文中包含了作者編寫的Python程式碼,用於處理數據轉換,並解決了作者遇到的問題。作者也表達了對持續學習的熱忱。
Thumbnail
這篇文章分享了作者學習Python的過程,以及利用Python將經緯儀測量數據轉換成重測系統可讀取的檔案的心得。文中包含了作者編寫的Python程式碼,用於處理數據轉換,並解決了作者遇到的問題。作者也表達了對持續學習的熱忱。
Thumbnail
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
先來名詞解釋jython跟JES: jython是一種實現了Python語言的Java平台版本的解釋器。它允許開發人員在Java虛擬機(JVM)上運行Python代碼,從而實現了Python語言與Java平台的無縫集成。 JES(Jython Environment for Students)是
Thumbnail
先來名詞解釋jython跟JES: jython是一種實現了Python語言的Java平台版本的解釋器。它允許開發人員在Java虛擬機(JVM)上運行Python代碼,從而實現了Python語言與Java平台的無縫集成。 JES(Jython Environment for Students)是
Thumbnail
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
Thumbnail
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
Thumbnail
matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
Thumbnail
matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
Thumbnail
在完成一些简单的任务之后,我觉得ChatGPT可以帮我完成一些更为复杂,甚至于可能我并不是特别擅长的任务,而我想到了,也许,可以帮我写一个简单的游戏。 贪多嚼不烂的道理我还是明白的,于是,我给自己提前就设定了一个目标: 游戏可以运行实现简单的规则减少BUG的存在可以开始和结束 带着这四个最朴素
Thumbnail
在完成一些简单的任务之后,我觉得ChatGPT可以帮我完成一些更为复杂,甚至于可能我并不是特别擅长的任务,而我想到了,也许,可以帮我写一个简单的游戏。 贪多嚼不烂的道理我还是明白的,于是,我给自己提前就设定了一个目标: 游戏可以运行实现简单的规则减少BUG的存在可以开始和结束 带着这四个最朴素
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News