1. 程式人生 > >macOS 開發 - 打包 PKG

macOS 開發 - 打包 PKG

文章目錄


一、軟體準備

可以安裝下面幾種軟體,本次以 Packages 為例,下載 Packages 即可。

1、(推薦)下載 Packages

地址:http://s.sudre.free.fr/Software/Packages/about.html


2、PackageMaker

是之前 Xcode 自帶的pkg 打包工具,網傳在 /Development/Utility 資料夾,但目前沒有這個資料夾,也不在 ~/library/Developer 這個資料夾。
正確方式是前往官網下載 Auxiliary Tools ,這個軟體集合了多款開發者工具應用,但最後釋出時間是 2012年。

https://developer.apple.com/download/more/?=for Xcode

在這裡插入圖片描述


下載成功後,開啟 Auxiliary Tools ,選中 PackageMaker,直接拖拽到應用程式即可。PackageMaker 在 Auxiliary Tools 的 dmg包中,直接是個 .app 檔案。
在這裡插入圖片描述

相關打包教程:https://blog.csdn.net/zhangkongzhongyun/article/details/20700659


3、Iceberg

相關教程
https://www.xuebuyuan.com/809255.html


4、命令列

pkgbuild+productbuild+pkgutil 來製作安裝包。


二、打包 pkg 工程

1、準備材料、建立工程


1.1 在桌面建立一個資料夾,放置需要安裝的檔案

比如我的資料夾叫做 PKGDemo,裡面放上我需要安裝的 App 檔案


1.2 開啟 Packages 應用

Packages分為兩種模式,packages 軟體已經說明的比較清楚,如下圖
我們需要安裝 .app 檔案和一個 驅動程式,這裡選擇 Distribution,它可以顯示更豐富的內容。

在這裡插入圖片描述

在這裡插入圖片描述


1.3 新增專案資訊

在這裡插入圖片描述


2、新增 package 資訊

一個 project 可以對應多個 packages,這裡我們先修改 package 資訊,後面修改全域性的 project 資訊。

2.1 identifier 必須新增,否則會編譯不通過。

在這裡插入圖片描述


可以設定安裝完成後,是否重啟應用、退出使用者

在這裡插入圖片描述


2.2 在payload 新增需要安裝的檔案

選中 contents 裡面的資料夾,然後選擇下面的+ 按鈕,即可新增檔案到指定位置。
這個set 按鈕一般沒必要點選。

在這裡插入圖片描述


檔案可以新增到這個目錄樹下的任意地方。
這是我添加了之後的效果。

在這裡插入圖片描述


2.3 新增 pre-install 指令碼、post-install 指令碼

這兩個指令碼的具體意思可參考:https://zhuanlan.zhihu.com/p/24895270

preinstall:針對單程式安裝包(pkg),該指令碼會在preflight指令碼執行之後執行;針對多程式安裝包(mpkg),該指令碼會在使用者按下Install銨鈕後執行,只會在使用者第一次安裝該程式時執行。
postinstall:該指令碼在程式安裝完之後才執行。

常見的 preinstall (用來關閉、移除舊版本)

#!/usr/bin/env bash
echo "Running PKGDemo script"

# 關掉正在執行的app
echo "Killing PKGDemo"
killall "PKGDemo"

echo "Finding old version of PKGDemo"
sudo rm -rf /Applications/PKGDemo.app 
echo "Removed old versions of PKGDemo in Applications, if any."
echo "Ran PKGDemo preinstall script success."
exit 0

常見的 postinstall

#!/usr/bin/env bash

echo "Running myframeworktest.app postinstall script."
echo "Installing myframework.framework."

