标签: pkgbuild

如何在Mac上使用pkgbuild和productbuild运行postflight脚本来构建安装包

我想为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工具,至少如果还有其他更好的方法.

提前致谢

macos installer productbuild pkgbuild

5
推荐指数
1
解决办法
3457
查看次数

productbuild:将第三方产品存档添加到安装程序?

我需要制作Mac OS app安装程序,它还会安装其他第三方软件包.

当尝试通过productbuild --synthesize添加它时,它告诉"ThirdPartyPackage.pkg是产品档案,而不是组件包".

那么,我该如何正确地将第三方产品安装程序插入到我的安装程序中?

macos xcode cocoa productbuild pkgbuild

5
推荐指数
1
解决办法
1110
查看次数

如何在mac上的dmg/pkg中包含安装程序依赖项

我有一个mac应用程序(例如Sample.pkg包含Sample.app)以及几个pkg依赖项(例如A.pkg和B.pkg).每当用户运行与这三个软件包捆绑在一起的dmg/product存档时,必须首先运行A.pkg和B.pkg,然后再安装Sample.pkg.有没有办法可以在打包mac应用程序时指定这种依赖关系,而无需用户手动检查并按正确的顺序安装它们?

macos installer dmg pkgbuild

5
推荐指数
1
解决办法
365
查看次数

Java和Mojave的强化运行时

我目前分发Java应用程序,pkgbuild在macOS上使用打包和签名

苹果最近警告开发人员:

“在即将发布的macOS版本中,Gatekeeper将需要由开发人员ID签名的软件由Apple 进行公证。”

在阅读了经过公证的文档后,苹果警告开发人员

“您必须启用强化的运行时,Apple才能对您的应用程序进行公证。”

其中详细介绍了如何在Xcode中启用这些设置。但是,那些不是用Xcode开发的应用程序呢? Xamarin / Mono对如何解决这个问题有来回回的意见,但是到目前为止,提交似乎集中在Mojave检测和C / C ++上。Java应用程序或不分发任何C / C ++ / Objective-C编译代码的应用程序呢?如何对项目进行“公证”,以便将来的macOS更新不会阻止项目?

可能相关:如何为Xcode上的第三方CLI进行代码签名并启用强化的运行时?

java security pkgbuild hardening macos-mojave

5
推荐指数
2
解决办法
1938
查看次数

在Mac上安装软件包时运行postflight脚本

我正在尝试从脚本构建一个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)

macos installer packagemaker productbuild pkgbuild

4
推荐指数
1
解决办法
9457
查看次数

在 Linux 上构建 OSX .pkg 文件

请问在 ubuntu 上构建 .pkg 文件的实用选项是什么?我正在尝试 xar,但生成的 .pkg 文件无法在 mac 上安装,得到“com.apple.installer.pagecontroller 错误 -1” 我正在尝试使用 munkipkg,但它取决于pkgbuildOS X。这可能吗在 Linux 上安装 pkgbuild 吗?或者有人可以建议最好的方法来做到这一点吗?

谢谢!

linux macos ubuntu pkg-file pkgbuild

4
推荐指数
1
解决办法
4863
查看次数

存在于 arch 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)

linux bash archlinux pkgbuild

4
推荐指数
1
解决办法
2010
查看次数

使用 SED/AWK 增加 PKGBUILD 文件中变量的值

我有一个正在维护的 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。

awk sed archlinux pkgbuild

1
推荐指数
1
解决办法
50
查看次数