• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Einzelnen Eintrag in einer plist schützen bzw. automatisch umschreiben lassen

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Hi ihr lustigen Coder,
ich teste die Beta-Version von Skype für OS X 10.8.2, und da gibt es einen Bug der die Einstellung für das Benachrichtigungssystem immer wieder zurücksetzt. Es ist aber nicht das System allein; auf meinem MacBook funktioniert es wie es soll, nur auf meinem iMac setzt sich die Einstellung nach jedem Neustart des Computers zurück.

Auch eine Änderung der plist-Datei ändert nichts daran, naja, war ja auch nicht anders zu erwarten; die Änderung der Einstellung innerhalb der App ist ja auch nichts anderes als was ich tue wenn ich es manuell ändere. Daher lautet meine Frage, gibt es irgendeine Möglichkeit, einen bestimmten Eintrag in der plist-Datei zu schreibschützen?

Ich kann leider nicht die ganze Datei schützen, da ich 1. ja evtl. hin und wieder andere Einstellungen ändern will und das ja echt sehr umständlich wäre und 2. Skype irgendwas in der plist bei jedem Start ändert (was genau weiß ich nicht, hab ich nicht überprüft, aber ich will keine von Skype regelmäßig durchgeführte automatische Handlung verhindern).

Und da ich ziemlich sicher bin, dass es so eine Möglichkeit nicht gibt, frage ich auch gleich: Gibt es ein Script, das automatisch einen bestimmten Eintrag in einer plist ändert bzw. auf einem bestimmten Stand hält? Eigentlich müsste das nur ein Script sein, das einen bestimmten Teil einer textdatei betrifft, denn eine plist ist ja im Grunde nichts anderes und kann auch immer so behandelt und benutzt werden.

Und da ich auch ziemlich sicher bin, dass es sowas noch nicht gibt (wozu auch?) hänge ich gleich noch hinten dran: Gibt es hier einen netten Menschen, der mir ein entsprechendes Script coden könnte oder zumindest sagen, ob es möglich ist?

Ich will mir wirklich keinen Frauennamen geben um Hilfe zu bekommen also hoffe ich auf so viel Hilfe wie auch so möglich ;) Ich würds selber machen, aber meine Grundkenntnisse von zwei Semestern C++ reichen nicht wirklich für sowas aus. Ich kann Rechenoperationen erstellen und mit einem bestimmten Programm mit gegebenen Funktionen Bilderreihen zeichnen lassen, aber nicht auf Dateien oder deren Inhalte zugreifen, schon gar nicht ausführbar... Ich hoffe ich hab irgendwann genug Kenntnisse um sowas selbst zu machen und wenn es soweit ist helfe ich sicher auch jemanden der Probleme hat die ich schnell lösen kann (auf mehr hoffe ich auch gar nicht) - und wenn mir hier jemand hilft, so bin ich mir sicher, dass es mir auch weiterhilft ein bisschen was zu lernen.

Vielen Dank im Voraus also!
Jannis
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.571
Einen bestimmten Eintrag schreibzuschützen, ist nicht möglich. Um einzelne Einstellungen automatisch zurückzustellen oder zu sperren, verwendet OS X einen anderen Mechanismus, der sich "Managed Preferences" nennt. Damit kann man das bei Bedarf auch ferngesteuert, für ein ganzes Netzwerk von Computern machen. Das führt hier bei diesem Problem aber vermutlich etwas zu weit.

Direkt eine Preferences-Datei zu ändern, ist normalerweise keine gute Idee. Da jedes Programm einen eigenen Cache für die Einstellungen im RAM hat, wird eine solche Änderung möglicherweise gar nicht beachtet oder nach kurzer Zeit überschrieben. Man braucht aber nur den "offiziellen" Befehl "defaults" aufzurufen, um eine bestimmte Einstellung von einem Skript aus anzupassen. Wenn man das Skript in die Tabelle der Anmeldeobjekte einträgt, kann man es dann auch immer automatisch aufrufen lassen.

Ein Aufruf eines Skripts nach dem Muster

#!/bin/bash
/usr/bin/defaults write com.skype.skype <einstellung> <neuerwert>

sollte also reichen, um die gewünschte Wirkung zu erzielen.
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Ich weiß leider nichtmal wie man ein Skript schreibt geschweige denn ausführbar macht... Kannst du mir da ein wenig mehr Hilfestellung geben, wenn es nicht zuviel Mühe macht? :/
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Warum meldest Du das nicht einfach in Jira?

Alex
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Woher hast Du eine Beta von Skype wenn Du Jira nicht kennst? *verwirrt*

Alex
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Oh, Du meinst Public Beta? Ich melde mich später

Alex
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Von deren Homepage, also ja, Public Beta ;) Ich hab denen auch schon ne Mail geschickt wegen dem Problem aber keine Rückmeldung bekommen, ist schon etwas her
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.571
Wie sieht denn der Eintrag in der plist aus, denn Du anpassen willst?
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
In einem Texteditor sieht der Eintrag so aus:
Code:
    <key>SKUseGrowlInsteadOfDefault</key>
    <integer>0</integer>
Diesen Zustand will ich nicht haben, sondern folgenden:
Code:
    <key>SKUseGrowlInsteadOfDefault</key>
    <integer>1</integer>

Der Integer soll also auf 1 sein, damit Growl benutzt wird anstatt die eingebaute Benachrichtigung. Nach einem Neustart des iMacs springt der Wert automatisch auf 0 zurück. Ich habe aber tatsächlich noch nicht ausprobiert, ob das auch bei anderen Einträgen/Werten so ist (Würde zumindest Sinn machen), das kann ich mal testen wenn ich wieder zu Hause bin.

