我有一个二进制文件,
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
时,它会正确安装 foo
中的 /usr/local/bin
二进制文件,除了它还会将 foo.pkg
留在 /usr/local/bin
中。
怎样才能让
pkgbuild
避免将foo.pkg
留在/usr/local/bin
里面?
当您通过
--root
时,它会获取该文件夹中的所有内容并将其烘焙到包中。您正在正在构建的根目录中运行 pkgbuild
- 桌面上很可能有 foo.pkg
的副本,该副本是由早期运行 pkgbuild
创建的。当您再次运行它时,旧的 foo.pkg
现在已内置到新包中。
相反,将
--root
指向包含您要打包的文件的目录 only。
否则,请使用
--analyze
生成根目录的组件列表。根据需要自定义生成的 .plist(指定要包含的文件和关联选项),然后使用 pkgbuild
将其反馈回 --component-plist
。
如果您还没有阅读过手册页,您应该阅读一下。