2010-02-09 7 views
9

Ich möchte eine Hilfsanwendung erstellen, die keine GUI hat, aber Zugriff auf ein App-Bundle hat. Ich habe mir die Xcode-Befehlszeilen-Projektvorlagen angesehen, die jedoch nur ausführbare Dateien generieren. Wie kann ich etwas wie ein Befehlszeilentool erstellen, das kein Anwendungsmenü bietet, aber Zugriff auf Bündelressourcen in einer .app bietet? Denke ich darüber falsch?GUI-less App Bundle

Danke.

Antwort

11

Ich möchte eine Hilfsanwendung erstellen, die keine GUI hat, aber hat ... ein App-Bundle.

, dass ein Agent genannt wird, und Sie ein, indem Sie einen regulären Antrag und Einstellung seiner LSUIElement Schlüssel für die Zeichenfolge „1“.

16

Peter Antwort (Verwendung LSUIElement) ist wahrscheinlich das, was Sie suchen. Gelegentlich wollte ich eine Befehlszeilenanwendung erstellen, die auch ein App-Bundle enthält. Im Falle des anderen über das gleiche Szenario kommen, hier ist was ich gefunden habe ...

Die App Bundle nicht ausführbar ist. Die wahre ausführbare Datei ist darin begraben: MyApp.app/Contents/MacOS/MyApp ist die eigentliche Mach-O ausführbare Datei für eine App namens MyApp. Die Standard-Xcode-Vorlagen verknüpfen Anwendungen mit AppKit.framework und verfügen über ein main.m, das die main()-Funktion für die ausführbare Datei definiert, die eine NSApplication-Instanz startet. Sie können jede ausführbare Datei jedoch in ein App-Bundle einfügen, einschließlich einer reinen Konsolenanwendung. Ersetzen Sie einfach die main() Funktion in main.m in der Anwendungsvorlage mit Ihrer Konsole apps main() Funktion und entfernen Sie AppKit.framework von den verknüpften Frameworks der App.

Wenn Sie möchten, können Sie main.m durch eine main.c ersetzen, die eine Hauptfunktion deklariert, wenn Sie Objective-C vollständig vermeiden möchten (obwohl es in main.m nicht unbedingt Objective-C-spezifisch gibt) Inhalt der main() Funktion).

Um Ihre Anwendung über die Konsole auszuführen, müssen Sie die tatsächliche ausführbare Datei angeben, nicht das App-Bundle. Sie müssten also in der Befehlszeile MyApp.app/Contents/MacOS/MyApp eingeben. Wenn ich App-Bundles für Konsolen-Apps verwendet habe (um verknüpfte Frameworks, Ressourcen usw. bereitzustellen), erstelle ich oft einen Symlink zur ausführbaren Datei und setze den Symlink währenddessen in/usr/local/bin (oder irgendwo anders auf dem Pfad) Installation oder erster Lauf.

+1

Alles wahr genug, aber Peters Antwort könnte näher an dem sein, was der Entwickler erreichen möchte. – Ken

+1

@Ken: Einverstanden. Der Fragesteller sucht wahrscheinlich nach einer LSUIElement-App. Ich habe die Gelegenheit gefunden, eine reine Konsolen-App zu verwenden, die jedoch ein App-Paket verwendet. Nur für den Fall, dass es für andere nützlich ist, lasse ich diese Antwort. –

+0

Das war auch eine hilfreiche Antwort, Barry, also danke. Der LSUIElement-Eintrag in Info.plist macht es jedoch sehr einfach. Danke noch einmal. –

Verwandte Themen