rm -rf ~/Library/Frameworks/myframework.framework
mkdir ~/Library/Frameworks/myframework.framework
cp -r /Applications/myframeworktest.app/Contents/Frameworks/myframework.framework/* ~/Library/Frameworks/myframework.framework

chmod -R 6777 ~/Library/Frameworks/myframework.framework
echo "Ran myframeworktest.app postinstall script."

exit 0

點選 choose 即可選中指令碼檔案,點選 remove 可以移除。

在這裡插入圖片描述


3、全域性工程設定

3.1 設定 pkg 包名等

點選左上方的 project 可以對這個 pkg 工程進行設定;
這裡settings 介面中的 name,就是最後打包出來的name。

在這裡插入圖片描述


3.2 設定 introduction

這裡如果不管,就會顯示下圖中預設的英文字元;
點選右下角的新增按鈕,右側列表就會新增一行;選中新增這一行的內容,會顯示 choose 按鈕,可以選中本地的 txt 檔案。

在這裡插入圖片描述


這裡是我剛準備的 txt 檔案,選中後,內容就會新增到這個面板。
在面板上無法修改這段內容,只能修改本地的這個 txt 檔案。
如果修改了這個 txt 檔案,儲存後,面板的內容也會同步更新。

在這裡插入圖片描述


3.3 新增 readme

readme 預設是灰色的,也就是不顯示;在安裝步驟中也不顯示。
但是如果你添加了 readme 相關的txt檔案,就會顯示出來。

在這裡插入圖片描述


這裡是我新增的 readme.txt 檔案。

在這裡插入圖片描述


3.4 destination select 和 installation 無法修改


3.5 修改 installation type

這裡一般不需要修改,但選中檔案,在右側新增 title 和 description 後,內容會不一樣。

在這裡插入圖片描述


這裡是我修改後的效果

在這裡插入圖片描述


點選右側的 requirement,可以對安裝的作業系統版本做要求。

在這裡插入圖片描述


3.6 設定安裝背景圖片

選擇最上方的 框,選中 background ,可以修改背景資訊。可以發現它屬於 introduction 這一步。

在這裡插入圖片描述


選擇show 右側的設定,改為 custom background,才能選擇圖片

在這裡插入圖片描述


選擇圖片,圖片就會顯示到我們的安裝面板。
可以調整圖片的對齊方式和顯示的適配方式。

在這裡插入圖片描述


到這裡基本配置完成
在這裡插入圖片描述


4、編譯

選中視窗,點選 Build --> build and run,會自動編譯,並執行pkg 安裝包。
你也可以只build,不run.
在這裡插入圖片描述


在這裡插入圖片描述


此前沒有設定這個介面,介面的顯示效果如圖:
在這裡插入圖片描述


因為設定了需要密碼,所以這裡會彈窗提示使用者輸入密碼。
在這裡插入圖片描述


安裝成功了,可以去應用程式資料夾(或者你新增的資料夾),檢查下需要安裝的檔案是否存在了。
在這裡插入圖片描述


5、修改pkg 安裝包

本次編譯後,資料夾會變成如下:
下次更新App 版本時,雙擊這個檔案開啟,並修改裡面的內容,再次build,就可以打一個新的 pkg 包。

在這裡插入圖片描述


6、pkg 簽名

可前往下方連結檢視:
https://blog.csdn.net/lovechris00/article/details/80965744


三、PKG 說明

pkg格式的軟體安裝其實就是把壓縮在pkg裡的檔案解壓出來並放置特定的路徑下,再賦予它們特定的許可權。

pkg相當於win下面的大型安裝包,比如大型的micoffice軟體,這種軟體一般需要註冊,而且安裝時需要機主的許可權。

dmg相當於win下面的rar壓縮軟體包。當然mac也能解壓rar軟體,很多都可以直接解壓,然後拖到你需要的地方使用。

在資料產品中,PKG是塞班系統檔案,也是Mac OS X中的pkg安裝包,類似Windows系統中的.msi和.exe安裝包,但給人的感覺更為高效和統一,或許這就是蘋果系統更為高效的一個原因吧。由於 一般人使用塞班系統中pkg檔案較少,所以這裡主要講講較為常用的MAC系統中的PKG包的使用。


四、參考