Ich habe versucht, ein paar Tutorials zu befolgen, aber ich bekomme Folgendes:
Wie kann ich das beheben? Ich habe eine info.plist hinzugefügt (ich habe gerade die Datei einer anderen App kopiert und eingefügt und ein paar Dinge geändert.)
Außerdem habe ich chmod +x myApp
das Skript ausführbar gemacht.
PS Ich benutze El Capitan
Nun, es ist Jahre her, dass ich diesen einfachen Trick verwende, um Bash-Skripte in der Anwendung zu haben (und verstehe wirklich nicht, warum alle Leute so komplizierte Lösungen wie das Erstellen von "Contents" -Ordnern, info.plist oder die Verwendung von Automator oder Platypus oder so versuchen.. . ????).
Das ist alles ! Es funktioniert auf Mac OS X seit Snow Leopard bis Mavericks. Wenn jemand neuere Betriebssystemversionen ausprobieren und mir sagen kann.
Hinweis: Das Skript muss mindestens 28 Bytes groß sein, sonst wird es nicht ausgeführt. Es kann mit Leerzeilen aufgefüllt werden, um eine Mindestgröße zu erreichen. Außerdem muss die erste Zeile des Skripts ein Kram sein; zB #!/bin/bash
oder #!/bin/perl
.
[AKTUALISIEREN]
Als Antwort auf den Kommentar von @DenisHowe können Sie bei Verwendung dieses Tricks diese Zeilen am Anfang des Skripts hinzufügen, wenn Sie den Pfad der aktuellen Ausführung haben möchten:
abspath ()
{
case "${1}" in
[./]*)
local ABSPATH="$(cd ${1%/*}; pwd)/"
echo "${ABSPATH/\/\///}"
;;
*)
echo "${PWD}/"
;;
esac
}
CURRENTPATH=`abspath ${0}`
PATH=$PATH:$CURRENTPATH
#!/bin/bash
sudo
zum Ausführen des Skripts erforderlich ist? Was kann ich tun, damit das Skript den Benutzer nach dem Passwort fragt?YourApplication.app
cerated in sein muss/Applications
--args
funktioniert. aber z. B. das Öffnen eines Dokuments mit der erstellten Anwendung gibt einen Fehler im Terminalfenster: Unknown command: \Xca\Xfe\Xba\Xbe
(Ich bekomme diesen Fehler auch, wenn ich nur den Dateispeicherort an den Befehl anhänge)abspath ${0}
PATH=$PATH:$CURRENTPATH:pkgbuild: error: Path “<path x>/TestApplication.app" is not a valid bundle component (using destination path “<path x>”)
Es ist nicht zu wichtig, ich möchte nur ein minimales Paket, um Dinge damit zu testen.Die derzeit akzeptierte Antwort funktioniert bei mir nicht ganz. Ich erhalte das kleine kaputte Anwendungssymbol.
Folgendes funktioniert bei mir unter OSX 10.15.7 (Catalina). YourApplication
Sie können in allen folgenden Anweisungen den Namen ändern , den Sie wirklich möchten.
mkdir ein Verzeichnis mit der .app
Erweiterung im /Applications
Ordner mit einem Contents
und dann MacOS
Unterverzeichnissen.
mkdir -p /Applications/YourApplication.app/Contents/MacOS
Verschieben Sie Ihr Skript in dieses Verzeichnis und benennen Sie es genauso wie den obersten Anwendungsordner, jedoch ohne die .app
Erweiterung und ohne die Shell-Skripterweiterung:
mv yourscript.sh /Applications/YourApplication.app/Contents/MacOS/YourApplication
Stellen Sie sicher, dass Ihr Skript ausführbar ist:
chmod +x /Applications/YourApplication.app/Contents/MacOS/YourApplication
Hier ist eine Beispielanwendung zum Ausprobieren:
#!/bin/sh
result=`osascript -e 'display dialog "Should I beep?" buttons {"Yes", "No"}'`
if [[ "$result" = "button returned:Yes" ]]; then
osascript -e 'beep'
fi
Ihre Anwendung sollte jetzt bereit sein und das Skript sollte ausgeführt werden, wenn Sie darauf doppelklicken. Beachten Sie unbedingt, dass Sie beim Umbenennen der Anwendung auch das zugrunde liegende Skript umbenennen müssen.
Dass Ihre Anwendung von LaunchPad gesehen wurde, war schwieriger herauszufinden. Folgendes schien zu funktionieren. Sie müssen der /Applications/YourApplication.app/Contents/Info.plist
Datei etwas wie das Folgende hinzufügen. Möglicherweise müssen Sie es auch in eine DMG-Datei und zurück zu Anwendungen für LaunchPad verschieben, um es zu bemerken. Siehe: https://stackoverflow.com/a/71342335/179850
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>My App</string>
<key>CFBundleGetInfoString</key>
<string>My App 1.0</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
</dict>
</plist>
Um Ihrer neuen Anwendung ein Symbol hinzuzufügen, müssen Sie Folgendes tun:
Suchen oder erstellen Sie ein PNG, das Ihr Symbol sein soll.
Öffnen Sie das Bild in der Vorschau-Anwendung – andere Grafik-Apps funktionieren möglicherweise auch.
Drücken Sie Befehl-a, um alles auszuwählen, und dann Befehl-c, um es in die Zwischenablage zu kopieren.
Wählen Sie Ihre Anwendung im Finder aus und drücken Sie Befehlstaste-i, um das Fenster „Informationen“ aufzurufen.
Klicken Sie auf das Symbol in der oberen linken Ecke des Infofensters, um es auszuwählen:
Fügen Sie das Bild aus der Zwischenablage ein, das das Symbol ändern soll.
Sie können auch das Get Info-Fenster in einer anderen Anwendung öffnen, das Symbol auswählen und es kopieren, um es in Ihre neue Anwendung einzufügen. Nachdem Sie ein beliebiges Symbol zugewiesen haben, .app
sollten Sie in Ihrem Verzeichnis einen Dateinamen sehen, der mit beginnt Icon
.
Wenn es sich um ein einfaches Shell-Skript handelt, müssen Sie es nicht in ein Anwendungspaket packen; Sie können auf das Skript selbst doppelklicken. Sie haben jedoch nicht die Möglichkeit, ein benutzerdefiniertes Symbol oder ähnliches zu haben.
Ich denke, es gibt ein paar Helfer da draußen, die einfache Skripte umschließen können, aber das einzige, mit dem ich Erfahrung habe, ist Platypus , mit dem Sie Shell-/Python-/Perl-/Ruby-/etc-Skripte wie normale Anwendungen mit Symbolen ausführen können, ich/ O Umleitungen usw.
Platypus unterscheidet sich hier darin, dass Sie STDIN / STDOUT über einige verschiedene Mechanismen sowie über die Interaktivität der Menüleiste abrufen können. Sie erhalten also ein Fenster, in dem Sie mit dem gerade ausgeführten Skript interagieren können.
Platypus scheint von der Befehlszeile aus nicht verwendbar zu sein (wo sich wahrscheinlich Ihr Shell-Skript befindet).
Dieses Skript https://github.com/andrewp-as-is/mac-appify , das mit pip für Python-Benutzer ( ) installiert werden kann, scheint die Schritte in der obigen Antwortpip install mac-appify
auszuführen .
Es kann so nützlich sein
pip install mac-appify
appify script.sh /Applications/$NAME.app
kein Hang
Flare-Katze
#!/bin/bash ; say "Hi" ; exit 0
(mit jedem der Befehle in verschiedenen Zeilen und ohne Semikolon) enthält.Benutzer3439894
Flare-Katze
Flare-Katze
Benutzer3439894
Flare-Katze
Benutzer3439894
Flare-Katze
Flare-Katze