Desktop Alias with Applescript
Ken Ray
kray at sonsothunder.com
Sun Dec 11 12:56:22 CST 2005
On 12/11/05 12:18 PM, "Shari" <shari at gypsyware.com> wrote:
> I did experiment with creating the alias with a shell() command. Not
> being at all familiar with that, I diddled with it. I did not find
> much good info on the net, but worked with what little I found. I am
> totally unfamiliar with Unix commands, and using shell() inside of
> Metacard. I'd find references to the ln command, but searched for
> many hours to find just one line of code that gave the full command
> necessary. With my level of Unix and Shell knowledge, I need the
> Code for Dummies version of code. Every piece of it starting with
> the exact filepath it wants. On OSX that is so odd now. Does it
> want the disk name? The word "Volumes" as the beginner? Is
> Metacards "effective filename" minus a few items to back out of the
> Contents folder enough to make it happy? You get the idea of
> everything I experimented with...
Yeah, I can understand, Shari. Here's some basic info that should help:
1) The Terminal only understands "/"-delimited UNIX style paths (also called
"POSIX" paths), and any path that includes a space has to either be fully
quoted, or precede each space with a backslash. The nice thing is that you
can drag and drop files into the Terminal and it will put the path in for
you. Examples, to open a folder called "MC Stacks" that I have on my
desktop:
open "/Users/kenray/Desktop/MC Stacks"
or
open /Users/kenray/Desktop/MC\ Stacks
2) POSIX paths will include the "/Volumes" *if* there is more than one
mounted volume, and the volume you're addressing is *not* the first drive
loaded (i.e. the one in the upper-right corner of the desktop). And if it
does so, it is in the form:
/Volumes/<name of hard disk>
So I've got a file called "test.txt" on my backup drive. The drive is called
"Stormwinds BU" (since my main HD is called "Stormwinds"). When I drag that
file into the Terminal, it shows it as:
/Volumes/Stormwinds\ BU/test.txt
3) AppleScript can work with *both* ":"-delimited OS 9 paths as well as
POSIX paths. If you don't specify anything, AppleScript will assume the
colon-delimited OS 9 paths. However you can get a POSIX path by doing
something like this:
set thePath to POSIX path of myFilePath as string
> Even though I had the full pathway to the desktop, it put the alias
> one level down. Double click on the disk icon and there's the alias.
> Not on the desktop. Also, it did not have the nifty program icon,
> but a generic piece of paper. Not acceptable for a program to be
> publicly distributed. Thirdly, the danged things refuse to be
> deleted! I created them two days ago but cannot delete them. I
> don't recall a password to the Admin account as I've never really
> needed to use it... but am assuming that will be the only way to get
> rid of them. That's also bad because my program has an uninstaller
> which uninstalls all files outside of the program folder including
> the desktop alias.
Don't know what happened there...
> As for using Applescript, what broke is Applescript's ability to
> create the link, not the link itself. I know that moving a file
> after the link is created will break it :-) But what baffled me is
> that the Applescript to create the link which worked initially,
> stopped working. Suddenly it would not create links. I'm 99.9999%
> certain I did not change the code. Generally if it ain't broke, I
> don't diddle with it unless I'm improving it. That code didn't need
> improving. Until it broke.... :-\
Did it work in other versions of OS X, or only in OS 9?
> In searching the archives there were references to Tuviah's use of
> the ln command, but no specifics to follow. Just a vague reference.
> I do not know if it's possible to use the ln command and keep the
> nifty icon, and make it deletable...
Whenever you want to know how to use a particular Terminal command, open the
terminal and type "man" (for "manual") followed by the name of the command.
So for "man ln", it shows this (I'm only showing a portion of the entry):
NAME
ln, link - make links
SYNOPSIS
ln [-fhinsv] source_file [target_file]
ln [-fhinsv] source_file ... target_dir
link source_file target_file
DESCRIPTION
The ln utility creates a new directory entry (linked file) which has
the same modes as the original file. It is useful for maintaining
multiple copies of a file in many places at once without using up
storage for the ``copies''; instead, a link ``points'' to the original
copy. There are two types of links; hard links and symbolic links.
How a link ``points'' to a file is one of the differences between a
hard and symbolic link.
There's a better UI to the 'man' entries by using a program called "ManOpen"
(you can search Google for that).
In any event, when I issue:
ln -s <srcPath> <pathToAlias>
it creates an alias, with icon, etc. So in my case, if I want to alias the
Calculator application to my desktop, I'd do this:
ln -s /Applications/Calculator.app /Users/kenray/Desktop/Calculator
Hope this helps,
Ken Ray
Sons of Thunder Software
Web site: http://www.sonsothunder.com/
Email: kray at sonsothunder.com
More information about the metacard
mailing list