The tell statement has always given annoyances to Applescript programmers. You usually want to locate an App by Creator, and to have compact, fast and reliable code across various machines and OSes. I used this pathToCREA handler for years in many scripts, in order to satisfy these needs.
OS version: Classic
on pathToCREA(theCrea) -- use as "tell application pathToCREA("Crea")"
if length of theCrea is not 4 then error "•Can't get application file id \"" & theCrea & "\" into a item." number -1700 -- Mimics Finder behaviour
tell application "Finder" to set theProcess to {} & (every process whose creator type is (theCrea as type class)) -- old versions of scriptable Finder don't like "first process", while "every process" is OK
tell application "Finder"
if theProcess is {} then
if exists application file id theCrea then
return application file id theCrea as alias as string -- find the Application full path based on its Creator Code. Double coercion necessary for getting the correct Disk for Desktop items
else
error "•Can't get application file id \"" & theCrea & "\"." number -1728 -- Mimics Finder behaviour
end if
else -- process running
return (file of first item of theProcess) as alias as string
end if
end tell
end pathToCREA
-- examples
-- single compact statement
tell application pathToCREA("MSIE") to «event WWW!OURL» "http://www.apple.com/"
-- deferred tell
set Internet_Explorer to pathToCREA("MSIE")
-- some preprocessing here
tell application Internet_Explorer
-- I.E. specific statements
end tell