PackageMaker为rxtx安装脚本

时间:2010-04-09 20:47:35

标签: macos packagemaker

我正在使用PackageMaker为我的应用程序创建安装程序。在安装过程中,我需要运行一个bash脚本来正确安装rxtx,这是一个用于串口通信的JNI库。该库需要将目录/ var / lock与用户“root”和组“uucp”放在一起。安装脚本还需要将当前用户添加到组“uucp”,以便lib能够写入/ var / lock。

现在,当我运行应用程序安装程序时,预安装脚本以root身份运行。因此,“whoami”返回root而不是实际运行安装程序的用户。结果是rxtx无法在/ var / lock中创建锁文件,因为实际用户没有作为成员添加到“uucp”。

如何在安装程序运行脚本时获取用户。或者将/ var / lock的权限设置为不同的组可能更好吗?欢迎任何建议!


#!/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

1 个答案:

答案 0 :(得分:0)

而不是

curruser=`whoami`

我现在正在使用

curruser=`users`

它为我提供了当前登录用户的列表,这部分解决了问题。剩下的问题是:

  • 如果在安装时确实有两个或更多用户登录到Mac,我的脚本将无法将用户添加到组uucp。

  • 如果Mac上的其他用户想要运行我的应用程序,它将再次失败,因为该用户未添加到组uucp。

也许有人对这些问题有所暗示?