2010-04-09 6 views
0

J'utilise PackageMaker pour créer un programme d'installation pour mon application. Pendant l'installation, j'ai besoin d'exécuter un script bash pour installer correctement rxtx, une bibliothèque JNI pour la communication de port série. Cette bibliothèque doit 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 courant au groupe "uucp" pour que lib puisse écrire dans/var/lock. Maintenant, lorsque j'exécute mon programme d'installation de l'application, le script de préinstallation est exécuté en tant que root. Par conséquent, "whoami" renvoie la racine au lieu de l'utilisateur qui exécute réellement le programme d'installation. Le résultat est que rxtx n'est pas capable de créer des fichiers de verrouillage dans/var/lock car l'utilisateur réel n'a pas été ajouté en tant que membre à "uucp".Script d'installation de PackageMaker pour rxtx

Comment puis-je obtenir l'utilisateur pendant que mon script est exécuté par le programme d'installation? 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 

Répondre

0

Au lieu de

curruser=`whoami`

J'utilise maintenant

curruser=`users`

qui me fait une liste des utilisateurs actuellement connectés wich est en partie le problème de fixation. questions en suspens 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.

  • Si un autre utilisateur du Mac souhaite exécuter mon application, il échouera à nouveau car cet utilisateur n'a pas été ajouté au groupe uucp.

Peut-être que quelqu'un a un indice sur ces problèmes?

Questions connexes