EDIT: Interessanter Nachtrag: Wenn ich Growl in den Einstellungen einstelle, verschwindet der Eintrag komplett aus der plist. Erst wenn ich wieder die eingebaute Benachrichtigungsmethode auswähle, taucht er wieder auf. Wenn ich die eingebaute auswähle, Skype beende, den Wert manuell auf 1 ändere und Skype neu starte ist in den Einstellungen "Growl" eingestellt und der Eintrag bleibt wie er ist. Ob das auch bleibt wenn ich jetzt den Computer neustarte muss ich testen wenn ich zu Hause bin, ich teste es grade am MacBook und da habe ich das Problem ja nicht. Aber dass der Eintrag verschwindet wenn man Growl auswählt ist schonmal sehr interessant und könnte ja sogar der Ursprung des Problems sein.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Kannst Du mir mal die Version der Public Beta geben, die Du hast (Vergesse immer, dass es die auch gibt …)? Ich prüfe das mal nach

Gruss

Alex
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.571
Ich denke, die Lösung des eigentlichen Problems wäre sinnvoller, als da mit einem Skript herumzubasteln, aber der Vollständigkeit halber hier die Vorgehensweise:

1) Starte TextEdit und stelle es auf "Format > In reinen Text umwandeln".
2) Füge per Kopieren/Einfügen den folgenden Text in das TextEdit-Fenster ein:

#!/bin/bash
/usr/bin/defaults write com.skype.skype SKUseGrowlInsteadOfDefault -int 1

3) Erstelle einen Zielordner für das Skript (nicht unbedingt nötig, erhöht aber die Ordnung), z.B. mit dem Namen "bin" in Deinem Privatordner.
4) Speichere das Skript z.B. unter dem Namen "SkypeDefaults.sh" in diesem Ordner.
5) Markiere das Skript in einem Terminal-Fenster wie folgt als ausführbares Programm:

chmod a+x ~/bin/SkypeDefaults.sh

6) Ziehe das Skriptsymbol im Ordner "bin" vom Finder in die Tabelle unter "Systemeinstellungen > Benutzer & Gruppen > Anmeldeobjekte".
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Naja, das Problem zu lösen liegt ja nicht bei mir, oder? ;) Ich wüsste nicht welcher Fehler meinerseits oder an meinem Computer den Fehler verursachen könnte.
Danke für die Anleitung. Hab es in den Dokumente-Ordner gepackt (Und natürlich den Pfad im Terminal-Befehl entsprechend angepasst). Und das funktioniert jetzt wie es soll? Das wär ja großartig. Wird gleich getestet wenn ich wieder zu Hause bin, dankeschön!
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Ich hab grad rausgefunden, dass auf der Eintrag auf meinem iMac ein Boolean (statt wie aufm MacBook ein Integer) ist. Wie soll ich das Skript jetzt anpassen?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

Naja, das Problem zu lösen liegt ja nicht bei mir, oder?
Ein klares Jein! :)

Warum werden Beta Versionen verteilt?
This is a Beta release and we want your help in identifying issues and providing us with feedback by visiting the Skype Support Network or on our public issue tracker.
-------
Und das funktioniert jetzt wie es soll?
Das hängt von deiner Konfiguration ab. Hast du auch Skype in deinen Anmelde-Objekten, so wird es nur funktionieren, wenn das Skript vor dem Start von Skype ausgeführt wird.... Und falls Skype vor Growl starten sollte, so wird die Plist sowieso wieder überschrieben...

Mich wundert es schon ein wenig, dass du augenscheinlich nicht an einer eigentlichen Lösung deines Problems interessiert, bzw. eventuell sogar der Ansicht bist, dass eine solche gar nicht existiert. Dabei hast du doch schon einige Erkenntnisse gesammelt:


  • Ein Plist-Eintrag mit "boolean 0" ist sehr ungewöhnlich. Ich kann nicht ernsthaft programmieren, doch meine ich mich zu erinnern, dass solch ein Wert zwar praktisch "lesbar" wäre, jedoch gegen die Programming Guidelines verstößt. Ein boolscher Wert sollte YES/NO oder TRUE/FALSE sein. Da kann Skype doch eigentlich unmöglich patzen.


  • Es gibt in der Skype-Plist eigentlich kein Element mit dem Wert "SKUseGrowlInsteadOfDefault -int 1" (auch wenn er, in die Plist geschrieben, natürlich "gelesen" würde). Ist in den Einstellungen die Standard-Methode "Growl" gewählt, so existiert kein Plist-Element. Andernfalls wird "SKUseGrowlInsteadOfDefault -int 0" geschrieben.

Ich persönlich würde als erste Tat den Plist-Eintrag löschen und schauen, was dann passiert.
defaults delete com.skype.skype SKUseGrowlInsteadOfDefault
Falls dann noch nötig, könnte man die Plist aus dem Preferences Ordner entfernen und schauen, wie es sich mit einer frisch angelegten Plist verhält.
Eine Standardprozedur wäre auch, zu überprüfen, wie es sich auf deinem iMac bei einem anderen User-Account verhält.

Gruß
 

The_Deathmaster

Zuccalmaglios Renette
Registriert
09.01.10
Beiträge
261
Klar bin ich an der Lösung interessiert, und ich habe eine Fehlerbeschreibung ja auch schon gemailt... Aber es stimmt, die gesammelten Erkenntnisse könnte ich tatsächlich weiterleiten.
Also das Skript funktioniert jetzt, nach nem Neustart ist immer noch Growl eingestellt. Danke dafür :)
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Ok, da habe ich deine Aussage wohl falsch interpretiert :-D

Gruß