以编程方式强制 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 位模式启动 的相关文章

  • 在 Mac 上运行 Tkinter

    我是一个绝对的新手 我正在尝试为我的学校项目制作 Python GUI 所以我决定使用 Tkinter 当我尝试导入 Tkinter 时 它会抛出以下消息 gt gt gt import tkinter Traceback most rec
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • 使用 xcassets 中的 imageNamed 加载 NSImage 在旧版 osx 版本中崩溃

    所以 我有一个在很多应用程序之间共享的 xcassets 我正在 Mac Mini 中使用 Xcode8 进行开发 其中安装了 MacOs Sierra 如果我在开发机上编译运行 就没有任何问题 然而 当我尝试在装有 OSX Maveric
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • tmux 标题字符串不执行 shell 命令

    我的中有以下几行 tmux conf set option g set titles on set option g set titles string whoami H PWD S W F I P 这在过去是有效的 但升级到 2 0 后
  • gem install rmagick 在 OS X El Capitan 上失败

    几天前我升级到 El Capitan 并运行了 brew update brew upgrade 它更新了 imagemagick 导致 ruby 的 rmagick gem 停止工作 我想没问题 我就跑 gem install rmagi
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • set-key-partition-list codesign 后仍提示密钥访问

    我正在导入一个PEM使用以下命令包含我的代码签名身份的公钥和私钥的文件 security import PEM FILE k Library Keychains login keychain T usr bin codesign T usr
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • “代码 。”无法在 OS X/Mac 上的 Visual Studio Code 命令行上工作

    命令code 不起作用本手册 https code visualstudio com docs nodejs 之前的所有其他步骤都有效 如何在 OS X 终端中调用 Visual Studio Code pwd 用户 mona nodejs
  • TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作

    Firemonkey 应用程序中的 TOpenDialog 似乎存在问题 该应用程序已针对 Mac Appstore 进行沙箱处理 我使用XE3 但它也存在于XE2中 我其实在这里找到了一份QC报告 但仍然没有解决 http qc emba
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • Cocoa - 捕获 NSStatusItem 鼠标悬停事件

    当用户的鼠标悬停在我的 NSStatusItem 上时 如何执行函数 如果您分配自定义NSView给你的NSStatusItem s view属性 您可以覆盖NSResponder方法mouseEntered mouseMoved and
  • 在 MAC OS X 10.9 上安装 NLTK 确实很困难

    我是 Python Mac OS 新手 我正在寻找 NLTK 教科书 但我在安装它时遇到了一些问题 我一直在寻找解决方案 但不幸的是 所有解决方案似乎都不适合我 或者我误解了如何使用它们 我遇到的基本问题是 尽管按照说明进行操作 NLTK
  • NSNotificationCenter 为“观察者”和“对象”保留什么类型的引用?

    任何人都可以澄清 阐明有关情况 NSNotificationCenter addObserver selector name object 观察者 和 对象 参数的通知中心保留哪些类型的引用 从通知中心删除观察者的最佳实践是什么 多线程应用
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 核心数据 iCloud 同步中的关系完整性和验证

    考虑以下简单的实体模型 实体 A 与实体 B 具有一对一关系 称为b 实体 B 具有逆对一关系 称为a 这两种关系都不是可选的 A B b lt gt a 假设我们有两个设备 1 和 2 开始完全同步 每个对象都有一个 A 类对象和一个 B
  • 如何在 MAMP 上显示错误?

    我有 MAMP 但我不知道如何在其上显示错误 当我的 php 代码出现错误时 它只显示空白页 我在 Google 上搜索过 我发现我必须在所有文件夹和版本上将其更改为 display errors on 并将其包含在我的页面上 错误报告 E
  • Mac OS X - 使钥匙串证书可供 Atlassian Bamboo 使用

    我有一个构建包的 Bamboo 计划 我想用我的开发者证书签署该包 在我的构建脚本中 我有这个 productsign sign Name of my certificate input pkg output pkg 从命令行运行此脚本可以

随机推荐

  • 未捕获的错误:在未加载模板编译器的情况下无法调用“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 适用于第三方输入设备 只有一小部分用户会购买该设备 但这对于那一小部分用