Weiss mir im Moment keinen Rat mehr 
Ich habe meine Applikation nach OS X portiert (arbeite aber nicht mit XCode). Das Programm benutzt eine unter Unix entwickelte Bibliothek (ROOT, vielleicht kennt das jemand).
Um ROOT nutzen zu können muss eine Umgebungsvariable (ROOTSYS) gesetzt sein, die den Pfad zur Bibliothek enthält. Im Moment liegt die Bibliothek im Bundle und ich setze ROOTSYS über einen LSEnvironment-Eintrag in der Info.plist. Das geht eigentlich nicht, weil der Pfad statisch ist und beim Verschieben des Bundles nicht mehr auf die richtige Stelle zeigt. Um das in den Griff zu kriegen, habe ich mein eigentliches Bundle in ein anderes Bundle eingepflanzt. Im äusseren Bundle wird ein Skript ausgeführt, das den ROOTSYS-Eintrag in der Info.plist anpasst und dann die eigentliche Applikation mit 'open' startet. Das funktioniert. So weit so gut also, oder auch nicht.
Der Ansatz mit dem Skript war ja schlau ausgedacht, aber jetzt sehe ich doch zwei Probleme:
1. Das mit dem Anpassen der Info.plist kann gründlich schiefgehen wenn keine Schreibrechte da sind, bspw. wenn die Applikation von CD gestaret werden soll.
2. Ich möchte jetzt Drag&Drop auf das Applikations-Ikon unterstützen. Das funktioniert aber nicht, weil da im Bundle ein Skript sitzt. OS X erwartet aber eine Aplikation, die den Apple-Event "OpenDoc" verarbeiten kann. Hmmmh.
Gut. Ich dachte mir, Punkt 2. kann ich lösen indem ich das Skript durch ein Programm ersetze, das die Aufgaben des Skripts erledigt und zusätzlich OpenDoc-Events entgegennimmt. Dann kann das Programm das Hauptprogramm mit LSLaunchFSRefSpec starten. Drag&Drop funktioniert jetzt, die Sache hat aber auch wieder einen Haken: sobald ich per Programm den LSEnvironment-Eintrag in der Info.plist-Datei verändere, startet das Hauptprogramm nicht mehr. Das ist doch merkwürdig, weil die gleiche Modifikation über ein Shell-Skript funktioniert!?
Eine mögliche Alternative wäre vielleicht, die Bibliothek fest unter /Library/Application Support zu installieren. Das man dahin ohne weiteres schreiben kann, habe ich eben erst gelesen. Ich könnte dann beim ersten Start des Programms die Bibliothek dahin verschieben. Damit wären wohl beide Probleme gelöst. So richtig gefällt mir das aber auch nicht, weil dann beim "Deinstallieren" des Programms die Bibliothek übrigbleibt.
Kann mir jemand weiterhelfen?

Ich habe meine Applikation nach OS X portiert (arbeite aber nicht mit XCode). Das Programm benutzt eine unter Unix entwickelte Bibliothek (ROOT, vielleicht kennt das jemand).
Um ROOT nutzen zu können muss eine Umgebungsvariable (ROOTSYS) gesetzt sein, die den Pfad zur Bibliothek enthält. Im Moment liegt die Bibliothek im Bundle und ich setze ROOTSYS über einen LSEnvironment-Eintrag in der Info.plist. Das geht eigentlich nicht, weil der Pfad statisch ist und beim Verschieben des Bundles nicht mehr auf die richtige Stelle zeigt. Um das in den Griff zu kriegen, habe ich mein eigentliches Bundle in ein anderes Bundle eingepflanzt. Im äusseren Bundle wird ein Skript ausgeführt, das den ROOTSYS-Eintrag in der Info.plist anpasst und dann die eigentliche Applikation mit 'open' startet. Das funktioniert. So weit so gut also, oder auch nicht.
Der Ansatz mit dem Skript war ja schlau ausgedacht, aber jetzt sehe ich doch zwei Probleme:
1. Das mit dem Anpassen der Info.plist kann gründlich schiefgehen wenn keine Schreibrechte da sind, bspw. wenn die Applikation von CD gestaret werden soll.
2. Ich möchte jetzt Drag&Drop auf das Applikations-Ikon unterstützen. Das funktioniert aber nicht, weil da im Bundle ein Skript sitzt. OS X erwartet aber eine Aplikation, die den Apple-Event "OpenDoc" verarbeiten kann. Hmmmh.
Gut. Ich dachte mir, Punkt 2. kann ich lösen indem ich das Skript durch ein Programm ersetze, das die Aufgaben des Skripts erledigt und zusätzlich OpenDoc-Events entgegennimmt. Dann kann das Programm das Hauptprogramm mit LSLaunchFSRefSpec starten. Drag&Drop funktioniert jetzt, die Sache hat aber auch wieder einen Haken: sobald ich per Programm den LSEnvironment-Eintrag in der Info.plist-Datei verändere, startet das Hauptprogramm nicht mehr. Das ist doch merkwürdig, weil die gleiche Modifikation über ein Shell-Skript funktioniert!?
Eine mögliche Alternative wäre vielleicht, die Bibliothek fest unter /Library/Application Support zu installieren. Das man dahin ohne weiteres schreiben kann, habe ich eben erst gelesen. Ich könnte dann beim ersten Start des Programms die Bibliothek dahin verschieben. Damit wären wohl beide Probleme gelöst. So richtig gefällt mir das aber auch nicht, weil dann beim "Deinstallieren" des Programms die Bibliothek übrigbleibt.
Kann mir jemand weiterhelfen?
