【问题标题】:Using PackageMaker to run a script on install使用 PackageMaker 在安装时运行脚本
【发布时间】:2013-04-13 06:09:57
【问题描述】:

我有一个需要为其创建安装程序的应用程序,而安装程序需要做的所有事情(除了复制应用程序)就是运行一个不属于应用程序本身的脚本(或可执行文件)。关于我如何做到这一点的任何帮助?我看到在 Requirements 选项卡中有一个 Results of Script 操作,并且在 Actions 中也有 Preinstall Actions strong> 选项卡,其中包含 打开文件 操作。这些中的任何一个都可以完成这项工作还是我应该寻找其他地方?

【问题讨论】:

    标签: macos installation packagemaker


    【解决方案1】:

    Here 是一个很好的方法

    在安装过程中可以启动 7 种类型的脚本:

    安装检查: 此脚本在安装过程开始时启动(甚至在身份验证步骤之前)。它可用于检查该软件包是否可以安装在此计算机上。

    音量检查: 此脚本在“选择目标”步骤中启动。它用于确定可以在哪个卷上安装 Package。

    预检: 此脚本在用户单击“安装”按钮后立即启动。

    预安装/预升级: 如果有一个预检脚本,则在预检脚本之后启动此脚本(在单个软件包安装的情况下);否则就在用户单击“安装”按钮之后。

    如您所见,这里有两种类型的脚本。从未安装过软件包时(从 Installer.app 的角度)启动预安装程序,已安装软件包时启动预升级程序。为了确定一个包是否已经安装,Installer.app 正在查看以下目录的内容:/Library/Receipts。如果其中有一个名为 PackageName.pkg 的文件,则该 Package 已经安装,否则为第一次安装。

    安装后/升级后: 此脚本在安装包中的文件后启动。查看(预安装/预升级)以查看启动了哪个。

    飞行后: 此脚本在 postinstall / postupgrade 脚本之后或安装包后启动。

    【讨论】:

    • 谢谢,但我有一个简单的问题:我创建了安装后脚本,但是如何引用我想要运行的可执行文件,换句话说,我如何包含该可执行文件(不是实际的一部分)应用程序)以及它的路径是什么样的(在安装后脚本中)。
    • 安装完成后,界面中的完成按钮出现。我们是否会为此收到回调。这样我就可以在用户关闭安装窗口后启动 UI。
    • 多年后我会来到这里,但以防万一其他人来这里,preflight/postflight/preupgrade/postupgrade 不再受支持。只是preinstall/postintall。此外,从 Catalina 开始,您不能假设 /bin/bash 存在,因此您的脚本应该是 /bin/sh
    【解决方案2】:

    我刚刚设法在我使用 PackageMaker 制作的包中包含了一个 Shell 脚本。我需要在安装后将我的应用程序添加到登录项中,因此我制作了一个名为 postflight.sh 的脚本并将其放入文件夹中。 (它似乎适用于任何位置)

    然后在我的包中,我有应用程序。在 Contents、Package:Applications 的 Scripts 选项卡中,我在 Postflight 部分选择 postflight.sh。而已。

    我的postflight.sh

    开头
    #!/bin/bash
    

    然后它有一些脚本将应用程序放入登录项。当我没有那个时,我可以制作包,但安装失败。希望这会有所帮助。

    【讨论】:

    • “只是一个文件夹”。谢谢。阻止我的包编译的单条数据是放置该死的安装脚本的位置。
    • 如果这对任何人都有帮助:如果 packagemaker CLI 与 --scripts 选项一起使用,则脚本文件名不应具有 .sh 扩展名。只需将它们命名为 preflight、postflight 等。
    【解决方案3】:

    这篇PackageMaker How-To 文章已经过时了,但它有一些关于脚本的非常有用的信息,大约是一半。查找显示从 shell 和 perl 中看到的命令行变量的表格,以及一些有用的退出状态值。

    【讨论】:

    • 我觉得在这里复制信息不太合适,所以很抱歉通过引用来回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2018-05-28
    • 2011-01-21
    • 2023-03-20
    相关资源
    最近更新 更多