【问题标题】:How do you specify a default install location to $HOME with pkgbuild?如何使用 pkgbuild 为 $HOME 指定默认安装位置?
【发布时间】:2012-10-03 13:22:02
【问题描述】:

我正在将我们的安装程序从 PackageMaker 移植到 pkgbuild,并尝试将默认安装位置设置为当前用户的主目录,并且仍然允许用户在系统范围内安装。

在我的分发文件中,我有 enable_currentUserHome="true" 和 enable_localSystem="true" 正确地允许用户“为这台计算机的所有用户安装”或“仅为我安装”。但是,我希望默认选择“仅为我安装”。

pkgbuild 有一个用于“--install-location”的命令行选项,手册页说它指定了默认位置,但没有提到如何指定主目录。我试过“~”和“$HOME”但没有运气。有什么我不知道的宏吗?

有谁知道如何告诉 pkgbuild 默认安装在当前用户的主目录下?

提前致谢!

-欧文

【问题讨论】:

    标签: macos installation pkgbuild


    【解决方案1】:

    pkgbuild 为您生成组件包。尽管组件包可以单独安装,但它通常被合并到产品存档中。在产品存档中,您可以设置安装域,例如 localSystem 和 home。

    例如,pkgbuild --install-location /Application 将按预期将其安装到 /Application 如果选择本地系统域,或安装到 $HOME/Application 如果选择家庭安装。

    也就是说,我强烈反对使用安装程序进行主文件夹安装。它只是在现实世界中不起作用。

    Making OS X Installer PackagesInstaller Problems and Solutions 中查看我的Known Issues and Workarounds 部分。

    【讨论】:

    • 好吧,将软件包安装到用户家中实际上是可行的,没有理由阻止它。假设允许将包安装在用户的主目录中,则执行此操作的命令行如下: bash-3.2$ installer -package file.pkg -target CurrentUserHomeDirectory --install-location 选项中无需设置任何内容,默认值就可以了。唯一关键的事情是在分发模板中包含 ,并在安装程序命令行中使用神奇的 CurrentUserHomeDirectory 目标。
    • 这是在写五个主要操作系统版本之前。而且我还没有对这些版本进行任何测试。无论如何,仅仅因为它工作过一次,不会相信它。基于'愚弄我一次,你的耻辱;骗我两次,真丢脸”
    【解决方案2】:

    一种解决方法是像这样设置分发文件参数:

    enable_localSystem="false" 
    enable_anywhere="true" 
    enable_currentUserHome="true"
    

    默认情况下会选择家庭安装,因为它是启用的首选。

    用户仍然可以通过选择Install on a specific disk... -> Macintosh HD 在系统范围内安装它。 缺点:对用户来说比直接选择要容易:Install for all users of this computer

    【讨论】:

    • 在我的机器上使用这些参数时,家庭安装不是启用的首选,默认情况下也不会选择。有没有办法将家庭安装设置为默认设置?
    • 在使用上面的答案一段时间后:OSX 安装程序似乎有问题。就我而言,如果我禁用系统范围安装:(enable_localSystem="false" enable_anywhere="false" enable_currentUserHome="true"),有时(并非总是如此!),安装程序仍会选择自动系统安装(并绕过安装位置面板)。所以我的答案在现实世界中是行不通的。
    • @souch 我有完全相同的问题,我像你一样设置了这三个参数。我不明白为什么有时 macOS 会要求输入管理员密码,即使我指定应用程序必须安装在用户主页中。也许它与包裹的签名或包裹的公证状态有关。在此期间您找到解决方案了吗?
    • 我们没有找到干净的解决方案。我们的应用程序经过签名和公证(.app 和 .pkg),遵循 OSX 文件指南(例如:Contents\Frameworks 中的 .dylib ...)。有时安装程序仍然会随机选择它想要的东西。在 postinst 脚本中,如果安装程序选择了错误的选项,如果需要,我们将 .app 复制到 /Applications 并将其 chown 给当前用户。
    • 在我的情况下,我还想允许非管理员用户安装和使用我的应用程序,所以我想完全摆脱凭据面板提示。由于某些原因,即使 enable_localSystem="false" 有时也会自动选择磁盘上的“标准安装”。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多