Gibt es eine Möglichkeit, die automatische Beendigung von Anwendungen durch OS X zu deaktivieren?

11

Gibt es eine Möglichkeit, OS X Lion anzuweisen, die automatische Beendigung für eine bestimmte Anwendung zu deaktivieren, die Sie nicht automatisch beenden möchten?

FYI Lion ist ein Quitter, wenn Sie nicht bereits wussten, was ist, wenn Sie nicht möchten, dass es für eine bestimmte Anwendung ist.

Lion beendet Ihre laufenden Anwendungen hinter Ihrem Rücken, wenn es entscheidet, dass es die Ressourcen benötigt, und wenn Sie sie scheinbar nicht verwenden. Die Heuristik zur Bestimmung, ob eine Anwendung "in Verwendung" ist, ist sehr konservativ: Sie darf nicht die aktive Anwendung sein, sie darf keine sichtbaren, nicht minimierten Fenster haben - und natürlich muss sie automatisch die automatische Beendigung unterstützen.

Angenommen, ich möchte nicht, dass TextEdit automatisch beendet wird, wenn keine TextEdit-Fenster geöffnet sind, und zu einer anderen Anwendung wechseln.

Nachdem ich mir den Abschnitt im Mac App-Programmierhandbuch für die automatische Beendigung angesehen hatte, dachte ich, ich würde versuchen, den Schlüssel NSSupportsAutomaticTermination mit dem Wert No zur Datei Info.plist für TextEdit hinzuzufügen. (Hat nicht funktioniert: TextEdit stürzt beim Öffnen ab.)

Zu beachten ist, dass die Datei keinen NSSupportsAutomaticTermination-Schlüssel enthielt (was bedeutet, dass Apple NSProcessInfo verwendet hat , um die automatische Terminierung zu aktivieren), sodass das Hinzufügen eines Schlüssels wahrscheinlich sowieso keine Auswirkung hat, da NSProcessInfo den Inhalt der Plist-Datei überschreibt. (Verifiziert, dass dies nicht funktioniert, indem Sie TextEdit mit einer geänderten Info.plist selbst signieren, die den Schlüssel NSSupportsAutomaticTermination und den Wert No enthält.)

Ein Nebeneffekt ist, dass das Ändern von Elementen in der Datei Info.plist dazu führt, dass TextEdit beim Öffnen abstürzt. Die Ursache wird im Absturzprotokoll als "Codesignatur ungültig" vermerkt. Dies bedeutet, dass die TextEdit-App und ihr gesamter Inhalt mit Code signiert sind. Die Problemumgehung besteht darin, die App mithilfe des codesignBefehls und eines selbstsignierten Stammzertifikats selbst zu signieren , wie in der Aufgabe "Codesignatur" angegeben .

Nach dem, was ich bisher versucht habe, befolgt TextEdit immer noch die automatische Beendigung.

MrDaniel
quelle
1
Also ... wenn Sie die App selbst signieren, funktioniert sie?
Jtbandes
1
Nein, das Programm wird auch nach der Selbstsignierung automatisch beendet, unabhängig davon, was ich zu Info.plist hinzugefügt habe
MrDaniel
1
Haben Sie versucht, die Beispielquelle für TextEdit herunterzuladen, die Apple mit den Entwicklertools bereitstellt, und das NSProcessInfo-Material zu bearbeiten (oder zu entfernen), das für die automatische Beendigung registriert wird?
Cajunluke
Nein, habe das nicht versucht, das sollte in diesem Fall funktionieren. Diese Frage geht jedoch über TextEdit hinaus. Es ist eher eine Frage der Frage, ob wir dies ohne Eingriffe auf Quellcode-Ebene des Entwicklers umgehen können. Da wir für Apps, die Auto Termination unterstützen, nicht immer Zugriff auf den Quellcode haben.
MrDaniel
1
"So funktioniert Apple" ist nur ein Schwindel. Dies ist eine neue Funktion, die derzeit nicht gut beworben wird. In Apples Docs ist nicht einmal klar, was für das Betriebssystem erforderlich ist, um ein Programm automatisch zu beenden. Und Apple macht keine Werbung dafür und erwähnt es auch nicht auf der Lion-Funktionsseite für Endbenutzer. Ich denke, es ist etwas Neues, das Apple versucht. Wenn Endbenutzer dies nicht mögen, sollten sie Apple und Entwickler ansprechen, damit sie es besser machen können.
MrDaniel

