经典环境与应用程序使用指南
1. 经典环境概述
经典环境是一种“软件兼容”环境,它能让为早期 Mac OS 版本开发的应用程序在 Mac OS X 系统上运行。这意味着用户在完全过渡到 Mac OS X 之前,仍可继续使用旧版应用程序。在未来一段时间内,经典环境是操作系统的必要组成部分。
对于其所承载的 Mac OS 9 操作系统而言,经典环境就像一个新的硬件平台,它利用 Mac OS X 内核环境(特别是 I/O 套件)来实现硬件服务。需要注意的是,经典环境并非模拟器,Mac OS 9 能在其中原生运行,并且在视觉和功能上与 Mac OS X 的其他部分兼容。不过,由于架构差异,Mac OS 9 及在经典环境中运行的应用程序无法充分享受内核环境的优势,如内存保护和抢占式多任务处理。若经典环境中的应用程序崩溃或挂起,有时只需重启经典环境,而无需重启作为宿主的 Mac OS X 系统。
2. 与原生 Mac OS 9 的兼容性
在原生 Mac OS 9 系统上运行的程序,若试图直接在系统底层进行操作,可能无法在经典环境中运行,具体情况如下:
-
窗口绘制
:向窗口管理器端口绘图的应用程序,其绘图通常会被裁剪到经典窗口上方的部分,但全屏模式是支持的。
-
帧缓冲区绘图
:绕过 QuickDraw 直接向帧缓冲区绘图的应用程序,可能会覆盖 Aqua 窗口,除非它们遵循特定的光标显示约定。
-
内存映射 I/O 寄存器操作
:操作内存映射 I/O 寄存器的软件会崩溃。
-
陷阱补丁
:对陷阱进行补丁并期望产生全局效果的软件,在经典环境中会有相应效果,但在 Mac OS X 中可能导致意外行为。例如,对所有文件系统陷阱进行补丁以拦截文件 I/O 的软件,只能看到经典环境内的 I/O。
-
文件系统访问
:试图通过磁盘驱动程序或设备管理器 API 直接访问文件系统的软件将无法工作,因此在原生 Mac OS 9 上运行的磁盘实用程序在经典环境中无法使用。
一般来说,修改或依赖于内核环境(尤其是 I/O 套件)提供的硬件抽象层以下的 Mac OS 内部机制的程序,无法在经典环境中运行。这些程序应尽可能使用更高级别的 API 进行访问,如所有文件系统访问都应通过文件管理器 API 进行。
3. 设备支持
3.1 支持的设备
Mac OS X 通常支持的大多数设备也支持经典环境(或计划很快支持),包括:
- USB
- 声音(输入和输出)
- 磁盘映像和 SMI(自挂载映像文件)
- 以太网
- SCSI(即将支持)
- FireWire(即将支持)
- 视频(即将支持)
Mac OS X 会挂载所有块存储(“磁盘”)设备,经典环境通过文件管理器 API 将它们视为卷。若 Mac OS X 未占用设备访问权限,经典环境可以获取该设备的访问权。Mac OS X 中挂载的磁盘映像(包括 SMI)和 AppleShare 卷,可通过经典环境中的文件管理器 API 访问。需要注意的是,Mac OS X 始终占用 USB 键盘和鼠标的访问权,经典环境通过更高级别的事件与这些设备进行通信。
3.2 不支持的设备
经典环境不支持的设备类型包括:
- ADB(除主键盘和指点设备外,但仅在事件级别支持)
- LocalTalk
- 内部软盘驱动器
- 串行设备
- 专用 PCI/PC 卡(即除 Mac OS X 支持的用于显示、网络或 SCSI 的卡之外的任何卡)
对于 PPP(调制解调器)和 AirPort 通信,Mac OS X 中的 PPP 连接可作为经典环境中的网络连接使用。
以下是设备支持情况的表格总结:
| 支持情况 | 设备类型 |
| ---- | ---- |
| 支持 | USB、声音(输入和输出)、磁盘映像和 SMI、以太网、SCSI(即将)、FireWire(即将)、视频(即将) |
| 不支持 | ADB(部分情况除外)、LocalTalk、内部软盘、串行设备、专用 PCI/PC 卡 |
4. 与 Mac OS X 的集成
4.1 用户界面
经典环境中的窗口和其他用户界面元素与 Mac OS X 的其他部分存在明显差异,具体如下:
-
窗口外观
:经典环境的窗口采用铂金外观和感觉,而非 Aqua 风格。例如,经典窗口使用关闭框、折叠框和缩放框,而非半透明的红色、黄色和绿色窗口控件。点击折叠框时,不会像 Aqua 那样有特殊的“精灵”效果隐藏窗口,窗口内容只是简单消失,且铂金窗口没有“阴影”。
-
菜单约定
:经典应用程序和其他 Mac OS X 应用程序在菜单约定上也有不同。例如,终止应用程序的菜单命令位置不同,经典应用程序的“退出”菜单项在“文件”菜单中,而 Mac OS X 应用程序的“退出应用程序”菜单项在应用程序菜单中。
-
窗口操作
:在调整窗口大小和拖动窗口时,Aqua 会在每个点重新绘制窗口,而拖动或调整经典窗口大小时,会看到窗口的轮廓(选框),直到操作结束才会重新绘制窗口。
-
透明度效果
:经典环境不参与透明度效果,当经典对象位于半透明的 Aqua 窗口下方时,该对象可能会完全变白,但经典窗口位于 Aqua 对象上方时不会出现这种情况。
-
文件系统浏览器
:Mac OS X 仅使用导航服务实现此功能,而经典应用程序可以使用导航服务或标准文件包。
不过,经典环境和 Mac OS X 都支持 OpenGL 和 8 位图形。
4.2 经典环境与文件系统
经典环境支持 Mac OS X 支持的大多数文件系统,包括 Mac OS 标准(HFS)、Mac OS 扩展(HFS +)、AFP、ISO 9660 和 UDF,但不支持 UFS 或 NFS 文件系统。因此,经典应用程序无法对 NFS 或 UFS 卷进行读写操作,甚至无法看到这些卷。
在文件系统访问权限处理方面,经典环境与 Mac OS X 也有所不同。尽管 Mac OS 9 本身不了解本地磁盘卷的权限,但 AFP 按文件夹识别权限,文件访问由包含该文件的文件夹的权限决定。经典环境将 BSD 权限失败映射到最接近的相应 AFP 权限错误,以实现经典环境中应用程序的最兼容行为。
这种权限集成模型可能会给经典环境中的应用程序(尤其是安装程序)带来问题。那些不能正确处理 AFP 权限错误的应用程序可能会显示误导性错误消息,甚至出现故障。另一个与权限相关的潜在问题是,当同一磁盘或分区同时用于经典环境和 Mac OS X 时,由于只有根用户可以写入启动卷的根目录,因此在文件系统根目录安装软件的尝试将失败,此类应用程序的安装程序必须提示用户选择文件夹。
经典环境除了在一些特殊位置(如系统文件夹、垃圾桶、桌面文件夹和特定于 Mac OS 9 的某些隐藏文件夹)外,会尊重 BSD 文件权限。如果用户在经典环境文件系统的根目录具有读写权限,经典应用程序可以写入系统文件夹并将项目移动到垃圾桶。当经典环境中的程序试图写入没有权限的文件夹时,会返回 AFP 错误代码。对于 AFP 文件共享,经典环境通过 Mac OS X 进行。
4.3 扩展和偏好设置
在典型的 Macintosh 计算机系统设置中,首先在硬盘分区或单独的硬盘上安装原生 Mac OS 9 系统,然后安装 Mac OS X 并选择 Mac OS 9 卷作为经典环境的启动磁盘。这样,用户在使用经典环境或启动到原生 Mac OS 9 系统时,可以使用同一组应用程序、扩展、偏好设置和其他软件。
原生 Mac OS 9 系统中使用的扩展集与经典环境中相应的扩展可能会发生冲突,这些冲突可能导致崩溃。通常,当存在冲突的扩展时,经典环境在启动时会禁用相应的“原生”扩展。例如,Mac OS X 本质上是多用户系统,因此经典环境在启动时会禁用“多用户”扩展,而当用户启动到原生 Mac OS 9 系统时,该扩展会重新启用。
经典环境以类似的方式处理冲突的偏好设置(通常与网络相关)。用户使用 Mac OS X 中的系统偏好设置应用程序设置的任何偏好都会覆盖为原生 Mac OS 9 系统设置的相应偏好。但当用户启动到原生 Mac OS 9 系统时,所有“原生”偏好都会恢复,经典环境不会对原生 Mac OS 9 系统的配置造成永久性不利影响。
4.4 访达和桌面
经典环境与所有其他应用程序环境共享 Mac OS X 桌面。通过 Mac OS X 访达,用户可以在包括经典环境在内的所有环境中操作文件和应用程序,具体操作如下:
- 浏览文件系统
- 移动、复制、删除和重命名文件和文件夹
- 通过双击启动应用程序
- 通过双击打开文档
经典环境以类似于原生 Mac OS 9 的方式呈现复合桌面,该复合桌面包括启动卷的 Mac OS X 桌面文件夹以及经典环境可以看到的所有其他挂载卷的桌面文件夹(不包括 UFS 或 NFS 卷)。经典环境对 AFP 卷的处理方式与原生 Mac OS 9 相同,如果此类卷有桌面文件夹,该文件夹将从复合桌面中排除,但可通过经典环境的标准文件包和导航服务 API 在 AFP 卷的根目录访问。
如果 Mac OS 9 桌面文件夹位于启动卷上,Mac OS X 访达和导航服务会隐藏该文件夹。在 Mac OS X 安装在 Mac OS 9“之上”的情况下,如果用户想通过访达或导航服务访问 Mac OS 9 桌面文件夹,可以通过 /MacOS9 中的别名进行导航。当用户重新启动到原生 Mac OS 9 时,将看到与离开时相同的 Mac OS 9 桌面(所有非 AFP 桌面文件夹的并集)。
Mac OS X 访达在经典环境中执行系统文件夹自动路由和 Mac OS 9 系统文件夹祝福操作。
以下是经典环境与 Mac OS X 集成差异的表格总结:
| 集成方面 | 差异描述 |
| ---- | ---- |
| 用户界面 | 窗口外观、菜单约定、窗口操作、透明度效果、文件系统浏览器不同 |
| 文件系统 | 支持的文件系统不同,权限处理方式不同 |
| 扩展和偏好设置 | 扩展可能冲突,偏好设置处理方式不同 |
| 访达和桌面 | 桌面呈现方式、文件夹访问方式不同 |
4.5 网络和打印
4.5.1 网络
经典环境中的网络与 Mac OS X 的网络设施基本集成,经典环境与 Mac OS X 共享网络设备(以太网、AirPort 和 PPP)、计算机的 IP 地址和 IP 端口地址空间。不过,经典环境运行完整的 Open Transport 协议栈(支持完整流),而 Carbon 中对 Open Transport 的部分实现是基于 BSD 套接字构建的。此外,经典环境中使用的 Internet Config 版本与 Mac OS X 中使用的不同,在 Mac OS X 中对 Internet Config 的调用会查找 Mac OS X Internet Config 数据库,而在经典环境中的调用会查找 Mac OS 9 Internet Config 数据库,这可能会导致混淆,因为启动默认浏览器的请求结果可能因使用的是经典环境还是原生 Mac OS X Internet Config 以及两个数据库中的配置不同而有所差异。
4.5.2 打印
经典环境中的打印机设置与原生 Mac OS 9 系统相同,可使用“选择器”或“桌面打印机实用程序”。不同的是,Mac OS X 访达不会在桌面上显示实际的桌面打印机。从经典环境中的应用程序打印时,可在打印对话框中使用与原生 Mac OS 9 相同的弹出菜单选择已配置的打印机。经典环境打印时会使用打印监视器,而非桌面打印监视器。
4.6 其他经典集成问题
- 字体 :Apple Type Solution(ATS)系统集成和管理放入经典系统文件夹字体文件夹中的字体,因此该文件夹中的字体可在整个 Mac OS X 中共享。但放置在 Mac OS X 其他字体文件夹中的字体不会与经典环境共享。
- AppleScript :经典环境中的 AppleScript 能够识别应用程序包。
- 复制/粘贴 :经典环境和 Cocoa 应用程序环境在剪贴板操作中使用的某些数据类型不同,因此在这些环境之间进行复制/粘贴或拖动操作可能会失败。
5. 应用程序安装
5.1 安装位置
文件系统的标准目录布局提供了几个应用程序安装位置:
-
系统和本地域组合
:/Applications,通常大多数 Mac OS X 系统中的应用程序安装在此处,以便供特定计算机系统的所有用户使用。
-
用户域
:~/Applications(本地或网络),如果应用程序的使用受到限制,例如根据单用户许可证购买的应用程序,应安装在用户主目录的应用程序文件夹中(该文件夹可能需要先创建)。
-
网络域
:例如 /Network/Applications,如果应用程序要供局域网中的所有用户执行,网络管理员应将其安装在这些用户可访问的文件服务器上。
需要注意的是,不要在 /System/Library 中安装任何软件或资源,如框架或字体,这些项目应放在本地域(/Library)的适当位置。
虽然用户不一定要将应用程序安装在上述推荐的域位置,但由于应用程序打包为捆绑包后通常是自包含的,用户可以将其安装在任何位置,并且应用程序应该能够正常执行。然而,安装在推荐位置之外的应用程序可能无法利用某些系统功能,如 Cocoa 应用程序的应用程序服务,并且访达可能无法识别该应用程序,这可能会影响系统效率。
5.2 手动安装
由于大多数 Mac OS X 应用程序打包为自包含的捆绑包,在大多数情况下,用户只需将捆绑包拖动到具有写入权限的文件夹即可完成安装。对于只需这种简单安装方式的应用程序,可以随应用程序提供简短的在线或打印文档,指导用户如何操作。
在 Mac OS X 上,拖放式安装是首选方法。因为应用程序将所需的所有内容都包含在其捆绑包中,简单的手动安装可以减少文件系统的混乱,并消除对文件系统中其他位置项目的依赖,同时也给用户选择不复制文件的权利。
以下是应用程序安装位置的表格总结:
| 安装位置 | 适用情况 |
| ---- | ---- |
| /Applications | 供特定计算机系统的所有用户使用的应用程序 |
| ~/Applications | 根据单用户许可证购买的应用程序 |
| /Network/Applications | 供局域网中所有用户执行的应用程序 |
下面是应用程序安装流程的 mermaid 流程图:
graph LR
A[选择安装方式] --> B{手动安装}
B -- 是 --> C[拖动应用程序捆绑包到有写入权限的文件夹]
B -- 否 --> D[使用安装程序]
D --> E{选择安装位置}
E --> F[/Applications/]
E --> G[~/Applications]
E --> H[/Network/Applications]
5.3 安装注意事项
在安装应用程序时,除了选择合适的安装位置和安装方式外,还需要注意以下几点:
-
权限问题
:如前文所述,经典环境和 Mac OS X 在文件系统权限处理上存在差异。安装程序需要正确处理 AFP 权限错误,避免出现误导性错误消息或故障。当在经典环境中安装软件时,如果遇到权限问题,可能需要用户以管理员身份操作或选择其他合适的安装位置。
-
资源安装位置
:不要将软件或资源(如框架、字体等)安装在 /System/Library 中,应将它们放置在本地域(/Library)的适当位置,以确保系统的稳定性和兼容性。
-
应用程序自包含性
:虽然应用程序打包为捆绑包后通常是自包含的,但在安装过程中仍需确保所有依赖项都已正确包含在捆绑包中,避免出现运行时错误。
5.4 安装故障排查
如果在安装过程中遇到问题,可以参考以下常见故障及解决方法:
| 故障类型 | 故障描述 | 解决方法 |
| ---- | ---- | ---- |
| 权限不足 | 安装程序提示无法在指定位置写入文件 | 检查文件系统权限,以管理员身份运行安装程序,或选择其他具有写入权限的安装位置 |
| 依赖项缺失 | 应用程序无法正常启动,提示缺少某些库或资源 | 检查应用程序捆绑包,确保所有依赖项都已正确包含。如果是经典环境中的应用程序,还需确保相关的 Mac OS 9 资源可用 |
| 安装失败 | 安装程序在安装过程中崩溃或报错 | 查看安装程序的日志文件,了解具体错误信息。尝试重新安装,或联系应用程序开发者获取支持 |
6. 经典环境的优势与局限性
6.1 优势
- 兼容性 :经典环境最大的优势在于它能够让为早期 Mac OS 版本开发的应用程序在 Mac OS X 系统上运行。这使得用户在过渡到 Mac OS X 的过程中,无需立即放弃旧版应用程序,能够继续使用熟悉的软件完成工作。
- 集成性 :经典环境在很多方面与 Mac OS X 进行了集成,如共享网络设备、IP 地址和端口地址空间,支持 OpenGL 和 8 位图形等。这使得用户在使用经典环境中的应用程序时,能够与 Mac OS X 的其他部分协同工作,提高工作效率。
- 操作便捷 :通过 Mac OS X 访达,用户可以在包括经典环境在内的所有环境中方便地操作文件和应用程序,如浏览文件系统、移动、复制、删除和重命名文件和文件夹等,操作方式与在 Mac OS X 其他部分类似,降低了用户的学习成本。
6.2 局限性
- 内核环境优势受限 :由于架构差异,Mac OS 9 和在经典环境中运行的应用程序无法充分享受内核环境的优势,如内存保护和抢占式多任务处理。这可能导致应用程序崩溃或挂起时,需要重启经典环境,影响使用体验。
- 兼容性问题 :虽然经典环境支持大多数 Mac OS X 支持的文件系统,但不支持 UFS 或 NFS 文件系统,并且一些依赖于系统底层操作的程序无法在经典环境中运行。此外,经典环境和 Mac OS X 在用户界面、扩展和偏好设置、网络和打印等方面存在差异,可能会给用户带来一定的困扰。
- 性能问题 :经典环境运行 Mac OS 9 及相关应用程序需要一定的系统资源,可能会对系统性能产生一定的影响,尤其是在配置较低的计算机上。
以下是经典环境优势与局限性的表格总结:
| 类别 | 描述 |
| ---- | ---- |
| 优势 | 兼容性强,能运行旧版应用程序;与 Mac OS X 集成度高,可协同工作;操作便捷,降低学习成本 |
| 局限性 | 内核环境优势受限,应用崩溃可能需重启经典环境;存在兼容性问题,部分文件系统和底层操作程序不支持;可能影响系统性能 |
7. 总结与建议
7.1 总结
经典环境为 Mac OS X 系统提供了与早期 Mac OS 版本应用程序的兼容性,使得用户在过渡到 Mac OS X 的过程中能够继续使用旧版应用程序。它在设备支持、与 Mac OS X 的集成、文件系统处理、网络和打印等方面都有其特点和优势,但也存在一些局限性,如内核环境优势受限、兼容性问题和性能问题等。
7.2 建议
- 用户 :对于需要使用旧版应用程序的用户,可以充分利用经典环境的兼容性优势,但需要注意其局限性。在安装应用程序时,选择合适的安装位置和安装方式,避免出现权限问题和兼容性问题。同时,关注系统性能,避免在配置较低的计算机上同时运行过多的经典环境应用程序。
- 开发者 :开发者在开发应用程序时,应尽量遵循现代的开发标准和 API,提高应用程序的兼容性和性能。对于需要支持经典环境的应用程序,要充分考虑经典环境与 Mac OS X 的差异,正确处理权限问题和依赖项,确保应用程序在经典环境中能够正常运行。
下面是使用经典环境的决策流程图:
graph LR
A[是否需要使用旧版应用程序] --> B{是}
A --> C{否}
B --> D[评估系统配置和性能]
D --> E{满足要求}
E -- 是 --> F[使用经典环境运行旧版应用程序]
E -- 否 --> G[考虑升级系统或寻找替代应用程序]
C --> H[使用 Mac OS X 原生应用程序]
通过了解经典环境的特点和使用方法,用户和开发者可以更好地利用经典环境的优势,同时避免其局限性带来的问题,提高工作效率和应用程序的兼容性。
超级会员免费看

被折叠的 条评论
为什么被折叠?



