Pinokio 是一款瀏覽器,可讓您在電腦上本地安裝、運行和自動化任何 AI 。您可以在命令列中運行的所有內容都可以使用 Pinokio 腳本自動化,並具有使用者友好的 UI。
您可以使用 Pinokio 來自動化任何事情,包括:
安裝 AI 應用程式和模型
管理和運行 AI 應用程式
建立工作流程來編排已安裝的 AI 應用程式
運行任何命令以在計算機上實現自動化操作
還有更多...
Pinokio 的特別之處如下:
本地:一切都在本地安裝並運行。您的任何資料都不會儲存在其他人的伺服器上。
免費: Pinokio 是一款開源應用程序,100% 免費使用,沒有任何限制。無需為 API 存取付費,因為一切都在您的本機電腦上運行。隨心所欲使用 AI,永久免費。
私密:您無需擔心僅為了運行人工智慧而提交私密數據,一切都在您自己的機器上 100% 私密地運行。
使用者友善的介面: Pinokio 提供了一個使用者友好的 GUI,用於運行和自動化您通常需要使用終端執行的任何操作。
內含電池: Pinokio 是一個獨立的系統。您不需要安裝任何其他程式。 Pinokio 可以自動化任何事情,包括程式/庫安裝。您需要的唯一程式是 Pinokio。
跨平台: Pinokio 適用於所有作業系統(Windows、Mac、Linux) 。
節省儲存和資源: Pinokio 具有許多最佳化功能,可為您節省數百 GB 的磁碟空間。此外,許多其他資源優化功能(例如記憶體)都可以透過 Pinokio 實現。
富有表現力的腳本語言: Pinokio 腳本是一種功能強大的自動化腳本語言,具有記憶體、動態模板和可擴展的低階 API 等功能。
便攜:所有內容都儲存在獨立的資料夾下,並且所有內容都以文件形式存在,這意味著您只需刪除文件即可輕鬆備份所有內容或刪除應用程式。
Pinokio 從傳統電腦的工作原理中汲取靈感。
就像電腦憑藉其全面的架構可以做各種事情一樣,Pinokio 作為虛擬電腦是一個綜合平台,可以運行和自動化您可以透過 AI 想像的任何事情。
檔案系統:Pinokio 儲存檔案的位置和方式。
處理器:pinokio 如何運作任務。
記憶體:pinokio 如何使用其內建本機記憶體實現狀態機。
腳本:運行pinokio的程式語言。
UI:使用者存取應用程式的 UI(使用者介面)。
視窗
蘋果
Linux
請務必遵循以下所有步驟!
下載 Windows 版
解壓縮下載的文件,您將看到一個 .exe 安裝程式文件。
執行安裝程式文件,您將看到以下 Windows 警告:
顯示此訊息是因為應用程式是從 Web 下載的,這就是 Windows 對從 Web 下載的應用程式所做的操作。
為了繞過這個,
點擊“更多資訊”
然後單擊“仍然運行”
確保同時遵循步驟 1 和步驟 2。
適用於 Apple Silicon Mac (M1/M2/M3/M4) 的下載 適用於 Intel Mac 的下載
下載dmg檔案後,必須打補丁,如下圖:
運行下載的 DMG 安裝程式文件
將“Pinokio”應用程式拖曳至“應用程式”資料夾
運行“patch.command”
在應用程式資料夾中開啟 Pinokio 應用程式
對於 Linux,您可以直接從 Github 上的最新版本下載並安裝(向下捲動至頁面底部以查看所有二進位):
前往發布頁面
為了掌握所有新的 API 和應用程式集成,
在 X 上關注 @cocktailpeanut,以隨時了解所有正在發布的新腳本和功能更新。
加入 Pinokio 不和諧來提出問題並獲得幫助。
Pinokio 是一個獨立的平台,可讓您以隔離的方式安裝應用程式。
隔離環境:無需擔心弄亂您的全域系統配置和環境
包含電池:無需手動安裝所需的程式即可安裝某些東西(例如ffpeg 、 node.js 、 Visual Studio 、 conda 、 python 、 pip等)。 Pinokio 會自動處理它。
為了實現這一點,Pinokio將所有內容儲存在一個單獨的資料夾(“pinokio home”)下,因此它永遠不必依賴系統範圍的配置和程序,而是以獨立的方式運行所有內容。
您可以在首次設定 Pinokio 時設定pinokio 主資料夾,也可以稍後從設定標籤將其變更為新位置。
那麼文件儲存在哪裡呢? 點擊主頁上的“文件”按鈕:
這將在檔案總管中開啟 Pinokio 的主資料夾:
讓我們快速瀏覽一下每個資料夾的作用:
api
:儲存所有下載的應用程式(腳本)。
該資料夾中的資料夾將顯示在您的 Pinokio 主頁上。
bin
:儲存多個應用程式共用的全域安裝模組,因此您無需冗餘安裝它們。
例如, ffmpeg
、 nodejs
、 python
等。
cache
:儲存您執行的應用程式自動快取的所有檔案。
當出現問題時,刪除此資料夾並重新開始可能會修復它。
刪除cache
資料夾是可以的,因為當您開始使用應用程式時,它會被您使用的應用程式重新填充。
drive
:儲存 fs.link Pinokio API 所建立的所有虛擬磁碟機
logs
:儲存每個應用程式的所有日誌檔案。
您可以在此處了解有關文件系統的更多信息
讓我們來編寫一個克隆 git 儲存庫的腳本。
在 Pinokio api 資料夾下建立一個名為helloworld
的資料夾。
在 Pinokio api/helloworld
資料夾下建立一個名為git.json
的檔案。
{“運行”:[{“方法”:“shell.run”,“參數”:{“訊息”:“git克隆https://github.com/pinokiocomputer/test”} }] }
現在,當您返回 Pinokio 時,您將看到您的helloworld
儲存庫出現。導航到它並點擊git.json
選項卡來運行它:
您將看到已從 https://github.com/pinokiocomputer/test 儲存庫複製了api/helloworld/test
資料夾。
我們還可以使用模板動態更改要運行的命令以及運行它們的方式。
作為範例,讓我們編寫一個在 Windows 上執行dir
並在 Linux 和 Mac 上執行ls
的腳本。
在api/helloworld
資料夾中,建立一個名為files.json
的檔案:
{ "run": [{"method": "shell.run","params": { "message": "{{platform === 'win32' ? 'dir' : 'ls'}}"} }] }
{{ }}
模板表達式包含 JavaScript 表達式
每個模板表達式內都有多個可用變量,其中之一是平台。
platform
的值為darwin
(mac)、 win32
(windows) 或linux
(linux)。
這意味著,在 Windows 上,上述腳本相當於:
{“運行”:[{“方法”:“shell.run”,“參數”:{“訊息”:“目錄”} }] }
或如果不是windows(mac或linux),則相當於:
{“運行”:[{“方法”:“shell.run”,“參數”:{“訊息”:“ls”} }] }
您可以在此處了解有關模板的更多信息
當 Pinokio 腳本完成執行時,透過該腳本產生的每個 shell 工作階段都會被釋放,並且所有相關進程都會關閉。
例如,讓我們嘗試使用 http-server 啟動本機 Web 伺服器。在 Pinokio api
資料夾下建立一個名為httpserver
的新資料夾,並建立一個名為index.json
的新腳本:
{“運行”:[{“方法”:“shell.run”,“參數”:{“訊息”:“npx -y http伺服器”} }] }
然後返回 Pinokio,您將看到該應用程式顯示在主頁上。點擊並點擊側邊欄上的index.json
選項卡,它將啟動此腳本,該腳本應使用npx http-server
啟動 Web 伺服器。
但問題是,一旦啟動伺服器,它就會立即關閉,您將無法使用網頁伺服器。
這是因為當 Pinokio 完成run
數組中的所有步驟時,它會自動關閉與該腳本關聯的所有進程。
為了避免這種情況,您需要告訴 Pinokio 這個應用程式即使在所有步驟都運行之後也應該保持運行。我們只需要新增一個daemon
屬性:
{ "daemon": true, "run": [{"method": "shell.run","params": { "message": "npx -y http-server"} }] }
現在重試啟動腳本,您將看到 Web 伺服器開始運行並且不會關閉。
Web 伺服器將提供目前資料夾中的所有檔案(在本例中只是index.json
),如下所示:
您可以按下頁面頂部的「停止」按鈕來停止腳本。
在此處了解有關守護進程模式的更多信息
您也可以透過一次shell.run
呼叫來執行多個命令。
讓我們試試一個例子。我們將在一個腳本中安裝、初始化和啟動文件引擎。
這樣的事情過去對於普通人來說是無法訪問的(因為你必須在終端機中運行這些東西),但是有了 Pinokio,只需單擊一下即可輕鬆完成。
在 Pinokio api
資料夾下建立一個名為docsify
的資料夾
在api/docsify
資料夾下建立一個名為index.json
的檔案。 index.json
文件應如下所示:
{ "daemon": true, "run": [{"method": "shell.run","params": { "message": ["npx -y docsify-cli init docs","npx -y docsify- cli 服務文件"] } }] }
這個例子做了兩件事:
初始化 docsify 文件項目
啟動 docsify 開發伺服器
當您從 Pinokio 終端機點擊開發伺服器連結時,它將在 Web 瀏覽器中開啟文件頁面:
在此處了解有關
shell.run
API 的更多信息
Pinokio 的常見用例之一是:
創建/啟動 venv
將依賴項安裝到已啟動的venv中
讓我們試試一個簡單的例子。此範例是官方漸層教程中的最小漸層應用程式
首先,在 Pinokio 的api
資料夾下建立一個名為gradio_demo
的資料夾。
接下來,在api/gradio_demo
資料夾中建立一個名為app.py
的檔案。
# app.pyimport gradio as grdefgreet(name, Intensity):return "Hello," + name + "!" * int(強度)demo = gr.Interface(fn=greet,輸入=["文字","滑桿"],輸出=["文字"], )demo.launch()
我們還需要一個如下所示的requirements.txt
檔:
# requirements.txt gradio
最後,我們需要一個install.json
腳本來安裝requirements.txt
檔案中的依賴項:
{ "run": [{"method": "shell.run","params": { "venv": "env", "message": "pip install -r requests.txt"} }] }
資料夾結構將如下所示:
/PINOKIO_HOME /api /gradio_demo app.py requirements.txt install.json
返回 Pinokio,您將看到gradio_demo
應用程式。點擊進入 UI 並點擊install.json
選項卡,它將:
在env
路徑下建立venv
資料夾
啟動env
環境
執行pip install -r requirements.txt
,這會將gradio
依賴項安裝到env
環境中。
安裝過程如下所示(請注意,最後建立了一個新的env
資料夾):
在此處了解有關 venv API 的更多信息
從上一節繼續。
現在讓我們編寫一個簡單的腳本,該腳本將從上一節的app.py
啟動 gradio 伺服器。在同一資料夾中建立一個名為start.json
的檔案:
{ "daemon": true, "run": [{"method": "shell.run","params": { "venv": "env", "message": "python app.py"} }] }
返回 Pinokio,您會看到start.json
檔案現在也顯示在側邊欄上。點擊以啟動start.json
腳本。這將:
啟動我們在安裝步驟中所建立的env
環境
在守護程序模式下運行python app.py
( daemon: true
),這將啟動 gradio 伺服器並保持其運作。
它看起來像這樣:
在此處了解有關 venv API 的更多信息
Pinokio 具有跨平台 API,可輕鬆可靠地下載檔案(包括自動重試等)。
讓我們嘗試編寫一個下載 PDF 的簡單腳本。
首先在 Pinokio api
資料夾下建立一個名為download
資料夾,然後建立一個名為index.json
的檔案:
{“運行”:[{“方法”:“fs.download”,“參數”:{“uri”:“https://arxiv.org/pdf/1706.03762.pdf”,“dir”:“pdf”} }] }
這會將 https://arxiv.org/pdf/1706.03762.pdf 上的檔案下載到名為pdf
的資料夾中(如果該資料夾尚不存在, fs.download
API 會自動在該位置建立資料夾)。它看起來是這樣的:
在此處了解有關
fs.download
API 的更多信息
在許多情況下,您可能想要從另一個腳本呼叫一個腳本。一些例子:
一個編排腳本,先啟動stable diffusion
,然後啟動llama
。
啟動stable diffusion
的代理,立即發出產生影像的請求,最後自動停止stable diffusion
伺服器以節省資源。
向llama
端點發出請求,然後將回應提供給stable diffusion
端點的代理程式。
我們可以使用script
API 來實現這一點:
script.start
:啟動遠端腳本(如果尚不存在則先下載)
script.return
:如果目前腳本是子進程,則指定回傳值,該值將在呼叫者腳本的下一個步驟中可用。
這是一個例子。讓我們建立一個簡單的caller.json
和callee.json
:
caller.json
:
{ "run": [{"method": "script.start","params": { "uri": "callee.json", "params": { "a": 1, "b": 2 } } }, {"method": "log","params": { "json2": "{{input}}"} }] }
第一步, caller.json
將使用參數{ "a": 1, "b": 2 }
呼叫callee.json
。
此 params 物件將作為args
傳遞到callee.json
中:
callee.json
:
{ "run": [{"method": "script.return","params": { "ressponse": "{{args.a + args.b}}"} }] }
callee.json
腳本透過script.return
呼叫立即傳回值{{args.a + args.b}}
。
最後, caller.json
將呼叫最後一步log
,它將列印值{{input}}
,這是callee.json
的回傳值。這將列印3
:
最後一部分解釋如何從同一儲存庫中呼叫腳本。但是如果您想從其他儲存庫呼叫腳本怎麼辦?
script.start
API 還可以即時下載和執行遠端腳本。
在 Pinokio api
資料夾下建立一個名為remotescript
的資料夾,並在api/remotescript
下建立一個名為install.json
的檔案:
{“運行”:[{“方法”:“script.start”,“參數”:{“uri”:“https://github.com/cocktailpeanutlabs/moondream2.git/install.js”} }, {"method": "script.start","params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/start.js"} }, {"id": "run","method": "gradio.predict","params": { "uri": "{{kernel.script.local('https://github.com/cocktailpeanutlabs/ Moondream2.git/start.js').url}}", "路徑": "/answer_question_1", "參數": [ { "path": "https://media.timeout.com/images/105795964/750/422/image.jpg" },"說明這裡發生了什麼事" ] } }, {"method": "log","params": { "json2": "{{input}}"} }, {"method": "script.stop","params": { "uri": "https://github.com/cocktailpeanutlabs/moondream2.git/start.js"} }] }
第一步啟動腳本 https://github.com/cocktailpeanutlabs/moondream2.git/install.js。
如果moondream2.git
儲存庫已存在於 Pinokio 上,它將執行 install.js 腳本。
如果尚不存在,Pinokio 首先會自動複製https://github.com/cocktailpeanutlabs/moondream2.git
儲存庫,然後啟動 install.js 腳本。
安裝完成後,它會使用 https://github.com/cocktailpeanutlabs/moondream2.git/start.js 腳本啟動 gradio 應用程式。該腳本將在伺服器啟動後返回。
現在我們執行gradio.predict
,使用 kernel.script.local() API 取得 start.js 腳本的局部變數對象,然後取得其url
值(以程式設計方式在moondream2.git/start.js
中設定)腳本)。
基本上,此步驟向 gradio 端點發出請求,詢問 LLM“解釋這裡發生了什麼”,並傳遞圖像。
接下來,使用log
API 將gradio.predict
的回傳值記錄到終端。
最後,我們停止moondream2/start.js
腳本,並使用script.stop
API 關閉 Moondream gradio 伺服器。
如果我們不呼叫script.stop
,即使該腳本停止,moondream2 應用程式也會繼續運行。
它看起來像這樣:
運行
script.start
和script.stop
的能力對於在個人計算機上運行 AI 非常有用,因為大多數個人計算機沒有無限制的內存,如果您無法關閉這些 AI 引擎,您的計算機將很快耗盡內存以編程方式。使用
script.stop
您可以啟動腳本,獲取其回應,並在任務完成後立即關閉它,這將釋放系統內存,您可以將其用於運行其他後續 AI 任務。
Pinokio 應用程式的結構很簡單:
快捷方式:Pinokio 主頁上顯示的應用程式捷徑。
app:應用程式的主 UI 佈局
Shortcut
App
選單:側邊欄顯示您可以運行的所有連結(以及它們的運行狀態)
視窗:顯示網頁的視口,或執行腳本的終端
預設情況下,如果您的專案中沒有pinokio.js
文件,
此捷徑將資料夾名稱顯示為標題,並將預設圖示顯示為應用程式的圖示。
此選單顯示儲存庫根目錄中的所有.js
或.json
檔案。
雖然這對於入門來說很方便,但不夠靈活:
您無法控制功能表列中顯示的內容
您無法控制腳本的啟動方式(例如透過傳遞params
)
您無法控制應用程式的顯示方式
應用程式的標題將是您的資料夾名稱
沒有描述
該圖示將僅顯示預設圖示。
要自訂應用程式本身的行為方式,您需要編寫一個名為pinokio.js
的 UI 腳本。
讓我們嘗試寫一個最小的 UI:
在/PINOKIO_HOME/api
資料夾中建立名為downloader
的資料夾
將任意圖示新增至/PINOKIO_HOME/api/downloader
資料夾並將其命名為icon.png
建立名為/PINOKIO_HOME/api/downloader/download.json
的文件
建立一個名為/PINOKIO_HOME/api/downloader/pinokio.js
的文件
/PINOKIO_HOME/api/downloader/icon.png
/PINOKIO_HOME/api/downloader/download.json
{“運行”:[{“方法”:“shell.run”,“參數”:{“訊息”:“git克隆{{input.url}}”} }] }
/PINOKIO_HOME/api/downloader/pinokio.js
模組. 導出 = { 標題:“下載任何內容”, 描述:“下載 git 儲存庫”, 圖示:“圖示.png”, 選單:[{text:“開始”,href:“download.json”,params:{ url:“https://github.com/cocktailpeanut/dalai”} }]}
最終結果在檔案總管中將如下所示:
現在返回 Pinokio 並刷新,您將看到您的應用程式出現:
標題顯示Download Anything
描述顯示Download a git repository
圖示是我們新增的icon.png
現在,當您點擊該應用程式時,您將看到以下內容:
您將看到選單項目Start
。
按一下此按鈕可執行href
屬性指定的download.json
。
另請注意,腳本將 https://github.com/cocktailpeanut/dalai 的值傳遞為params.url
值。
傳遞給download.json
params
可用作input
變量,因此git clone {{input.url}}
將被實例化為git clone https://github.com/cocktailpeanut/dalai
。
一旦你有了一個可用的腳本儲存庫,你就可以發佈到任何 git 託管服務並共用 URL,任何人都可以安裝和執行你的腳本。
您可以非常輕鬆地安裝任何 pinokio 腳本儲存庫:
按一下「發現」頁面頂部的「從 URL 下載」按鈕。
輸入 git URL(您也可以選擇指定分支)。
如果您發佈到 github,您可以使用「pinokio」標記您的儲存庫,使其顯示在「發現」頁面的「最新」部分。
現在它會自動顯示在「最新」部分(「發現」頁面底部):
Pinokio 從 GitHub「/repositories」API 自動建立「最新」部分,網址為 https://api.github.com/search/repositories?q=topic:pinokio&sort=updated&direction=desc
因此,如果您將儲存庫標記為「pinokio」但沒有出現,請檢查 API 結果,並嘗試找出為什麼它沒有包含在其中。
雖然了解這一切是如何運作的很重要,但在大多數情況下,您可能需要一個簡單的“啟動器組合”,其中包括:
應用程式安裝腳本:安裝應用程式依賴項
應用程式啟動腳本:啟動應用程式
UI:顯示啟動器 UI。
重置腳本:出現問題時重置應用程式狀態。
更新腳本:一鍵將應用程式更新到最新版本。
這個用例經常需要,因此我們實作了一個可以立即自動產生這些腳本的程式。它的名字叫傑佩托。
通常您可能想分享有關每個腳本的更多資訊。您可以使用新聞源來實現這一點。
為此,只需建立一個帶有posts
陣列屬性的pinokio_meta.json
文件,其中每個項目都是一個 x.com URL。這是一個例子:
{“帖子”:[“https://x.com/cocktailpeanut/status/1819482952071323788”,“https://x.com/cocktailpeanut/status/1819439443394109837”,“https://xus/1819439443394109837”,“https://xut.com/cocktailanan /1800944955738685648","https://x.com/cocktailpeanut/status/1754244867159413001","https://x.com/cocktailpeanut/status/17298844601147277998675601472757000077500000 月/tailx75950 4807048208 ” ] }
您可以看到它的實際效果:https://github.com/cocktailpeanutlabs/comfyui/blob/main/pinokio_meta.json
發布後,這將立即反映在腳本登入頁面上。
Gepeto 是一個可讓您自動產生 Pinokio 腳本的程序,專門用於應用程式啟動器。
讓我們先在 1 分鐘內實際產生一個應用程式及其啟動器。
如果您尚未安裝 gepeto,請在 Pinokio 上找到它並先安裝。
您將看到一個簡單的 Web UI,讓您填寫表格。為簡單起見,只需輸入Helloworld
作為專案名稱,然後按「提交」 。
這將初始化一個項目。當你回到皮諾基奧家時,
您將看到一個名為Helloworld
的新作品。單擊它,您將看到啟動器螢幕。
另外,檢查/PINOKIO_HOME/api
資料夾,您會發現一個名為Helloworld
的新資料夾,其中包含一些腳本檔案。
現在讓我們單擊安裝按鈕來安裝應用程序,安裝完成後,單擊開始啟動。
您將看到一個最小的漸變應用程序,您可以在其中輸入提示,它將使用 Stable Diffusion XL Turbo 生成圖像。
那麼剛剛發生了什麼事?我們剛剛創建了一個空項目,其中附帶了一個最小的演示應用程式。
讓我們在下一節中看看每個產生的檔案。
Gepeto 自動產生應用程式啟動器所需的最少腳本集。典型的應用程式啟動器具有以下功能:
安裝:安裝運行應用程式所需的依賴項。 ( install.js
)
啟動:啟動應用程式本身。 ( start.js
)
重設安裝:重設所有已安裝的依賴項,以防您需要重新安裝。 ( reset.js
)
更新:專案更新時更新至最新版本。 ( update.js
)
GUI:描述啟動器在 Pinokio 主畫面上的外觀和行為以及作為側邊欄選單的腳本。 ( pinokio.js
)
它看起來是這樣的:
請注意,除了上面提到的腳本之外,gepeto 還產生了一些額外的檔案:
app.py
:一個簡單的演示應用程式。將其替換為您自己的代碼。
requirements.txt
:聲明app.py
所需的所有 PIP 相依性。換成你自己的。
icon.png
:應用程式的預設圖示檔。換成你自己的。
torch.js
: torch.js
是一個從install.js
呼叫的實用程式腳本。由於torch幾乎用於所有AI項目,並且以跨平台方式安裝它們相當棘手,因此預設包含此腳本。您不必擔心這個文件,只需了解它由install.js
使用即可。請勿觸摸。
值得注意的檔案是app.py
和requirements.txt
檔案:
import gradio as grimport torchfrom differs import DiffusionPipelineimport devicetorch# 取得目前裝置("mps"、"cuda" 或 "cpu")device = devicetorch.get(torch)# 建立擴散管道/pipe = DiffusionPturion.from_pretraipedromd - ntra/pipes = DiffusionPturbo. ").to(device)# Run inferencedefgenerate_image(prompt):return pipeline(prompt, num_inference_steps=2,strength=0.5,guiding_scale=0.0).images[0]#用Gradioapp建立文字輸入圖片輸出的.Interface(fn=generate_image, 輸入=“文字”, 輸出=“圖片”)app.launch()
以下是運行app.py
所需的函式庫。
transformers accelerate diffusers gradio devicetorch
那麼這些文件實際上是如何使用的呢?
如果查看install.js
內部,您將看到它正在執行pip install -r requirements.txt
來安裝檔案內的依賴項,如下所示:
模組. 導出 = { run: [// 如果你的專案沒有使用torch,請刪除此步驟{ method: "script.start", params: {uri: "torch.js",params: { venv: "env", // 編輯此自訂venv 資料夾路徑// xformers: true // 如果您的專案需要xformers,請取消註解此行} }},// 使用自訂安裝命令編輯此步驟{ method: "shell.run", params: {venv: "env" , // 編輯此內容以自訂venv 資料夾路徑message: [ "pip install -rrequirements.txt"], }},// 取消註解此步驟以新增自動venv 重複資料刪除(實驗) // {// method: "fs. link",// params: {// venv: "env"// }// },{ method: "notify", params: {html: "點選「開始”選項卡即可開始!" }} ]}
第一步執行script.start
來呼叫名為torch.js
的腳本。這將安裝火炬。
第二步執行pip install -r requirements.txt
檔案來安裝該檔案中的所有內容。