是否可以运行具有不同 plist 文件的 Mac 应用程序的两个副本?

是否可以运行具有不同 plist 文件的 Mac 应用程序的两个副本?

我正在尝试使用Messages两个不同的用户帐户在 OSX 上运行两个版本的应用程序。我可以轻松复制/粘贴文件.app并将应用程序作为两个不同的进程运行,但由于它们使用相同的 plist 和数据库,因此它们具有相同的帐户/数据(以下是它创建的文件的详细列表:https://apple.stackexchange.com/a/107120/62420

是否可以修改一个或多个应用程序的存储位置?我是否可以这样运行应用程序,当它请求文件访问时,我可以修改它请求的文件的真实文件位置?例如,如果它请求,~/Library/Preferences/com.apple.imservice.iMessage.plist我可以将其重定向到~/Library/Preferences/com.apple.imservice.iMessage2.plist使用进程名称或 ID 吗?

答案1

我认为,不可能通过它的 id 或其他东西将进程重定向到另一个文件,但如果您想同时拥有多个帐户,您可以创建新用户并将不同的 Apple ID 与其关联,然后在帐户之间切换。

苹果建议保留单独的计算机帐户在一台计算机上处​​理多个用户。

当然,你可以建立一个附加用户帐户以便她的 iMessage 帐户设置与您的不同。


答案2

不,这是不可能的,因为 OSX 引入了代码签名以防止篡改应用程序。plist 是软件包的一部分,因此也是开发人员签名的一部分。

深入代码签名

应用程序包中的 Info.plist 定义了未嵌入二进制文件中的配置参见束结构。bundle id 与它可以写入的首选项文件相关。由于 bundle id 是应用程序的一部分,因此已签名,因此您无法创建替代首选项文件。

您可以不遗余力地尝试挂载和符号链接其他文件系统,以在启动应用程序的两个实例之间交换这些文件,但我怀疑您是否会每天接受这种风险。

相关内容