2011-02-17 49 views
2

我使用PackageMaker的新域功能(推出適用於Mac OS 10.5)目標用戶的主目錄。我在PackageMaker.app中創建了一個.pmdoc文件,並且在添加我的安裝後腳本之前,所有的工作都很完美。然後,突然間,我的軟件包在沒有以前就想要root權限。我試過用命令行構建packagemaker --doc mypackage.pmdoc --info Dist/PackageInfo,它提供了一個明確指定auth="none"的經過調整的PackageInfo文件,但這不起作用。當我用提取其調查輸出包,認證似乎package.pkg/Distribution中指定,即packagemaker生成自身的XML文件。建築配電安裝包(.pkg)與飛行後的腳本,而無需驗證

由於與GUI無奈,我已經切換到僅使用packagemaker在命令行上。但是,現在我的軟件包不顯示我的用戶界面文件(雖然它們包含在.pkg存檔中),但仍需要根認證。在生成Distribution文件中的違規行(通知AUTH = 「根」):

<pkg-ref id="org.myUniqueID.pkg" installKBytes="12032" version="1.0" auth="Root">#grooveshark.pkg</pkg-ref> 

這是我如何運行packagemaker

packagemaker -r ./Grooveshark -f ./Dist/PackageInfo -s ./Dist/Scripts -e ./Dist/Resources -v --domain user --target 10.5 --no-relocate --discard-forks --no-recommend -o ./out.pkg 

這是Dist佈局:

Dist/Distribution   # this isn't used by packagemaker, it generates its own 
Dist/PackageInfo 
Dist/Resources/en.lproj/background 
Dist/Resources/en.lproj/License 
Dist/Resources/en.lproj/ReadMe 
Dist/Resources/en.lproj/Welcome.rtfd 
Dist/Resources/en.lproj/Welcome.rtfd/gsDesktopPreview-mini.png 
Dist/Resources/en.lproj/Welcome.rtfd/gsDesktopPreview-searchSmall.png 
Dist/Resources/en.lproj/Welcome.rtfd/TXT.rtf 
Dist/Scripts/jsuuid  # specified as a postinstall in Dist/PackageInfo 
Dist/Scripts/postflight 

如何配置我的軟件包,以便在不需要根認證的情況下運行postinstall腳本?有沒有一些方法可以通過命令行指定PackageInfo文件和Distribution安裝腳本XML文件?

+0

什麼是GrooveShark目錄的佈局? – jcoffland 2011-11-01 23:48:54

回答

1

我結束了在分銷佈局移動文件INT的地方,然後我用下面的腳本先建一個傳統的扁平封裝,然後展開它,複製在允許每個用戶安裝,然後使用不同的設置過程將其壓縮到原位,而不進行處理,然後返回到PKG。

#!/usr/bin/bash 
# Build Package for local install using witchcraft 
PROJECT="some/filesystem/location/with/your/files" 
BUILDDIR="$PROJECT/Dist/build" 
PKGROOT="$PROJECT/Dist/Package_Root" 

INFO="$PROJECT/Dist/PackageInfo" 
DIST="$PROJECT/Dist/Distribution" 

RESOURCES="$PROJECT/Dist/Resources" 
SCRIPTS="$PROJECT/Dist/Scripts" 

# Remove .DS_Store files 
find "$PKGROOT" -name ".DS_Store" | sed 's/ /\\ /' | xargs rm 
# make build dir 
mkdir "$BUILDDIR" 

# build flat package that needs root to install 
packagemaker -r "$PKGROOT" -f "$INFO" -s "$SCRIPTS" $ARGS -o "$BUILDDIR/flat.pkg" 

# Build distribution that installs into home dirs by unpacking the flat pkg 

echo "Building Distribution" 
echo " Copying filesystem" 
cp -r "$RESOURCES" "$BUILDDIR/Resources" 
cp "$DIST" "$BUILDDIR/Distribution" 
echo " extracting flat package" 
pkgutil --expand "$BUILDDIR/flat.pkg" "$BUILDDIR/grooveshark.pkg/" 
rm "$BUILDDIR/flat.pkg" 
echo " flattening distribution" 
pkgutil --flatten "$BUILDDIR" "$PROJECT/$1.pkg" 
echo "Finished!"