簡體   English   中英

在Mac OS X pkg中打包命令行腳本

[英]Package a command line script in a Mac OS X pkg

我有一個程序(由同事創建,從Linux移植但在Mac上成功編譯)我需要部署到許多Mac工作站。 目前我們通過推出pkg文件(不是我們創建的文件)來實現。

我的一般問題(其他人可能會找到有用的答案)是如何將命令行程序/腳本打包到安裝程序的pkg文件中? 包裝.app文件的常用方法似乎記錄得很好,但是關於采用任意程序並將其包裝在pkg安裝程序中的細節很少。

pkgbuild(等)的手冊頁做了很多假設 - 你已經用xcode構建了一個應用程序,你打算使用.app並且可以生成plist等。我們要做的就是讓mac server安裝一個非app程序,它想要使用pkgs。

如果解決方案是可編寫腳本的,那么每次我們更新程序時都可以輕松創建新的pkg文件。 如果已經解釋過這個過程的體面資源可以聯系起來當然也會很有效。 這里的問題: 使OS X安裝程序包像Pro-Xcode Developer ID ready pkg與簡單安裝基本cli程序的需要不匹配。

我會推薦套餐

它是可編寫腳本的,因此它可以成為構建過程的一部分,並為您生成一個很好的mpkg。

我們使用它來自動下載第三方庫,然后調用make進行編譯,以及編譯文件的安裝。

需要注意的是,雖然這會產生一個mpkg,但大多數發行都是用磁盤映像完成的,所以我們也使用hdiutil來創建稀疏圖像,將mpkg復制到其中,將其轉換為壓縮的只讀dmg然后分發。

此過程的一個示例是:

1)創建稀疏RW DMG文件。

hdiutil create -size 100M -type SPARSE -volname "MyInstaller" -fs HFS+ MyInstaller.dmg.sparseimage

2)附加到圖像。 從輸出中注意磁盤和已裝入的卷名(例如/ dev / disk2s1和/ Volumes / MyInstaller)

hdiutil attach MyInstaller.dmg.sparseimage

3)在mpkg安裝程序中復制

cp -R Packages/build/My_Packages.mpkg /Volumes/MyInstaller/

4)從圖像中檢測。

hdiutil detach -force {mounted disk} (ex. hdiutil detach -force /dev/disk2s1)

5)從可寫稀疏圖像創建壓縮只讀圖像。

hdiutil convert "MyInstaller.dmg.sparseimage" -format UDZO -o "MyInstaller.dmg" -ov -imagekey zlib-level=9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM