我想为Mac OS X构建一个包含4个子包的安装包.子包是使用pkgbuild构建的.最终的包使用product.xml构建,使用Distribution.xml进行欢迎和许可文本以及安装位置选择.
现在我想在安装成功后运行脚本.特别是在所有打包的收据都由安装程序写入之后.
据我所知,手册页和文档以及其他有用的链接我应该使用postflight脚本.不幸的是我无法让它发挥作用.我将它命名为postflight并使用--script选项添加到pkgbuild的子包中,但似乎pkgbuild不支持postflight脚本.当我将其命名为postinstall时,它会在收据写入之前运行.
我需要在写入收据后运行,因为我想使用pkgutil工具为XCode编写一个xcconfig文件,以构成其他软件包的安装位置的位置.
我已经尝试通过在扩展的pkg中添加Scripts /文件夹来使用expand-flatten hack,但是在我展平之后这似乎被忽略了.
有没有办法满足我的需求?(将我的包的选定安装位置写入子包的安装位置中的文件)
如果可能的话,我想避免使用已弃用的packagemaker工具,至少如果还有其他更好的方法.
提前致谢
我需要制作Mac OS app安装程序,它还会安装其他第三方软件包.
当尝试通过productbuild --synthesize添加它时,它告诉"ThirdPartyPackage.pkg是产品档案,而不是组件包".
那么,我该如何正确地将第三方产品安装程序插入到我的安装程序中?
我有一个mac应用程序(例如Sample.pkg包含Sample.app)以及几个pkg依赖项(例如A.pkg和B.pkg).每当用户运行与这三个软件包捆绑在一起的dmg/product存档时,必须首先运行A.pkg和B.pkg,然后再安装Sample.pkg.有没有办法可以在打包mac应用程序时指定这种依赖关系,而无需用户手动检查并按正确的顺序安装它们?
我目前分发Java应用程序,并pkgbuild在macOS上使用打包和签名。
苹果最近警告开发人员:
“在即将发布的macOS版本中,Gatekeeper将需要由开发人员ID签名的软件由Apple 进行公证。”
在阅读了经过公证的文档后,苹果警告开发人员:
“您必须启用强化的运行时,Apple才能对您的应用程序进行公证。”
其中详细介绍了如何在Xcode中启用这些设置。但是,那些不是用Xcode开发的应用程序呢? Xamarin / Mono对如何解决这个问题有来回回的意见,但是到目前为止,提交似乎集中在Mojave检测和C / C ++上。Java应用程序或不分发任何C / C ++ / Objective-C编译代码的应用程序呢?如何对项目进行“公证”,以便将来的macOS更新不会阻止项目?
我正在尝试从脚本构建一个mac包安装程序,我想运行postinstall和postflight脚本.我构建包的脚本如下所示:
pkgbuild --root MyRoot/MyApp.app --identifier com.myapp.MyApp --scripts Scripts --install-location /Applications/MyApp.app MyApp.pkg
productbuild --synthesize --package MyApp.pkg Distribution.xml
productbuild --distribution Distribution.xml --resources Resources --package-path . CompleteInstaller.pkg
Run Code Online (Sandbox Code Playgroud)
我已将postinstall脚本放在Scripts中,并且它正在成功执行.我遇到运行postflight脚本的问题.它放在Resources目录中,不会被执行.这还不足以指定它的路径吗?我找不到这个问题的答案,如果我错过了,我很抱歉.
PS:我的postflight脚本没有什么特别之处 - 现在它试图在主目录中创建一个文件:
#!/bin/sh
touch ~/file
exit 0
Run Code Online (Sandbox Code Playgroud) 请问在 ubuntu 上构建 .pkg 文件的实用选项是什么?我正在尝试 xar,但生成的 .pkg 文件无法在 mac 上安装,得到“com.apple.installer.pagecontroller 错误 -1” 我正在尝试使用 munkipkg,但它取决于pkgbuildOS X。这可能吗在 Linux 上安装 pkgbuild 吗?或者有人可以建议最好的方法来做到这一点吗?
谢谢!
我正在尝试使用 PKGBUILD 构建我自己的 mariaDB arch linux 包,我有要安装的二进制文件。我有 bash 脚本(arch linux PKGBUILD),它运行 fime 并创建 pkg.tar 文件。当我尝试用 pacman 安装它时,我得到了这个:-
%sudo pacman -U mariadb-bin-10.3.7-1-x86_64.pkg.tar :(
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (1) mariadb-bin-10.3.7-1
Total Installed Size: 539.71 MiB
:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring [########################################] 100%
(1/1) checking package integrity [########################################] 100%
(1/1) loading package files [########################################] 100%
(1/1) checking for file conflicts [########################################] 100%
error: failed to commit transaction (conflicting files)
mariadb-bin: /usr/lib64 exists …Run Code Online (Sandbox Code Playgroud) 我有一个正在维护的 PKGBUILD 文件(用于 AUR)。它有一个值 'pkgrel',在每次构建包之前,我将其加 1(手动)。
总而言之,如果我想第六次构建包,我会手动将值设置为
pkgrel=6
Run Code Online (Sandbox Code Playgroud)
我还为其他进程编写了 bash 脚本。我被困在这里。请指导我如何通过任何 sed/awk 表达式增加 pkgrel 的值。我想要这样,也就是说,我第 7 次构建包,SED/AWK 表达式应该将值设置为 7
pkgrel=7
Run Code Online (Sandbox Code Playgroud)
在我的脚本中运行 makepkg 命令之前。
我不限制对 sed/awk 的回答,如果任何其他方法有效,请指导我。唯一的条件是它应该是 bash。