以编程方式强制 Cocoa 应用程序以 32 位模式启动

2024-04-28

我有一个 Cocoa 应用程序,通常在任何支持此架构的 Mac 上以完整 64 位模式运行。

现在我有一个外部 API,只能作为 32 位插件加载到主程序中。该 API 适用于第三方输入设备,只有一小部分用户会购买该设备,但这对于那一小部分用户来说很重要。

我的问题是,如果程序在 32 位模式下执行,则只能使用此 API。最简单的事情当然是:

场景 1:要求用户通过 Finder 的“获取信息”对话框更改其信息,以 32 位模式启动程序。

这很容易完成,但很难优雅..

场景 2:始终以 32 位模式运行,从而避免该问题

这也不是我想做的……为了一个奇异的功能而惩罚 98% 的用户。

场景3:自动更改应用程序的启动属性,使其在下次启动时以及之后每次启动时都以32位模式启动

or

场景 4:在启动时确定正在使用的架构,然后在必要时以 32 位模式重新启动

场景 3 和 4 的问题是,关于如何执行此操作的文档很少,这可能会给我带来 Mac App Store 指南的麻烦。

到目前为止,我已经确定:

  • 使用“arch”命令行工具将允许我以 32 位模式重新启动我的可执行文件
  • Finder 脚本不允许我更改“以 32 位模式启动”标志
  • 该标志由启动服务 API 管理(http://blog.timac.org/?p=490 http://blog.timac.org/?p=490)
  • 但我还没有找到任何接口来以编程方式更改启动服务 API 中的标志

到目前为止,我只能看到这些选项,其中没有一个看起来特别好:

  1. 使用 NSTask 和“arch”命令行工具重新启动应用程序
  2. 直接写入 com.apple.LaunchServices.plist
  3. 将 32 位插件隔离到其自己的 32 位进程中并使用 IPC

解决方案 1 可能会给我在 MAS 提交方面带来麻烦。解决方案 2 几乎肯定会在某个阶段这样做。从用户的角度来看,只有解决方案 3 是完美的,但会增加大量的复杂性,以获得最小的回报。

任何有关如何“干净地”并合理努力地做到这一点的建议将不胜感激!


选项 5: 创建另一个始终以 32 位运行的可执行文件,其唯一目的是驱动相关的 32 位组件。从主应用程序启动该可执行文件,并使用某种类型的独立于处理器的 io(可能是套接字)相互通信。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式强制 Cocoa 应用程序以 32 位模式启动 的相关文章

  • 在 SwiftUI TextEditor 中设置光标位置

    有没有办法以编程方式将光标移动到特定文本行或在 SwifUI 中选择它TextEditor 例如 如果有一个TextEditor里面写着10行 当用户按下按钮时 光标将导航到第三行 或者文本将被选择 目前使用默认的 SwiftUI 是不可能
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 禁用将应用程序窗口置于前面。关闭另一个窗口后

    我有包含 2 个 NSWindowController 的 OSX 应用程序 我的问题可以通过以下几个步骤来描述 使用 2 个窗口启动应用程序 选择另一个应用程序的窗口 将其中一个窗口放在另一个应用程序窗口前面 第二个窗口将保留在底部 关闭
  • 使用 pyobjc 将元数据写入 pdf

    我正在尝试使用以下 python 代码将元数据写入 pdf 文件 from Foundation import from Quartz import url NSURL fileURLWithPath test pdf pdfdoc PDF
  • OS/X 上的 iTunes COM 接口

    iTunes COM 接口在 Mac OS X 上可用吗 从我能找到的文档来看 它似乎比我可以通过以下方式公开的 Applescript 接口要广泛得多自动机程序 免责声明 这里绝对是 OS X 新手 COM 接口仅适用于 Windows
  • Tkinter 绑定 Mac OS“command+q”

    当我按 Command q 时 我试图 停止 根窗口退出 但这是不可能的 其他快捷键在我的 Mac 操作系统上有效 即使在 Windows Linux 中 Alt F4 绑定也可以 捕获 但在 Mac 操作系统中对我来说是不可能的 有任何想
  • Delphi XE2 Firemonkey 示例应用程序未在 MAC 上运行

    我正在尝试在 Mac 上运行示例 Firemonkey 应用程序 但我在 Mac 中收到以下消息 dyld Library not loaded rpath libcgunwind 1 0 dylib Referenced from Use
  • 使用 sed 在文本范围下方插入行

    我有一段文本 其中一些部分由四空格缩进清晰地界定 PERCHANCE he for whom this bell tolls may be so ill as that he knows not it tolls for him and p
  • 导入错误:无法导入名称“PandasError”

    我对在 Mac 上运行的 Python 3x 非常陌生 当前使用 python 金融的 senddex 教程 尝试运行以下脚本 import datetime as dt import matplotlib pyplot as plt fr
  • Mysql 连接到服务器:用户 root@localhost 的访问被拒绝

    edit9 是否有可能我只是缺少文件夹的一些权限 我真的非常非常感谢更多的建议 edit3 由于这篇文章没有得到足够的回复 而且这绝对是至关重要的 我尽快完成这件事 我重建了我的帖子以显示我认为到目前为止我已经扣除的内容 注意 通过许多不同
  • PHP 文件由浏览器下载,而不是由本地开发服务器(MAMP)处理

    一切都很顺利 直到我添加AddHandler application x httpd php5s php到本地服务器文档根目录中的 htaccess 文件 根据我正在使用的站点 我经常更改该文件 因为我访问时这样做了http 本地主机 88
  • Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?

    我一直在寻找解决这个问题的方法 所以我想我应该寻找比我更伟大的头脑 我正在开发一个 Cocoa 应用程序 它使用 Accessibility API 来操作另一个程序 它是一个热键应用程序 我控制的应用程序通常会打开多个窗口 其中一些窗口隐
  • WebView 不运行 loadHTMLString 中给出的 JavaScript

    我不明白为什么这不起作用 我的桌面上有一个 test htm 文件 如下所示 This is x 2 我有一个 WebVie
  • 在当前参数寄存器中找到的选择器名称:isEqual:

    我正在寻求一些帮助来消除 OSX 应用程序中的一个我无法解决的错误 我收到以下记录错误 Selector name found in current argument registers isEqual 但我一生都无法弄清楚它来自哪里 因为
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • 为程序员设置 Mac [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Productbuild 构建具有自定义背景的 OS X 安装程序包?

    我有一个项目依赖现已弃用的 PackageMaker 工具来创建 OS X 安装程序 我正在努力更新它以使用pkgbuild http developer apple com library mac documentation Darwin
  • 如何从 MacOS X Dock 启动脚本?

    我知道我可以将应用程序固定到扩展坞并从那里启动它们 但是 有没有办法将不是 MacOS 意义上的 应用程序 的程序 例如 bash 脚本 固定到扩展坞上 您可以将任何文件拖到 Dock 的右侧栏 垃圾箱和文件夹所在的位置 然后单击它来执行它
  • 如何从 Xcode 4 中的实体创建用户界面?

    我已经用核心数据进行了几天的实验 并且在过去的几个小时里尝试找出如何从 xcode 4 中的实体创建 UI 根据我一直在阅读的书籍 您必须选择将核心数据实体拖到界面生成器中的窗口中 但是当我在 xcode 4 中执行此操作时 没有任何反应
  • MacOS High Sierra KEXT 加载 - 有什么方法可以取消用户批准吗?

    正如某些 MacOS 开发人员所知 Apple 实施了安全内核扩展加载 https developer apple com library content technotes tn2459 index html 用户可以通过单击批准第三方

随机推荐

  • 未捕获的错误:在未加载模板编译器的情况下无法调用“compile”。请在调用“compile”之前加载“ember-template-compiler.js”

    我是 ember js 框架的新手 正在使用 ruby on Rails 和 ember debug js v 1 10 1 最新版本 我一直在网上读到 ember 更改了这个最新补丁 但我不知道如何解决我的问题 Uncaught Erro
  • 如果 bean 初始化失败,则停止 spring web 应用程序

    我编写了一个自定义 contextloaderlistener 当 Web 应用程序启动时它会被调用 public class CustomContextLoaderListener extends ContextLoaderListene
  • vim:视觉明星搜索未按预期工作

    我复制了这个函数来进行视觉搜索 and function s VSetSearch cmdtype let temp s norm gv sy let V substitute escape s a cmdtype n n g let s
  • 关于 Yii2 RBAC 的疑惑

    到目前为止 我一直在使用 Yii 1 1 14 开发 Web 应用程序 但现在是时候进行升级了 我工作的公司开发了自己的访问控制系统 我对它真的很满意 直到我看到它到底是什么样子 数据库中8个表的组合 不包括用户表 还有一堆外键 1 个控制
  • 如何检查用户是否具有有效的身份验证会话 Firebase iOS?

    在呈现我的应用程序的主视图控制器之前 我想检查用户是否仍然有有效的会话 我使用最新的 Firebase API 我想如果我使用遗产 我就能知道这一点 这是我到目前为止所做的 我在Firebase的Slack社区上发布了我的问题 没有人回答
  • Oracle:两个日期之间的天数和排除工作日如何处理负数

    我有两个日期列 并尝试测量两个日期之间的天数 不包括周末 我得到一个负数 需要帮助解决 Table CalendarDate DayNumber FirstAssgn FirstCnt DayNumber2 Id BusinessDays
  • 使用 malloc() 为 const char 字符串动态分配内存

    我正在编写一个程序 该程序从 ini 文件读取值 然后将该值传递到接受 PCSTR 即 const char 的函数中 函数是getaddrinfo 所以 我想写PCSTR ReadFromIni 为了返回一个常量字符串 我计划使用分配内存
  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中
  • Chrome消息传递错误:尝试使用断开连接的端口对象

    我的 Chrome 扩展使用长期存在的 端口 对象在 内容脚本 和 弹出 页面之间传递消息 弹出窗口 能够向 内容脚本 事件监听器发送消息 但是 内容脚本 中的 端口 对象无法将消息发送到 弹出 页面 var port chrome ext
  • 在 AngularJS 中的控制器之间共享数据

    我学习了如何在控制器之间共享数据 但遇到了一些问题 我有这样的html视图 div div div div
  • Jmeter 下降的最佳方法?

    我们都知道 Jmeter 并不是最擅长在运行期间更改活动线程的数量 除非您喜欢并创建以不同时间间隔触发的单独线程组 有没有人想出一个好的解决方案来在测试结束时降低速度 例如 我从 50 个线程开始 在 30 分钟内我想要 0 个活动线程 查
  • 使用不同时区的 POSIXct 到数字

    我想我一定不明白 POSIXct 是如何工作的 或者什么的 据我了解 它是自纪元以来的秒数 纪元是标准时间 例如 1970 01 01 GMT 我取两个 POSIXct 时间 一个在 EST 一个在 PST 它们是相同的绝对时间 然而 当我
  • 用于搜索内部文件的 ssh 命令

    几周前 我的两个网站可能被 ftp 暴力攻击所利用 破坏了我网站的许多文件 我发现他们通常会在js或php文件中插入以下代码 Trojan code removed as irrelevant to this question 我想通过 s
  • AWS Glue 爬网程序更改 serde

    我有带引号字符串的 csv 默认情况下爬虫会使用 LazySimpleSerde 注册该表 无论如何 我可以通过编程方式更改它以使用 OpenCSVSerde 吗 您可以使用 boto3 它是一个 aws sdk 您可以使用 python
  • 如何在 Docker 容器内动态添加 Jenkins 用户和权限

    当我为 python 项目构建声明式 Jenkins 管道时 使用 Pip 时收到以下错误消息 WARNING The directory cache pip or its parent directory is not owned or
  • Chart.js 刻度线和 X 轴之间的空间

    我正在使用 Chart js 版本 3 x 制作一个简单的画布 它只是显示价格的演变 X 轴用于时间 Y 轴用于进化百分比 我已经成功做到了这一点 但现在 我想添加一些风格 我的目标是在标记刻度和 X 轴之间添加一些空间 我用过chart
  • 无法打开 mysql-workbench

    我开始使用 mysql 但无法打开 mysql workbench 当我尝试通过 ubuntu 命令行打开它时 出现以下错误 usr lib mysql workbench mysql workbench bin 符号查找错误 usr li
  • NodeJS 的续集:支持这些功能吗?

    以下是关于sequelize支持的功能的一些问题 续集项目网站 http sequelizejs com 在决定是否使用它之前我想澄清一下 链接 效率 当链接多个查询时 这些查询是收集到对数据库的一个请求中 作为一批操作 还是每个请求单独发
  • fs.readFileSync 不是文件相关的? Node.js

    假设我的项目根目录下有一个名为file xml 假设我在tests 中有一个名为 test js 的测试文件 它有 const file fs readFileSync file xml 如果我现在跑步node tests test js从
  • 以编程方式强制 Cocoa 应用程序以 32 位模式启动

    我有一个 Cocoa 应用程序 通常在任何支持此架构的 Mac 上以完整 64 位模式运行 现在我有一个外部 API 只能作为 32 位插件加载到主程序中 该 API 适用于第三方输入设备 只有一小部分用户会购买该设备 但这对于那一小部分用