Applescript zum Ausblenden einer App / eines Alias

517
krees

Ich versuche, eine Anwendung mit Applescript in Automator zu schreiben, die auf einem Mac Air ausgeführt wird, auf dem Sierra ausgeführt wird. Für das Konto, das die Anwendung verwendet, sind die Kindersicherungen festgelegt, aber ich muss ihnen Zugriff auf das Terminal gewähren, um die Anwendung auszuführen. Letztendlich möchten wir nicht, dass die Benutzer des Kontos Zugriff auf das Terminal haben. Ich versuche also, einen Weg zu finden, den Alias ​​zu löschen oder zu verbergen.

Ich kann den Alias ​​mithilfe des unten stehenden Skripts löschen, aber wenn sie versuchen, die Anwendung erneut zu verwenden, funktioniert sie nicht, da Terminal nicht mehr verfügbar ist:

tell application "System Events" to delete alias "/Path/to/Library/Managed Items/My Applications/Terminal" end tell 

Wenn ich den Alias ​​verbergen wollte, wie unten gezeigt, bekomme ich eine Fehlermeldung, dass der Prozess nicht auf false gesetzt werden kann:

tell application "System Events"  set visible of application process "/Path/to/Library/Managed Items/My Applications/Terminal" to false end tell 

Nicht sicher, ob ich Terminal am Anfang des Skripts laden und dann am Ende löschen kann, ODER wenn der Alias ​​ausgeblendet werden kann.

Anregungen wären sehr dankbar !!

Hier ist mein gesamter Code:

on run   tell application "System Events" key code 21 using option down end tell --used to deactivate trackpad  tell application "Terminal" activate tell application "Terminal" do script "su <admin account>" --not root delay 2 tell application "System Events" keystroke "<password>" & return delay 2 keystroke "sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/" & return --used to disable keyboard delay 2 keystroke "<password>" & return delay 2 keystroke "exit" & return delay 2 tell application "Terminal" do script with command "rm -R release.zip; rm -R release; wget https://URL/for/webserver/release.zip; unzip release.zip; rm -rf __MACOSX" in window 1 --deletes old configuration .zip file and folder; downloads new configuration files; unzips new configuration files delay 15 end tell tell application "Terminal" do script with command "su <admin account>" in window 1 delay 2 tell application "System Events" keystroke "<password>" & return delay 2 keystroke "sudo kextload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/" & return --reloads keyboard delay 2 keystroke "exit" & return delay 2 end tell tell application "Terminal" do script with command "release/pc-release-mac.command --config config.properties; exit" in window 1 --Launches print release software end tell end tell end tell delay 2 tell application "Terminal" quit end tell end tell end tell end tell  tell application "System Events" key code 21 using option down end tell --reactivates trackpad  return input end run 

Jede Verbesserung wäre sehr dankbar! Ich bin ein Neuling im Drehbuch, also habe ich das meiste durcheinander gebracht.

0
Dies scheint ein [XY-Problem] zu sein (https://meta.stackexchange.com/q/66377/335435). Verwenden Sie für diese App, die Sie ausführen, nur Terminal, um sie zu starten, oder benötigen Sie tatsächlich ein Terminal, um damit zu interagieren? Und müssen Sie verhindern, dass Benutzer Terminal oder die * Shell * (z. B. Bash) verwenden? 8bittree vor 6 Jahren 0
Momentan habe ich es mit Terminal zu tun, aber ich bin nicht dagegen, bash zu laufen. Ich bin einfach nicht damit vertraut. krees vor 6 Jahren 0

2 Antworten auf die Frage

1
wch1zpink

Wenn Sie den Befehl "do Shell script" in einem AppleScript verwenden, wird der Befehl ausgeführt, ohne dass terminal.app gestartet wird. Hier ist ein "do shell script" -ApfelScript-Beispiel, das Sie ausprobieren können. Beachten Sie, dass das Terminal niemals gestartet wird.

display dialog (do shell script "curl ifconfig.co") with icon 2 buttons "OK" default button 1 with title "Your Current IP Address Is.." giving up after 5 
Hintergrund zum Projekt. Ich versuche, eine Druckfreigabestation auf einem Mac Air zu installieren, der in meinem Schulbezirk verwendet werden soll. Ich möchte nicht, dass die Endbenutzer die Ausführung des Skripts stoppen können. Daher habe ich die Tastatur und das Trackpad deaktiviert, während das Skript ausgeführt wird. Ich verwende wget, um die Konfigurationsdateien von unserem Webserver herunterzuladen, da ich curl nicht richtig zum Laufen bringen konnte. Die heruntergeladene Datei konnte nicht korrekt entpackt werden. Ich habe das gesamte Skript am Ende meiner ursprünglichen Frage gepostet. krees vor 6 Jahren 0
1
krees

Nachdem ich die Kommentare von 8bittree und wch1zpink gelesen hatte, entschied ich mich, Applescript zum Ausführen von Shell-Skripts zu verwenden. Ich konnte alles, was ich brauchte, in einem einfachen, einfachen Skript abrufen, das kein Terminal erfordert. Vor dem Versuch, Shell-Skript zu verwenden, bestand das Problem darin, dass das Standard-Skripting im Fenster belassen wurde. Nachdem ich es entfernt hatte, hat der folgende Code genau das gemacht, was ich brauchte:

do shell script "rm -R /Users/<account>/release.zip; rm -R /Users/<account>/release; curl -L https://URL/to/webserver/release.zip -o /Users/<account>/release.zip; unzip -o /Users/<account>/release.zip -d /Users/<account>; rm -rf /Users/<account>/__MACOSX; /Users/<account>/release/pc-release-mac.command --config config.properties" 

Benötigt kein Terminal; erfordert nicht das Deaktivieren der Tastatur; Das Trackpad muss nicht deaktiviert werden. erfordert nicht, dass Kennwörter fest codiert sind.

Danke euch beiden, dass ihr mir eine Richtung gegeben habt !!!

Wenn Sie festgestellt haben, dass die Antworten der Menschen auf Ihre Fragen nützlich oder hilfreich waren, danken Sie ihnen einfach, indem Sie ihre Antworten auf den neuesten Stand bringen. wch1zpink vor 6 Jahren 0