天天看點

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

文章目錄

  • 一、軟體準備
    • 1、(推薦)下載下傳 Packages
    • 2、PackageMaker
    • 3、Iceberg
    • 4、指令行
  • 二、打包 pkg 工程
    • 1、準備材料、建立工程
      • 1.1 在桌面建立一個檔案夾,放置需要安裝的檔案
      • 1.2 打開 Packages 應用
      • 1.3 添加項目資訊
    • 2、添加 package 資訊
      • 2.1 identifier 必須添加,否則會編譯不通過。
      • 2.2 在payload 添加需要安裝的檔案
      • 2.3 添加 pre-install 腳本、post-install 腳本
    • 3、全局工程設定
      • 3.1 設定 pkg 包名等
      • 3.2 設定 introduction
      • 3.3 添加 readme
      • 3.4 destination select 和 installation 無法修改
      • 3.5 修改 installation type
      • 3.6 設定安裝背景圖檔
    • 4、編譯
    • 5、修改pkg 安裝包
    • 6、pkg 簽名
  • 三、PKG 說明
  • 四、參考

打包 dmg 檔案可見:https://blog.csdn.net/lovechris00/article/details/78029337

一、軟體準備

可以安裝下面幾種軟體,本次以 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%20Xcode

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

下載下傳成功後,打開

Auxiliary Tools

,選中 PackageMaker,直接拖拽到應用程式即可。PackageMaker 在

Auxiliary Tools

的 dmg包中,直接是個 .app 檔案。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

相關打包教程: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

,它可以顯示更豐富的内容。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考
macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

1.3 添加項目資訊

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

2、添加 package 資訊

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

2.1 identifier 必須添加,否則會編譯不通過。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

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

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

2.2 在payload 添加需要安裝的檔案

選中 contents 裡面的檔案夾,然後選擇下面的+ 按鈕,即可添加檔案到指定位置。

這個set 按鈕一般沒必要點選。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

檔案可以添加到這個目錄樹下的任意地方。

這是我添加了之後的效果。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

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 可以移除。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

3、全局工程設定

3.1 設定 pkg 包名等

點選左上方的 project 可以對這個 pkg 工程進行設定;

這裡settings 界面中的 name,就是最後打包出來的name。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

3.2 設定 introduction

這裡如果不管,就會顯示下圖中預設的英文字元;

點選右下角的添加按鈕,右側清單就會新增一行;選中新增這一行的内容,會顯示 choose 按鈕,可以選中本地的 txt 檔案。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

這裡是我剛準備的 txt 檔案,選中後,内容就會添加到這個面闆。

在面闆上無法修改這段内容,隻能修改本地的這個 txt 檔案。

如果修改了這個 txt 檔案,儲存後,面闆的内容也會同步更新。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

3.3 添加 readme

readme 預設是灰色的,也就是不顯示;在安裝步驟中也不顯示。

但是如果你添加了 readme 相關的txt檔案,就會顯示出來。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

這裡是我添加的 readme.txt 檔案。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

3.4 destination select 和 installation 無法修改

3.5 修改 installation type

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

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

這裡是我修改後的效果

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

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

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

3.6 設定安裝背景圖檔

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

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

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

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

選擇圖檔,圖檔就會顯示到我們的安裝面闆。

可以調整圖檔的對齊方式和顯示的适配方式。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

到這裡基本配置完成

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

4、編譯

選中視窗,點選 Build --> build and run,會自動編譯,并運作pkg 安裝包。

你也可以隻build,不run.

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考
macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

此前沒有設定這個界面,界面的顯示效果如圖:

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

因為設定了需要密碼,是以這裡會彈窗提示使用者輸入密碼。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

安裝成功了,可以去應用程式檔案夾(或者你添加的檔案夾),檢查下需要安裝的檔案是否存在了。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、PKG 說明四、參考

5、修改pkg 安裝包

本次編譯後,檔案夾會變成如下:

下次更新App 版本時,輕按兩下這個檔案打開,并修改裡面的内容,再次build,就可以打一個新的 pkg 包。

macOS 開發 - 打包 PKG(Packages)一、軟體準備二、打包 pkg 工程三、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包的使用。

四、參考

  • 郭宏:MacOS 開發 — 程式打包生成pkg檔案

    https://blog.csdn.net/heroguo_jp/article/details/78049964

  • 非蟲:PKG安裝包的管理與檔案格式分析

    https://zhuanlan.zhihu.com/p/24895270

繼續閱讀