Antworten:

14

Dein Wunsch ist mein Terminalbefehl ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Da die automatische Beendigung die Anwendungen nicht wirklich beendet, sondern sie ausgeblendet hat, müssen sie ordnungsgemäß beendet worden sein, damit dies wirksam wird.


quelle
2
Ausgezeichnet, gut zu finden user22760. Versuchte es wie oben erwähnt und es funktioniert, danke. Der Testfall von TextEdit.app wird nicht mehr automatisch beendet, nachdem die Standardeinstellungen ausgeführt wurden ... und dann TextEdit geöffnet und anschließend beendet wurde. Beim erneuten Öffnen von TextEdit wird es nicht mehr automatisch gestartet, ohne dass Fenster geöffnet sind und im Hintergrund ausgeführt werden.
MrDaniel
Interessant. Nachdem Sie diesen Befehl ausprobiert haben, funktioniert er tatsächlich. Der Versuch, es rückgängig zu machen, hat sich jedoch als schwieriger erwiesen. Standardwerte schreiben -g NSDisableAutomaticTermination -bool no oder false oder das Löschen des Schlüssels hat keine Auswirkung und die Anwendungen werden nicht automatisch beendet
DrFloyd5
Dieser Wunderbefehl funktioniert bei Mavericks! Sie wird wirksam, wenn Sie zur Sitzung zurückkehren oder eine neue Sitzung öffnen.
Nicolas Barbulesco
Vielen Dank für die hinzugefügte Anweisung, die App zu starten und manuell zu beenden und sie dann neu zu starten, um den Effekt richtig zu sehen!
jtheletter
1

Es gibt eine sichere Möglichkeit, dies zu beheben, wenn Ihre Hardware dies unterstützt. Sie können ein Upgrade von Mac OS X 10.7 (Lion) auf Mac OS X 10.6 (Snow Leopard) durchführen.

Obwohl nicht alle Hardware, auf der Lion ausgeführt wird, dieses verbesserte Betriebssystem unterstützen kann (mein MacBook Air Mitte 2011 leider nicht), enthält es Funktionen wie Rosetta (die nicht automatisch beendet werden kann), mit der Intel-Prozessoren für PPC kompilierte Software ausführen können Prozessoren) und Kompatibilität mit den Aufnahmefunktionen pro App im hervorragenden WireTap Studio.

Wie bei jedem Upgrade gehen einige Funktionen verloren (wie Mission Control , Launch Pad , einige Gesten) und einige Betriebssystem-Macken sind gewöhnungsbedürftig (die Richtung des Bildlaufs ist beispielsweise umgekehrt), aber alles in allem ist es eine feines Upgrade.

Daniel
quelle
2
Guter Punkt, aber für die meisten Benutzer lohnt es sich nicht, die automatische Beendigung auf Snow Leopard zurückzusetzen. Für einige Benutzer ist dies nur ein kleiner Ärger. Ich bin keiner von ihnen.
MrDaniel
1
Es ist zwar eine extreme Lösung, aber dies ist eine von mehreren Möglichkeiten, wie Snow Leopard Lion überlegen ist. Die kumulative Wirkung von ihnen könnte jemanden dazu bringen, Schneeleoparden zu wollen. Das heißt, ich lerne gerade, damit zu leben, da andere Funktionen von Lion (insbesondere im Zusammenhang mit iCloud) es wert sind, die Nachteile in Kauf zu nehmen.
Daniel
Die Frage betrifft Lion.
Graham Perrin
1
@ AbrahamPerrin so war meine Antwort. Mein Punkt ist, dass dies eines von vielen Dingen ist, die Lion gebrochen hat, und eine Lösung könnte darin bestehen, Lion nicht auszuführen.
Daniel