Batch Configuring Mac OS 9 Workstations with AppleScript

Before modern Mobile Device Management (MDM) and command-line automation became standard on Apple platforms, system administrators managing fleets of Mac OS 9 machines relied heavily on AppleScript to automate initial deployment and workstation configuration. Lacking native Unix shells, administrators combined AppleScript with scriptable Finder actions, scripting additions, and network management tools to batch-configure network settings, distribute system extensions, standardize user environments, and deploy applications across local networks.

Scripting the Finder and System Folder

In Mac OS 9, the operating system relied on a centralized "System Folder" containing specific subfolders such as Control Panels, Extensions, and Preferences. Administrators wrote AppleScripts targeting the Finder application to manipulate these folders directly. A baseline script would typically:

  • Copy standardized Control Panels and Extensions to the System Folder, ensuring identical system functionality across a lab or office.
  • Suppress extensions conflicts by disabling or deleting non-essential system extensions.
  • Distribute pre-configured preference files for common applications into the System Folder:Preferences: directory, establishing consistent default user profiles.
  • Create standard desktop aliases, folder structures, and trash policies.

Configuring Network Settings and Control Panels

Configuring TCP/IP and AppleTalk manually across dozens of machines was time-consuming. Because several Mac OS 9 control panels had limited native AppleScript dictionaries, administrators leveraged two primary methods to automate network setup:

  1. Scripting Additions (OSAX): Administrators installed third-party scripting additions, such as "Jon’s Commands" or "Akua Sweets," to extend AppleScript's native capabilities. These additions enabled the direct reading and writing of low-level system files, resource forks, and TCP/IP configurations.
  2. GUI Scripting and Keystroke Injection: For control panels that were not scriptable, utilities like PreFab Player allowed scripts to simulate mouse clicks and keystrokes. This enabled automated entry of IP addresses, subnet masks, DNS servers, and AppleTalk zones directly into the TCP/IP and Network control panels.

Network Mounting and File Distribution

AppleScript was commonly used to automate file transfers from an AppleShare File Server (AFP). Scripts contained hardcoded or dynamically prompted server paths to mount network volumes silently using standard syntax:

mount volume "afp://admin:password@192.168.1.10/DeployShare"

Once mounted, the script copied bulk software suites, disk images, and documentation from the server directly to the local hard drive, eliminating the need to visit each terminal with removable media.

Execution Strategies for Mass Deployment

Because Mac OS 9 lacked native background daemon services like launchd or cron, administrators utilized specific deployment vehicles to execute their AppleScripts on client machines:

  • Startup Items: Compiled scripts were saved as standalone applications ("applets") and placed directly into the System Folder:Startup Items: directory. Upon booting a freshly imaged or cloned machine, the script executed automatically, ran through the configuration sequence, and then removed itself from the Startup Items folder to prevent re-execution on subsequent reboots.
  • Apple Network Assistant: For machines already connected to the local network, administrators used Apple Network Assistant (or third-party tools like Netopia Timbuktu) to broadcast and execute AppleScripts remotely across multiple endpoints simultaneously.
  • Disk Images and Golden Master Cloning: Deployment often began by restoring a base "Golden Master" disk image via tools like Apple Software Restore (ASR). An embedded post-install AppleScript would run on first boot to read the machine’s hardware details, assign a unique name, adjust TCP/IP parameters, and finalize the setup.