如何删除 shell 可执行文件的停靠图标?

Posted

技术标签:

【中文标题】如何删除 shell 可执行文件的停靠图标?【英文标题】:How to remove the dock icon of a shell executable? 【发布时间】:2014-05-22 09:23:42 【问题描述】:

我有一个用 Eclipse 构建的 Java 应用程序,适用于 Mac OS X。 此应用程序通过 .pkg 文件安装,并且应该是守护进程。使用 Macbook (Pro、Retina) 一切正常,但使用 iMac 我正在使用,当应用程序启动时,我在 Dock,正如您在 following link。

我已经尝试过此主题中的解决方案:***.com/a/620950/3641679,但它不起作用(我仍然有 Dock 图标)。目前 Info.plist 看起来像 this。

我能做什么?

感谢您花时间帮助我。

信息(假设应用名称为 testapp)

我使用 launchctl start/stop stopstart 守护程序 当我双击可执行文件(在 testapp.app/Contents/MacOs/testapp 中)时,我在 Dock 中有 testapp.app(带有 Info.plist 中指定的图标文件) .这是一个屏幕截图 res.cloudinary.com/doit0eqlo/image/upload/v1400750376/app_k3adzh.png 抱歉有些链接,我必须有 10 个声望才能发布超过 2 个链接。

【问题讨论】:

【参考方案1】:

将此添加到您的 info.plist:-

<key>LSUIElement</key>
<true/>

注意这里的值设置为'true'而不是1

作为Apple docs 状态:-

指定应用程序是否为代理应用程序,即不应出现在 Dock 或强制退出窗口中的应用程序。详见“LSUIElement”。

【讨论】:

在我提供的 plist 屏幕截图中,您可以看到此选项已包含在 .plist 中......有些东西让我感到困惑:在 Apple 文档中,LSUIElement是一个字符串,但你放了一个布尔值......我应该放哪个?我忘了提它,但我也用布尔值进行了测试...... 抱歉重复发布:我刚刚尝试过使用布尔值,但仍然没有运气。这是我的.plist 我最初使用了整数 '1',这对我不起作用,但布尔值 true 可以。您的 java 应用程序是启动自己的可执行文件,还是与 java 运行时相关联的 java 包?如果是后者,我怀疑这是您针对 jar 而不是运行时的问题。 我认为该应用程序会启动自己的可执行文件,但我怎么能确定呢?我所知道的是我在 /Applications 中有一个文件夹,其中包含 .app 文件夹,而可执行文件位于 .app/Contents/MacOs/ 文件夹中。让我烦恼的是,这个问题在我正在使用的 iMac 上发生,而不是在我的个人 Macbook Pro 或某些我的朋友 Macbook Pros 和 Retinas。我怀疑与计算机的 family 相关的问题(可能只针对 iMac 或类似的东西),但我不确定... 我会尝试在网上找到一些其他的信息,并在这里发布。感谢您的帮助和指导!【参考方案2】:

所以,我终于找到了解决方案!解决方案分为几个步骤。

第 1 步:编辑 Info.plist

我必须添加 LSBackgroundOnly 键。它是一个字符串,必须设置为1

正如Apple Documentation中所说:

LSBackgroundOnly

指定此应用程序是否仅在后台运行。如果此键存在并设置为“1”,则启动服务仅在后台运行应用程序。

信息:

虽然文档指定此键是 boolean,但将其设置为具有 1 值的 string 就可以解决问题。

这样做:

    转到您应用的文件夹

    进入 .app 的文件夹,然后进入 Contents 文件夹(例如 /Applications/test.app/Contents)

    李>

    使用您想要的任何文本编辑器(SublimeText、TextEdit、Xcode 等)打开 Info.plist

    关闭 dict标签(&lt;/dict&gt;)之前添加以下行

&lt;key&gt;LSBackgroundOnly&lt;/key&gt;

&lt;string&gt;1&lt;/string&gt;

保存所有内容。

第 2 步:编辑 appname.ini

最初我只做了第 1 部分,所以还不够。我在this question找到了解决方案。

该文件位于应用程序 .app 内的“Contents/MacOs”文件夹中(例如 /Applications/testapp.app/Contents/MacOs/testapp.ini) .

    打开 .ini 文件(使用您想要的任何文本编辑器)。

    -vmargs 行之前,添加以下行:-nosplash

    -vmargs 行之后,添加以下两行:

    -Xdock:隐藏 -Dapple.awt.UIElement=false

保存文件,现在您可以启动应用了:它不应该是 Dock 和“强制退出”窗口中的任何图标,但您的应用应该在后台运行。

希望对你有帮助,

【讨论】:

我正在尝试执行您在上面解释的操作,但是我有问题,一个是我编辑添加的加班:LSBackgroundOnly1 in info .plist,我保存/关闭/重新打开应用程序,它说应用程序已损坏再次下载。第二件事是我在contents/macOs/中没有任何ini文件我只有一个带有终端图标的脚本可执行文件,仅此而已。 对不起,我完全忘记了这个帐户!你成功了吗?这让我想起了一些不好的事情lol(只是作为一个信息,几个月后我放弃了java)

以上是关于如何删除 shell 可执行文件的停靠图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何将shell脚本变为可执行文件

我如何包含一个可用于可执行文件和表单的图标?

Mac上如何运行shell脚本(变为可执行文件)

如何让shell脚本变成可执行文件

如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?

如何向 mingw-gcc 编译的可执行文件添加图标?