【问题标题】:MacOs App Store pkg Productbuild -- add a property to product list (without Xcode)MacOs App Store pkg Productbuild -- 将属性添加到产品列表(没有 Xcode)
【发布时间】:2020-11-01 22:22:44
【问题描述】:

尊敬的 macOS Productbuild 和 pkgbuild 专家(不使用/不使用 Xcode)

这是我经历了关于产品构建和 pkgbuild 的巨大学习之旅后的最后一个障碍

我从 Appstore 收到错误

  • “ITMS-90264:产品中最低的最低系统版本[无] 定义属性列表必须等于“LSMinimumSystemVersion” 'Info.plist' 中的值 [10.9]。 "

在我的 App/Contents/Info.Plist 中有

`<key>LSMinimumSystemVersion</key>
  <string>10.9</string>`

现在当我按照以下顺序构建包时

 `pkgbuild --analyze --root "./pkgbuild/app_path/" app.plist
    
    pkgbuild --root "${ROOTFOLDER}" --identifier "${IDENTIFIER}" --version ${VERSION} --    component-plist ./app.plist  --install-location "/Applications" \
     --sign "${IDENTITY}" \
     "${PKGNAME}.pkg"
    
    #productbuild --synthesize --package Final.pkg distribution.xml
    
    productbuild --distribution ./distribution.xml --resources ~/Desktop/resources --identifier com.myorg.uniqueid --version ${VERSION} --sign "${IDENTITY}" --product ~/Desktop/modInfo.plist outputFinal.pkg`

问题我在哪里将“产品定义属性列表”中的最低最低系统版本“无”合并到 10.9?以及我需要在什么文件中插入什么,如何插入?

如果我能得到一些指点,不胜感激。

提前致谢

【问题讨论】:

  • 感谢您的回复。我之前确实看过那个链接。对不起,我是这个超级新手。我在 modInfo.plist 中添加了 os10.9 作为 product build --product modInfo.plist 的参数,但没有得到结果.. appostore 仍然抱怨我没有最低系统版本。任何进一步的指示,非常感谢!
  • 我发布了一个答案,希望能引导您朝着正确的方向前进。基本上,您需要一个production_definition.plist 来伴随您的productbuild 命令,其中设置了最低操作系统版本。 :)

标签: macos properties pkgbuild productbuild


【解决方案1】:

为了结束这个主题,并为将来对这个主题的查询提供帮助,这里是一个摘要

  1. productbuild 带有两个选项 --distribution distribution.xml 和 --product product_definition.plist 不能一起工作——我使用的是 10.15.7 Catalina MacOS;产品定义被忽略

  2. 最终将 --component 组件路径与 --product product_definition.plist 一起使用以被 Appstore 接受

  3. 从第 2 步开始,我现在没有 distribution.xml,我失去了许可/eula 能力

我决定在我的应用程序本身的菜单下解决 Eula。

非常感谢 I'L'I 耐心的指点

AppStore 太麻烦,文档太少,循环运行,不值得花时间。感谢苹果!

【讨论】:

    【解决方案2】:

    您需要在最低操作系统版本中包含product_definition.plist。它应该类似于:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>os</key>
      <array>
        <string>10.9.0</string>
      </array>
    </dict>
    </plist>
    

    您的productbuild 命令将变为:

    productbuild \
        --distribution ./distribution.xml \
        --resources ~/Desktop/resources \
        --identifier com.myorg.uniqueid \
        --version ${VERSION} \
        --sign "${IDENTITY}" \
        --productbuild --product ~/Desktop/product_definition.plist --component build/Release/Your.app /Applications outputFinal.pkg
    

    所以基本上我们已将您的 modInfo.plist 更改为正确的名称 (product_definition.plist) 并包含处理最低操作系统版本的密钥。

    【讨论】:

    • 密钥明显不正确;尝试更新答案中的那个。如果新密钥不起作用,则可能需要 os-versionmin。不幸的是,Apple 的文档有点过时,而且并不完全清楚。
    • 您可能想尝试&lt;string&gt;10.9.0&lt;/string&gt; 而不仅仅是&lt;string&gt;10.9&lt;/string&gt;。这是一个小细节,但可能是问题所在。
    • @I'L'I 经过一些艰苦的调试后,我注意到当我有 --distribution 选项时, --product product_definition 被忽略了。我用 --product no_file_exists 和 --distrubtion distribution.xml 测试它继续创建包。当我删除 --ditsribution 选项并让 --product no_file_exists productbuild 正确抛出错误“No product definition plist found at “no_file_exists”。首先不知道为什么?有没有办法在 distribution.xml 中包含产品需求?感谢任何指针/direction。已经一个星期了,我正在撞墙。拜托。
    • @tech_geek:是的,您可以通过多种方式将产品需求写入发行版和/或创建处理它的插件,尽管 AppStore 是否接受这些方法是完全不同的故事。对于您的项目,我相信我们的研究误导了我们,并且可能使用了过时的方法。我注意到在productbuild 手册页上,他们提到预安装属性列表替换了product_definition.plist。它仍然使用属性列表,但他们显示它与 --component 一起使用(请参阅下一条评论)。
    • 这是他们在手册页中显示的语法:productbuild --product def.plist --component build/Release/Sample.app /Applications Product.pkg,因此 def.plist 将是我们创建的 product_defintion.plist。 “构建存档 Product.pkg 以在 /Applications 下安装 Sample.app,合成具有 def.plist 要求的发行版。这对于构建具有预安装要求的 Mac App Store 存档很典型。”。他们显示的关键是os 来处理答案顶部示例中的最低版本。
    猜你喜欢
    • 2018-05-04
    • 2020-06-18
    • 2022-09-27
    • 2019-07-11
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多