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

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

我已经尝试过此主题中的解决方案:stackoverflow.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 个链接。

【问题讨论】:

    标签: macos shell icons executable dock


    【解决方案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 就可以解决问题。

    这样做:

    1. 转到您应用的文件夹

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

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

    4. 关闭 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) .

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

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

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

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

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

    希望对你有帮助,

    【讨论】:

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