问题标签 [pkgbuild]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - osx - 作为 pkg 安装的一部分删除文件
使用 pkgbuild 我为我的 OSX 应用程序创建安装程序。有没有办法添加额外的安装步骤,这会删除一些文件?在这个特定的示例中 - 当我运行我的应用程序时,它会在二进制文件所在的目录中创建新文件。新版本的安装会替换二进制文件,但会保留以前创建的文件。安装新版本后我需要“重新开始”。
macos - Mac OS X 包修改我的主目录中的文件,而不是安装到应用程序
我试图找出将图形Qt应用程序分发给 Mac OS X 用户的最佳方式。
我已经了解了pkgbuild、productbuild,并使用它们来创建带有扩展名的平面包。.pkg
但是,当我尝试在 Mac OS X 10.11 上安装这样的平面包时,我看到了一些非常奇怪的行为。看起来这些包的 Mac OS X 安装程序会在我的主目录中搜索我要安装的应用程序。如果它在那里找到了应用程序,那么它实际上窃取了该应用程序,将这些文件的所有权更改为 root,并且它无法将应用程序安装到/Applications
我想要安装它的文件夹中。
预期的行为是该包应始终将我的应用程序安装到该/Applications
目录中,并且不应修改我的主目录中任何文件的所有权。
这看起来真的很奇怪。发生了什么事,我该如何解决?扁平包看起来不错,但我想保证它们总是将应用程序安装在正确的位置,并且我不希望它们修改用户主目录中的文件。
重现问题的步骤
在您的主目录中安装Homebrew 。
运行brew install qt5
以安装 Qt5。
用这三个文件创建一个新目录:
Info.plist.in:
主.cpp:
测试.sh:
./test.sh
现在通过在终端中输入来运行 test.sh。在我的电脑上,输出看起来像这样:
(显然,pkgbuild 正在检测我的暂存文件夹中的组件。我希望它不会那样做。我希望它只是将所有这些文件安装到用户的/Applications
目录中。如果它仅仅因为它们有文件而特别对待这些Info.plist
文件,那可能是坏事。)
接下来,通过运行open app.pkg
并按照屏幕上的 GUI 安装包:
运行ls /Applications/abc.app
,您可以看到应用程序没有安装在预期的位置。
运行ls -l staging
or find . -uid root
,可以看到里面的文件staging/abc.app
现在都归root用户所有了,这是出乎意料的。
现在使用sudo rm -rf staging
. 尝试再次安装该软件包。这次,由于安装程序没有在我的主目录中找到该应用程序,因此它已成功将其安装到/Applications
.
备择方案
我对仅仅将.app
文件夹打包成一个.dmg
文件不感兴趣,因为我的应用程序实际上将有一个 GUI 和一个命令行组件,并且很难使用该方法将命令行组件放到用户的路径中。使用平面包,我可以通过将文件添加到/etc/paths.d
.
是否有更好的工具来创作 Mac OS X 平面包?
源代码是否pkgbuild
可用,以便我可以弄清楚它在做什么?
我可能会尝试这个答案中描述的更复杂的过程,看看是否有帮助。
cmake - PKGBUILD 与 make all
我现在正在尝试为由几个子应用程序组成的 github 项目为 AUR 编写 PKGBUILD。
所以基本上这个项目的 CMake 文件只是运行一个 make 来 make && make 安装子应用程序。
这些是我的构建和打包步骤:
我的问题是现在一切正常,除了:
- makepkg -i 在构建期间从不要求 sudo 权限(因此我必须在 make all 前面添加 sudo)
- 当要求安装时,makepkg 无法识别包的大小。因此,在运行 packman -R packagename 时该包也不会卸载
我无法更改 CMake 文件,因为该项目不是我的,并且所有不同的子应用程序都属于一起,如果我尝试 make && make 分别安装它们,我会得到一堆错误,它们相互依赖。
archlinux - 是否可以从 pre_install() 中止 pacman 安装
创建 PKGBUILD 文件时,可以在 pre_install()、post_install() 等处执行挂钩。
我现在有一个自定义的 arch linux pacman 包,我需要在安装之前完成一些自定义检查以确定安装是否安全。
如果我在脚本中这么说,我想在 pre_istall() 脚本中运行我的测试并让 pacman 中止安装。
那么,如何实现呢?到目前为止,我所做的只是在日志中收到一条错误消息,但 pacman 继续安装...
macos - 有没有办法更改 pkg 的日志记录位置?
我正在使用pkgbuild
and构建安装程序productbuild
。如果出现任何问题,我希望能够从我的用户那里收集安装日志。如果这些日志没有与他们安装的所有其他东西混合在一起,那就太好了。
默认情况下,看起来所有日志都转到/var/logs/install.log
. 有什么方法可以更改我的应用程序安装程序日志的这个位置吗?
macos - 如何为 mac 的 .app 创建 dmg 文件?
我是 iOS 的开发者,开发了一个 mac 应用程序。现在我想分发我的应用程序,以便搜索它并发现我们需要将 .app 上传到 Mac App Store,它看起来很好。而对于自我分发,我们可以有三种选择:
- 是分享我们的应用程序
- 是创建 .dmg 文件
- 是共享 .pkg 文件(Package Maker)。
在 pkg 文件中,我的客户想要在没有介绍的情况下安装应用程序,阅读我以及许可协议,我删除了许可和自述文件,但无法删除介绍部分。请从这里帮助我......</p>
提前致谢
macos - OS X:制作 pkg,以 root 身份运行后安装脚本
我正在使用包来构建 PKG 安装程序。它的目标很简单:将我的应用程序传送到/Applications
文件夹并启动它。Packages.app 除了一件事外,几乎完成了它的工作。当它启动安装后脚本(启动刚刚安装的应用程序的简单脚本)时,该脚本以 root 身份启动,因此该应用程序也以 root 身份启动。这是不受欢迎的行为。奇怪的是为什么安装程序在安装过程中需要管理员密码,我在 PKG 项目中未选中此设置。所以,问题是:如何让安装程序在当前登录的用户下运行安装后脚本?
xcode - 如何禁止 .pkg 安装程序在与指定安装目录不同的位置搜索包含的 .app,
这个问题已经在 Stackoverfl0w 上讨论过多次,但不幸的是我没有看到任何真正令人满意的解决方案。
情况:
(仅包括在内,因为大多数先前的答案都与“只是不要这样做!没有理由拥有多个版本的应用程序..等等”这一行一致,我同意大多数情况下,但不是这个。)
我们目前正在发送一个 .pkg 文件,该文件将我们的软件包安装到 /Applications/$CompanyName/$SoftwareName_$VersionNumber 。在文件夹名称中包含版本号而不删除旧版本是必要的,因为我们的许多客户同时使用我们当前的发行版和 beta 版本,此外,许多客户使用旧版本软件是因为他们认证了它用于特定用途案例,但他们对当前项目使用当前版本。
我们过去只为 macOS 提供命令行工具和库,因此多年来它对我们来说工作得很好。
但是,我们开始仅将我们的 GUI 应用程序从 Windows 移植到 Windows / macOS / Linux,它们在 macOS 下以 .app 格式提供。
问题:
如果 .app 包含在 .pkg 安装程序中,安装程序会在空盘中搜索相同 .app 的旧实例。如果找到,它会替换它找到的实例(非常糟糕),并且也不会将 .app 放在指定的安装目录中(也很糟糕)。
我找到的解决方案:
a) 为每个发布的版本更改 .app 的 CFBundleIdentifier。对我来说似乎不是一个干净的方式。我认为它还会导致 .app 在启动板中多次出现
b) 在安装程序执行之前搜索 .app 的所有实例,压缩它们,并在安装后再次提取它们。(听起来也不是一个好的解决方案。)
有人对此有干净的方法吗?无法相信 Apple 没有办法指定在创建 .pkg 期间应省略此行为。
有比我找到的更好的文档吗?:
http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html(良好的文档,但经过约 8 年的正常运行时间后,许多字段仍标有“即将发布的说明”。)
编辑:添加 XCode 作为标签。用这个问题赢得风滚草后撞了。将不胜感激任何建议:)
macos - 在 osx 中使用选择文件夹选项编写安装程序
我正在为 mac os 中的 Adobe photoshop 编写插件安装程序。所以,当我用谷歌搜索时,我发现 mac os 的安装程序有两种格式:dmg 和 pkg。在 dmg 中没有选项要求用户选择软件的文件夹位置(在这种情况下为 Adobe photoshop)。这是将插件文件放置在 adobe photoshop 软件位置所必需的。而在 pkg 中,可以选择仅询问硬盘驱动器级别而不是文件夹位置级别(我可能在这里错了。如果我错了,请纠正我)。
Applescript 可能会解决问题,但我需要包含一份许可协议让客户接受它然后继续安装,这使我没有选择 applescript
请帮我解决这个问题并提出一种方法。
macos - pkgbuild OSX,在降级的情况下强制安装失败
我根据--component-plist
文件制作了一个包含 2 个组件的包。在 plist 文件中,我添加了以下标志以防止降级:
当我执行降级方案时,我收到以下消息:
这是意料之中的,但不幸的是,安装继续进行,并且其他组件正在正确安装,preinstall
和postintsall
脚本也是如此 - 所以我得到了两个版本的混合。
有没有办法在任何尝试实际安装它们之前强制执行组件版本验证,并在验证未通过的情况下停止安装过程。
更新 :
另一种可以帮助我的方法是防止运行安装前和安装后脚本,以防尝试降级。
我在这里看到了关于这个问题的未回答问题的参考。