在 Eclipse 产品构建后编辑 Info.plist

Posted

技术标签:

【中文标题】在 Eclipse 产品构建后编辑 Info.plist【英文标题】:Edit the Info.plist after eclipse product build 【发布时间】:2014-06-26 10:21:40 【问题描述】:

我有一个使用 Eclipse 构建的基于功能的产品。我的问题是我在rcp应用程序上集成了“自我更新”功​​能,更新后,应用程序包被重写(我的意思是.app包,包括Info.plist)。我必须编辑 Info.plist,因为我有一些重要的键(比如关键的 LSBackgroundOnly 和“-vm”eclipse 参数,以防客户端没有在他们的计算机上安装 JRE)。所以,更新后,我所有的修改都被删除了,我想保留它们。

我的问题是:

是否可以提供自定义 Info.plist 以由 Eclipse 自动打包到包中?如果是这样,我该怎么做?

如果没有,我可以添加一些属性,这些属性会被 eclipse 自动添加到 Default Info.plist 中吗?如果有,怎么做?

感谢您的帮助。

纳鲁蒂姆8

【问题讨论】:

【参考方案1】:

显然,没有简单的方法可以为 Eclipse RCP 产品提供自定义 Info.plist 文件 - 请参阅带有功能请求的 Eclipse Bugzilla 339526。

如果您使用Maven Tycho 构建,您可以在materialize-product 之后和archive-product 之前更新Info.plist。对于自我更新,您还需要更新存储库中的 Info.plist。

我写了这个小 fix-info-plist-maven-plugin 来在我自己的 Tycho 产品构建中做到这一点。

【讨论】:

感谢您的意见!实际上,我只使用了 Maven 很短的时间(一个月的实习),从那以后我没有做过任何 Java。我投了赞成票,也许有人会发现您的回答很有用:)【参考方案2】:

您可以尝试添加该行:

root.macosx.cocoa.x86_64.folder.YourAppName.app/Contents=file:Info.plist

到您的产品功能之一的build.properties 文件(必须是功能而不是插件)。

将修改后的Info.plist文件放在同一目录下。

YourAppName 是您的应用程序名称。

该示例将 Info.plist 复制到 YourAppName.app/Contents 文件夹,但仅适用于 64 位 Mac OS X 的构建。

有关“根文件”的更多信息,请参阅here

【讨论】:

我刚刚尝试了您的建议。起初,我认为它不起作用,但在尝试了另一种方式(更改 info.plist 名称)后,该文件是在导出中创建的。结论是它可以工作,但不是我想要的...... Info.plist 在被复制后被 eclipse 覆盖:( 如果您使用 xxx.product 文件使用 Export > Eclipse product,请尝试检查 Generate p2 repository 选项。出于某种原因,选择该选项后,事情会按照我想要的顺序发生。 不幸的是,这个选项总是被选中...我将尝试不选中它,看看它是否有效【参考方案3】:

所以,终于找到了解决方案,简单到我都没有想过……

诀窍是在代码中找到应用程序启动更新的正确位置,并将 Info.plist 复制到另一个位置(或制作一个 临时文件)。

我们还必须找到更新后调用的方法(在我们的例子中是在应用程序重新启动之前),然后移回Info.plist(或从临时文件中写入文件)。我刚刚测试过它,它就像一个魅力;)

PS:Info.plist 由应用安装后启动的脚本编辑,由 .pkg 提供。

希望这会有所帮助,

narutim8

【讨论】:

以上是关于在 Eclipse 产品构建后编辑 Info.plist的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - iOS 模拟器部署目标“IPHONEOS_DEPLOYMENT_TARGET”设置为 7.0 && 无法找到构建输入文件 GoogleService-Info.pl

eclipse导入vscode工程

Eclipse 在构建之前不保存文件

如何构建 Rails 视图以编辑关联的数据集

使用maven-deploy-plugin部署Eclipse产品

如何在 Eclipse 中的远程计算机上构建 c++ 项目?