有没有一种方法可以禁用应用程序的OS X自动终止?


11

有没有一种方法可以告诉OS X Lion对您不想自动终止的给定应用程序禁用自动终止?

如果您还不知道,FYI Lion就是一个戒烟者,如果您不希望将其用于某个特定的应用程序,那该怎么办。

如果Lion决定需要资源,并且您似乎并没有使用它们,它将在背后退出正在运行的应用程序。确定应用程序是否“正在使用”的试探法非常保守:它不能是活动的应用程序,它必须没有可见的,最小的窗口,当然,它必须明确支持自动终止。

例如,说我不希望没有打开TextEdit窗口并切换到另一个应用程序时自动退出TextEdit。

看完《Mac App编程指南》中的“自动终止”部分后,我发现我会尝试将NSSupportsAutomaticTermination键的值为No添加到TextEdit的Info.plist文件中。(无效:TextEdit在打开时崩溃。)

需要注意的是,该文件不包含NSSupportsAutomaticTermination密钥(这意味着Apple使用的是NSProcessInfo来启用自动终止),因此添加密钥可能始终无效,因为NSProcessInfo会覆盖plist文件中的内容。(通过使用修改后的Info.plist自签名TextEdit(包括NSSupportsAutomaticTermination密钥和No值),验证了此方法不起作用。

注意到的一个副作用是,在Info.plist文件中进行任何更改都会导致TextEdit在打开时崩溃。原因从崩溃日志中记录为“代码签名无效”,这意味着TextEdit应用及其所有内容均已代码签名。解决方法是使用codesign命令和代码签名任务中所述的自签名根证书对应用程序进行自签名

经过到目前为止的尝试,TextEdit仍然遵循自动终止。


1
所以...如果您对应用程序进行自签名,它是否有效?
jtbandes 2012年

1
不会,即使我进行了自签名,程序仍然会自动终止,无论我添加到Info.plist上是什么
MrDaniel 2012年

1
您是否尝试下载Apple随开发工具提供的TextEdit的示例源,并编辑(或删除)注册为自动终止的NSProcessInfo内容?
Cajunluke'4

没有尝试过,在这种情况下应该可以工作。但是这个问题超出了TextEdit。我们可以在没有开发人员源代码级别干预的情况下解决此问题,这更多是一个问题。因为我们将无法始终访问支持自动终止的应用程序的源代码。
MrDaniel

1
“这就是苹果公司的运作方式”,这是虚假的。这是一项新功能,目前尚未很好地宣传。从Apple Docs来看,甚至还不清楚操作系统自动终止程序所需要的内容。苹果公司也没有为此做广告,也没有在Lion功能页面上为最终用户提及。我认为苹果正在尝试新的东西。如果最终用户不喜欢这样,他们应该向Apple和开发人员发出声音,以便他们做得更好。
MrDaniel 2012年

Answers:


14

你的愿望是我的终端命令;-)

defaults write -g NSDisableAutomaticTermination -bool yes

请注意,由于“自动终止”并没有真正退出应用程序,而是它们隐藏了,因此必须正确退出它们才能生效。


2
很好,很好找到user22760。如上文所述对其进行了尝试,并且确实可以工作,谢谢。运行默认值后,TextEdit.app的测试用例不再自动终止...,然后打开然后退出TextEdit。重新打开TextEdit后,它将不会在没有打开窗口且在后台运行的情况下自动终止。
MrDaniel

有趣。试用完此命令后,它确实可以工作。但是,尝试撤消它已变得更加困难。默认值为write -g NSDisableAutomaticTermination -bool否,false或删除密钥无效,并且应用程序将不会自动终止
DrFloyd5

这个奇迹命令对我来说对小牛有效!当返回到会话或打开新会话时,它将生效。
Nicolas Barbulesco,2014年

非常感谢您添加了启动和手动退出应用程序的说明,然后重新启动它以查看效果是否正确!
jtheletter 2015年

1

如果您的硬件支持,有一种可靠的方法可以解决此问题。您可以从Mac OS X 10.7(Lion)升级到Mac OS X 10.6(Snow Leopard)。

虽然并非所有将运行Lion的硬件都可以支持此改进的操作系统(遗憾的是,我的2011年中的MacBook Air不能),但它具有非自动终止功能,Rosetta(可使Intel处理器运行针对PPC编译的软件)等功能。处理器),并与出色的WireTap Studio中的按应用程序录制功能兼容。

与所有升级一样,某些功能会丢失(例如,任务控制启动板,某些手势),并且某些操作系统的怪癖需要一些习惯(例如,滚动方向相反),但总的来说,这是一个精细升级。


2
很好,但是对于大多数用户而言,自动终止不值得追溯到Snow Leopard,它对某些用户只是一个小麻烦,我也不是其中之一。
MrDaniel

1
可以肯定的是,这是一个极端的解决方案,但这是Snow Leopard优于Lion的几种方式之一。它们的累积作用可能会诱使某人想要雪豹。就是说,我只是在学习使用它,因为Lion的其他功能(特别是与iCloud相关)使其值得克服缺点。
丹尼尔

问题是关于狮子。
Graham Perrin

1
@GrahamPerrin所以我的回答是。我的观点是,这是Lion破坏的许多事情之一,一种解决方案可能是不运行Lion。
丹尼尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.