我有一个二进制文件,foo
。使用vercel/pkg构建。
我想把它捆绑在mac的安装程序中;.pkg
安装文件。
应该在/usr/local/bin/foo
中安装二进制文件。
尝试:
$ cd Desktop // <--- foo binary is here
$ pkgbuild --identifier com.foo.pkg --install-location ./usr/local/bin/ --root ./ foo.pkg
在我的桌面上创建一个.pkg文件:foo.pkg
。当我运行foo.pkg
时,它正确地在/usr/local/bin
中安装foo
二进制文件,除了它也在/usr/local/bin
中留下foo.pkg
。
如何使pkgbuild
避免将foo.pkg
留在/usr/local/bin
中?
基于这个线程,我认为它会工作,如果我设置BundleIsRelocatable
为假。但是我不知道这是怎么做到的。
当您传递--root
时,它将获取该文件夹中的所有内容并将其放入包中。您正在构建的根目录中运行pkgbuild
—看起来很可能您的桌面上有foo.pkg
的副本,该副本是由早期运行的pkgbuild
创建的。当您再次运行它时,旧的foo.pkg
现在被内置到新包中。
将--root
指向目录,仅指向包含要打包的文件。
否则,使用--analyze
生成根目录的组件列表。根据需要定制生成的.plist(指定您想要包含的文件和相关选项),然后用--component-plist
将其反馈给pkgbuild
。
如果你还没有阅读手册页,你应该阅读一下。