PackageMaker script d'installation pour rxtx
-
25-09-2019 - |
Question
J'utilise PackageMaker pour créer un programme d'installation pour mon application. Lors de l'installation que je dois exécuter un script bash pour installer correctement rxtx, une bibliothèque JNI pour la communication du port série. Cette bibliothèque a besoin d'avoir le répertoire / var / lock en place avec l'utilisateur « root » et le groupe « uucp ». Le script d'installation doit également ajouter l'utilisateur actuel au groupe « uucp » pour la lib de pouvoir écrire dans / var / lock.
Maintenant, quand je lance mon programme d'installation d'application le script de pré-installation est exécuté en tant que root. Par conséquent, « whoami » retourne racine au lieu de l'utilisateur qui est en fait en cours d'exécution du programme d'installation. Le résultat est que rxtx n'est pas en mesure de créer des verrous dans / var / lock parce que l'utilisateur réel n'a pas été ajouté en tant que membre de « uucp ».
Comment puis-je obtenir l'utilisateur alors que mon script est exécuté par l'installateur. Ou est-il préférable de définir les autorisations pour / var / lock à un autre groupe peut-être? Toutes les suggestions sont les bienvenues!
#!/bin/sh curruser=`whoami` logger "Setting permissions for /var/lock for user $curruser!" if [ ! -d /var/lock ] then logger "Creating /var/lock!" sudo mkdir /var/lock fi sudo chgrp uucp /var/lock sudo chmod 775 /var/lock # MacOSX 10.5 and later use dscl if [ `sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l` = "0" ] then logger "Add user $curruser to /Groups/uucp!" sudo dscl . -append /Groups/uucp GroupMembership $curruser # to revert use: # sudo dscl . -delete /Groups/uucp GroupMembership $curruser else logger "User already member of group uucp!" fi
La solution
Au lieu de
curruser=`whoami`
Je suis maintenant en utilisant
curruser=`users`
qui me fait une liste des utilisateurs actuellement connectés wich est en partie le problème de fixation. questions restantes sont:
-
Dans le cas où il y a vraiment deux ou plusieurs utilisateurs connectés au Mac au moment de l'installation, mon script ne parviendra pas à ajouter les utilisateurs au groupe uucp.
-
Dans le cas où un autre utilisateur sur le Mac veut exécuter mon application, il échouera à nouveau parce que cet utilisateur n'a pas été ajouté au groupe uucp.
Peut-être que quelqu'un a obtenu un indice sur ces questions?