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

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 es noch nicht wussten, was ist, wenn Sie es für eine bestimmte Anwendung nicht wollen.

Lion wird Ihre laufenden Anwendungen hinter Ihrem Rücken beenden, wenn es entscheidet, dass es die Ressourcen benötigt, und wenn Sie sie anscheinend nicht verwenden. Die Heuristik zur Feststellung, ob eine Anwendung „in Verwendung“ ist, ist sehr konservativ: Es darf nicht die aktive Anwendung sein, sie darf keine sichtbaren, nicht minimierten Fenster haben – und natürlich muss sie explizit die automatische Beendigung unterstützen.

Angenommen, ich möchte nicht, dass TextEdit automatisch beendet wird, wenn ich kein TextEdit-Fenster geöffnet habe und zu einer anderen Anwendung wechsle.

Nachdem ich mir den Abschnitt „Mac App Programming Guide“ für „Automatic Termination “ 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 den NSSupportsAutomaticTermination-Schlüssel nicht enthielt (was bedeutet, dass Apple NSProcessInfo verwendet hat , um die automatische Beendigung zu aktivieren), sodass das Hinzufügen eines Schlüssels wahrscheinlich sowieso keine Wirkung haben würde, da NSProcessInfo den Inhalt der Plist-Datei überschreibt. (Bestätigt, dass dies nicht funktioniert, indem TextEdit mit einer modifizierten Info.plist, die den NSSupportsAutomaticTermination-Schlüssel und den Wert No enthält, selbst signiert wurde).

Ein Nebeneffekt, der festgestellt wurde, ist, dass das Ändern von irgendetwas in der Info.plist-Datei dazu führt, dass TextEdit beim Öffnen abstürzt. Die Ursache wird aus dem Absturzprotokoll als „Code-Signatur ungültig“ vermerkt, was bedeutet, dass die TextEdit-App und alle ihre Inhalte verschlüsselt sind. Die Problemumgehung besteht darin, die App mithilfe des codesignBefehls und eines selbstsignierten Stammzertifikats selbst zu signieren, wie in der Code Signing-Aufgabe beschrieben .

Nach dem, was ich bisher versucht habe, gehorcht TextEdit immer noch der automatischen Beendigung.

Also ... wenn Sie die App selbst signieren, funktioniert es?
Nein, das Programm wird auch nach der Selbstsignierung immer noch automatisch beendet, unabhängig davon, was ich zu Info.plist hinzugefügt habe
Haben Sie versucht, die Beispielquelle für TextEdit herunterzuladen, die Apple mit den Entwicklungstools bereitstellt, und das NSProcessInfo-Zeug zu bearbeiten (oder zu entfernen), das sich für die automatische Beendigung registriert?
Nein, das habe ich noch nicht probiert, das sollte in diesem Fall funktionieren. Aber diese Frage geht über TextEdit hinaus. Es ist eher eine Frage, ob wir dies ohne Eingreifen auf Entwickler-Quellcodeebene umgehen können. Da wir nicht immer Zugriff auf den Quellcode für Apps haben werden, die die automatische Terminierung unterstützen.
Nun, nein. Der ganze Punkt ist, den Regeln des Betriebssystems zu folgen. Wenn Sie die Funktion umgehen möchten, ohne den Code zu ändern, verwenden Sie Snow Leopard. So funktioniert Apple.
"So funktioniert Apple", das ist einfach falsch. Dies ist eine neue Funktion, die nicht gut beworben wird. Aus Apples Docs ist nicht einmal klar, was für das Betriebssystem erforderlich ist, um ein Programm automatisch zu beenden. Und Apple versäumt es, dies zu bewerben oder auf der Lion-Funktionsseite für Endbenutzer zu erwähnen. Ich denke, es ist etwas Neues, das Apple versucht. Wenn Endbenutzer dies nicht mögen, sollten sie Apple und die Entwickler ansprechen, damit sie es besser machen können.

Antworten (2)

Dein Wunsch ist mein Terminalbefehl ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Beachten Sie, dass die automatische Beendigung die Anwendungen nicht wirklich beendet, sondern sie versteckt , sie müssen ordnungsgemäß beendet worden sein, damit dies wirksam wird.

Ausgezeichnet, gute Suche user22760. Habe es wie oben beschrieben versucht 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 dann beendet wurde. Beim erneuten Öffnen von TextEdit wird es nicht mehr automatisch beendet, wenn keine Fenster geöffnet sind, und im Hintergrund ausgeführt.
Interessant. Nachdem Sie diesen Befehl ausprobiert haben, funktioniert er tatsächlich. Der Versuch, dies rückgängig zu machen, hat sich jedoch als schwieriger erwiesen. defaults write -g NSDisableAutomaticTermination -bool no oder false oder das Löschen des Schlüssels hat keine Auswirkung und die Anwendungen werden nicht automatisch beendet
Dieser Wunderbefehl funktioniert für mich auf Mavericks! Sie wird wirksam, wenn Sie zur Sitzung zurückkehren oder eine neue Sitzung eröffnen.
Vielen Dank für die zusätzliche Anweisung zum Starten und manuellen Beenden der App und dann zum erneuten Starten, um den Effekt richtig zu sehen!

Es gibt einen sicheren Weg, 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 von Mitte 2011 leider nicht), enthält es Funktionen wie Nicht-Auto-Terminierung, Rosetta (was es Intel-Prozessoren ermöglicht, Software auszuführen, die für PPC kompiliert wurde Prozessoren) und Kompatibilität mit Per-App-Aufzeichnungsfunktionen im hervorragenden WireTap Studio.

Wie bei jedem Upgrade gehen einige Funktionen verloren (etwa Mission Control , Launch Pad , einige Gesten) und einige Macken des Betriebssystems sind gewöhnungsbedürftig (z. B. wird die Scrollrichtung umgekehrt), aber insgesamt ist es eine feines Upgrade.

Guter Punkt, aber für die meisten Benutzer lohnt es sich nicht, auf Snow Leopard zurückzuwechseln, es ist nur ein kleines Ärgernis für einige Benutzer, ich bin keiner von ihnen.
Es ist sicherlich 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, Snow Leopard zu wollen. Allerdings lerne ich gerade, damit zu leben, da andere Funktionen von Lion (insbesondere im Zusammenhang mit iCloud) es wert sind, die Nachteile in Kauf zu nehmen.
Die Frage bezieht sich auf Lion.
@GrahamPerrin, so war meine Antwort. Mein Punkt ist, dass dies eines von vielen Dingen ist, die Lion kaputt gemacht hat, und eine Lösung könnte darin bestehen, Lion nicht auszuführen.