2011-01-12 60 views
0

我正在運行一個運行安裝程序(由ViseX)並通過列表在安裝程序中選擇不同項目的shell腳本。 安裝程序需要管理員權限才能正常運行,但我不想使用sudo。 目前安裝應用程序無法正常工作,因爲它不能以管理員權限運行。使用管理員特權從shell腳本調用applescript

如何以管理員權限調用applescript,或告訴applescript中的安裝應用程序以admin身份運行?

下面是我使用AppleScript的:

osascript <<-END 
    tell application "$1" 
    with timeout of 8 * 3600 seconds 
    activate 
    Select "$2" 
    DoInstall 
    end timeout 
end tell 
END 

+0

你的問題是什麼?它不起作用嗎?如果是這樣,它究竟是如何失敗? – 2011-01-12 08:10:29

+0

我改寫了我的問題。 – Nir 2011-01-12 08:58:01

回答

0

您可以從一個AppleScript作爲管理員身份運行shell腳本:看this technote。 所以,如果你創建這個applescript作爲一個單獨的腳本,你可以使用它。醜,但應該工作。

+0

所以你說的是從我的shell腳本我應該運行一個運行shell腳本的applescript,使其能夠運行另一個applescript作爲管理員? 的確很醜。 – Nir 2011-01-12 09:19:28

0

這是一個可以做到這一點的applescript。我會讓你把它變成一個shell命令。以下腳本使用TextEdit打開計算機上的主機文件。您會注意到需要管理員權限才能打開該文件,因此它是一個很好的例子。請注意,我可以做這個特殊的任務更容易,但我做這種方式向你展示如何啓動與管理員權限的應用程序,然後針對該應用程序,以便您可以執行其他AppleScript命令......

set theFile to "/private/etc/hosts" 

-- launch the application with admin privileges and get the pid of it 
set thePID to (do shell script "/Applications/TextEdit.app/Contents/MacOS/TextEdit > /dev/null 2>&1 & echo $!" with administrator privileges) as integer 

-- get the bundle identifier of that pid so we can do something with the application 
delay 0.2 
tell application "System Events" 
    set theProcess to first process whose unix id is thePID 
    set bi to bundle identifier of theProcess 
end tell 

-- do something with it eg. open the hosts file 
set theFileAlias to (POSIX file theFile) as alias 
tell application id bi 
    activate 
    open theFileAlias 
end tell 
0
do shell script "[path/to/app] [param]" user name "[admin name]" password "[password]" with administrator privileges