2016-12-05 1 views
0

Neu bei diesem. Ich muss ein Postinstall-Skript verwenden, um eine Datei und einen Ordner in den Application Support-Ordner des Benutzers auf einem Mac zu verschieben. Für die Datei möchte ich nur verschieben, wenn die Datei noch nicht existiert. Ich möchte es nicht überschreiben, wenn es existiert. Hier ist mein Skript. Es läuft, aber nichts wird kopiert. Ich verwende die App "Packages", btw, und dieses Skript wird in die Registerkarte "Skript zur Nachinstallation" geladen.Unterstützung mit Postinstall-Skript auf Mac

#!/bin/sh 
if ! "/Library/Application Support/MyApp/MyApp user dict"; then 
mv "$1/Contents/Resources/MyApp user dict" "/Library/Application Support/MyApp/."; 
fi 

mv "$1/Contents/Resources/Spellcheck Dictionary" "/Library/Application Support/MyApp/."; 
exit 0 

Antwort

0

anwenderspezifische Aufgaben gehören in der Regel nicht in Installer-Skripte - denken Sie daran, dass es auf einem Rechner mehrere Benutzer sein können, und dass einige von ihnen möglicherweise nicht zugänglich sein, wenn Ihr Installationsprogramm ausgeführt wird. (Beispielsweise können Benutzer Home-Verzeichnisse verschlüsselt haben oder sie können erst nach der Ausführung des Installationsprogramms vorhanden sein.) Wenn Ihre Anwendung Dateien in das Home-Verzeichnis des Benutzers kopieren muss, sollte dies beim ersten Start wahrscheinlich geschehen.

Dennoch sehe ich einige spezifische Probleme mit diesem Skript:

  1. Ihr Skript bezieht sich auf $1 an mehreren Stellen. Sind Sie sicher, dass Ihr Skript ein Argument in der Befehlszeile übergeben hat?

  2. Die korrekte Syntax zu testen, ob eine Datei existiert nicht ist:

    if [ ! -f "/path/to/file" ] ; then … 
    

    Ihr Skript die eckigen Klammern und -f Zustand fehlt. (Einzelheiten man test sehen.)

  3. Unter der Annahme, dass $1 sollte der Pfad zum aktuellen Benutzer Home-Verzeichnis sein, müssen Sie die Argumente zu mv rückwärts. Das Ziel kommt zuletzt, nicht zuerst. (Die Syntax ist im Wesentlichen mv from to.)

+0

Okay, danke für die Hilfe. Anstatt also das Installationsprogramm zu verwenden, sollte ich meine S/W-Prüfung durchführen lassen, um zu sehen, ob die Datei und der Ordner vorhanden sind, und sie bei jedem Öffnen dorthin verschieben. Ich dachte, mit dem Installer-Skript könnte das vermeiden, aber ich denke, ich sollte nicht aus den Gründen, die Sie angegeben haben. Hilfreich, die Syntax zu kennen, danke. – user3499381

+0

Sollte wahrscheinlich die Datei kopieren, nicht verschieben. Sonst, ja. – duskwuff