將 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
4會員
28內容數
這裡是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 開放了一個新福利:考績優異的同事,可以申請遠端工作,公司還直接送一張機票。消息一出,全公司瞬間進入「旅遊準備模式🏖️」: 有人半夜在比價住宿,打開十幾個分頁算平均一晚到底要不要超過 2,000; 有人打開影片看「__城市一日生活費實測」; 也有人開始打開試算表,冷靜的敲著計
Thumbnail
最近 vocus 開放了一個新福利:考績優異的同事,可以申請遠端工作,公司還直接送一張機票。消息一出,全公司瞬間進入「旅遊準備模式🏖️」: 有人半夜在比價住宿,打開十幾個分頁算平均一晚到底要不要超過 2,000; 有人打開影片看「__城市一日生活費實測」; 也有人開始打開試算表,冷靜的敲著計
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