[2000/04/01:- I've substantially edited my original post, to clarify and correct several issues.]
Unfortunately, the Multiple Users feature won't let you automatically launch an app at system startup. However, it does allow you to automatically (re)launch an app at user login, and it can optionally prevent users from altering most of the folders on your hard drive.
If you just want the app to re-launch when each user logs in (as opposed to launching it once at system startup when only the Login screen appears), you could try one of the following two approaches, depending on how many access privileges you want to grant to your users.
Note that both scenarios assume that the app uses a single "global" preference-file stored in its parent folder, or in the Owner's Preferences folder. (If the app instead uses a personalized preference-file stored in each user's Preferences folder, then neither scenario will prevent users from modifying the app's settings. [However, in that case, you could write a small AppleScript applet that first copies a suitable "master" preference-file into each user's Preferences folder and then launches the app (see the 'Normal' accounts section below).]
Limited (and Panels) user accounts are more "secure" in that they cannot modify most folders (other than their own private folder), and they can launch only only apps to which you specifically grant them access. However, the drawback is that they can encounter many problems when normal privileges might be required (such as accessing the Internet via AOL, using some control panels, etc.). Here's one possible approach for Limited accounts:-
- First, grant access to the desired app for each Limited user .
- Then, create an alias to that app in each user's private Startup Items folder.
Normal user accounts are less "secure" in that they can modify almost any folder, and they can launch any apps. Nevertheless, it is possible to retain most of the freedom of Normal accounts but still prohibit access to a specific app's folder (albeit in a roundabout, possibly inconvenient, way):-
- First, use a utility such as File Buddy or ResEdit to mark the app's folder invisible.
- Next, create a small stand-alone AppleScript applet that simply tells the desired app to "run itself" -- e.g., 'tell app "<app_name>" / launch / run / end tell'). The applet can be stored in any globally accessible location.
- Finally, create an alias to that AppleScript applet in each user's private Startup Items folder.
On the other hand, if you want the app to launch once at system startup when only the Login screen appears, that's a trickier proposition... but there are ways to accomplish it, especially if you're willing to do some programming or you own a sufficiently powerful task-scheduling background utility. Several commercial utilities are available -- e.g., CE Software's QuicKeys
and West Software's OneClick
-- which let you automatically launch an app at specified times or when a certain other app is frontmost (e.g., the Login app). In addition, both of those schedulers, as well as Sophisticated Circuits' free iDoScriptScheduler
, will let you schedule an AppleScript script or applet (which could then launch the desired app, as described earlier).
on a "background-only" (BO) applet technique:-
It is also possible to "convert" an AppleScript applet directly into a background-only app (BOA, or 'appe'-type "extension") which would run at system startup without the need for any user to login. Detailed instructions on how to create such a BO applet were once available in the 'Converting apps to background only' thread over in ResExcellence's User's Forum. This thread seems to have now disappeared from the Forum, but I've made available a full copy of it as a file named 'Converting apps to BOA' in the public folder of my 'pcrawford' iDisk (in the 'Develop : Documentation : ResExcellence Posts : Processes :' subfolder). [However, please be aware that there are some important caveats regarding this kind of conversion, as noted in the thread.]
From within the BO applet, you could then launch whatever other apps you needed via the usual 'tell application "appName
" / launch / run / end tell' blocks. The launched apps would use the Owner's preferences. If any of the apps are too old to respond to the 'run' event, there's a scripting addition (OSAX) available which could be used to launch them, viz., Launch any application
Note that, because the Login app tends to force-quit any other visible apps shortly before/after it displays the main login dialogue, you'll probably need to first wait in a loop for the Login app to become frontmost (e.g., 'repeat until ((path to frontmost application as text) ends with ":Login") / delay 1 / end repeat'), and then wait for an additional short time after (e.g., 'delay 20').
:- Murray Yar IT's Multiple Users Actions
extension promises to provide yet another method of running an AppleScript script at system startup (apparently, just before the main login dialogue appears), among other features.
[This message has been edited by Paul Crawford (edited 03-11-2001).]