启动前为进程设置环境变量

2023-12-11

我有以下情况:

我有 Mac OS 捆绑包,其中包含使用一些第三方动态库的应用程序,这些库依赖于一些环境变量,让我们命名它ENV_VAR。我想设置ENV_VAR仅对我的应用程序具有某些值,因为如果我为整个系统设置它,可能会破坏其他一些应用程序。它应该对用户透明地工作,即他只需双击应用程序文件夹即可运行我的应用程序。我怎样才能实现它?

注意:动态库是在主函数启动之前加载的,因此在主函数中设置此变量没有帮助。


您可以添加一个键“LSEnvironment”到您的应用程序包的 Info.plist。该值可以是包含键和值字符串的字典,当您的应用程序通过 Launch Services 启动时(例如从 Finder 或 Dock 但不是从终端启动),这些键值对将添加到环境中。

<key>LSEnvironment</key>
<dict>
    <key>ENV_VAR</key>
    <string>value</string>
</dict>

然而,在我的测试(在 Snow Leopard 上)中,测试有点不稳定,至少在编辑现有应用程序的 Info.plist 时是这样。基本上,Launch Services 在第一次遇到应用程序时会缓存应用程序 Info.plist 的这一部分,并且不一定会识别磁盘上的更改。有时,您可以通过复制应用程序包或暂时将其移动到其他文件夹等方式提示它重新读取 Info.plist。当然,过度的解决方案是使用lsregister刷新并重建缓存:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -seed

此缓存问题不会影响您的最终用户,只会影响您调整 Info.plist 时的情况。此外,如果您在源 Info.plist 中进行更改,然后使用 Xcode 构建应用程序,它也不会对您产生影响。

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

启动前为进程设置环境变量 的相关文章

  • 我可以在 macOS 上使用 win32com 客户端吗?

    我一直在研究 Pycel 和 Xlrd 库 在 Mac 上使用它们的问题是这两个库都使用 win32com client 读取 Excel 文件 所以我想知道 有什么办法我可以使用win32commacOS 的客户端 如果没有 我可以使用类
  • 如何将 Xcode 指向旧的 SDK,以便将其用作“基础 SDK”?

    我的 Mac 的设置 Volume A 操作系统 X 10 8Xcode 4 5 或更高版本 10 6 SDKIS NOT作为基础 SDK 提供 Volume B 操作系统 X 10 7Xcode 4 3 3 10 6 SDKIS作为基础
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • Django管理命令是在单独的进程中执行的吗?

    Django 有很多管理命令 此外 我们还可以编写自己的命令 进行 shell 调用后会发生什么python manage py XXX 代码是否会在从 shell 启动的进程中执行 或者 shell 进程只是与执行命令的主 Django
  • 如何将 OSX 上的 Xcode 更新到最新版本?

    在 OSX 上更新 Xcode 最简单的方法是什么 我在终端中看到这个 brew install xxxxxxx Warning Your Xcode 4 3 3 is outdated Please install Xcode 4 6 但
  • 如何在 MAMP 上显示错误?

    我有 MAMP 但我不知道如何在其上显示错误 当我的 php 代码出现错误时 它只显示空白页 我在 Google 上搜索过 我发现我必须在所有文件夹和版本上将其更改为 display errors on 并将其包含在我的页面上 错误报告 E
  • 如何在 Mac 上禁用屏幕保护程序/显示器睡眠

    有没有办法用可可禁用屏幕保护程序和显示器睡眠 OSX 10 8 中已弃用 UpdateSystemActivity OverallAct 的使用 现在推荐的方法是通过以下调用来阻止它 IOPMAssertionCreateWithName
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 使用脚本从网站中提取电子邮件地址

    给定一个网站 我想知道以编程方式和 或使用脚本的最佳程序是什么 以纯文本形式提取每个页面上存在的所有电子邮件地址 电子邮件受保护 cdn cgi l email protection从该链接和下面的所有站点 递归或直到某个固定深度 使用 s
  • Android Studio 无法运行 Xcode 模拟器

    我正在尝试使用 Xcode iPhone 模拟器模拟我的 Flutter 应用程序 但收到此错误 在升级 Android Studio 和 Xcode 之前 它运行良好 Launching lib main dart on iPhone X
  • SVN 提交后挂钩在提交后不会运行

    我的服务器上设置了 SVN 存储库 并且遇到提交后问题 我在 iMac 上使用 SmartSVN 作为客户端 我通过 SmartSVN 的 ssh svn 连接 我能够成功连接到 SVN 并对其进行更改 但从 SVN 客户端提交后 我的提交
  • 如何解决 xcode 一直编译所有内容的问题?

    我已经开始使用 XCode 它似乎可以工作 嗯 大部分 烦人的是它每次都会编译所有源文件 甚至是那些没有更改的文件 我正在掌握 openframeworks 每次都浪费时间编译 openframeworks 源文件 尽管它们没有改变 以下是
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 安装 python 3 的包

    我倾向于在 Jupyter 笔记本中运行我的代码 这些代码在 python 3 中运行 我的计算机上也有 python 2 我安装了pip3所以我可以专门为 python 3 安装软件包 但这似乎不适合我 mba pip3 install
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • NSTextField 字体样式在选择时重置

    Context 在 Interface Builder 中 我有一个不可编辑的标签 NSTextField 标签的内容是使用 Cocoa Bindings 创建的 绑定的值是NSAttributedString 使用数值转换器创建 看图片
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei

随机推荐

  • 使用 `seaborn.objects` 堆叠到 100%

    我正在尝试绘制一个图 其中条形或区域使用新的比例调整为 100 seaborn objects界面 我似乎无法理解so Norm 工作 无论有没有by 这是我到目前为止所得到的 import seaborn as sns import se
  • 测试向量的所有元素是否相等

    我想测试非空向量是否包含相同的元素 这是最好的方法吗 count vecSamples begin 1 vecSamples end vecSamples front vecSamples size 1 在 c 11 中 或升压算法 std
  • Pygame OpenGL 3D 立方体滞后

    我正在关注 pyOpenGL 上相当老的教程系列 我正在做的和他完全一样 然而我遇到了延迟 我有带有 8GB 内存的 AMD FX 6300 GTX 1050ti 并且文件存储在闪存驱动器上 我读过一些地方使用glBegin and glE
  • 八顶点立方体的法向量

    我正在使用 WEBGL 今天遇到了我的立方体顶点法线的问题 我用立方体网格检查了我的代码来自互联网而且效果很好 问题是 来自互联网的立方体有 24 个顶点 每个面 4 个顶点 6 个面 我认为这对于我的立方体来说太多了 摆弄我的立方体 Fi
  • 如何查询DOTNET_CLI_TELEMETRY_OPTOUT是否永久设置为TRUE?

    如果我输入 set DOTNET CLI TELEMETRY OPTOUT 1 or setx DOTNET CLI TELEMETRY OPTOUT 1 要永久保存此设置 则应将设置 DOTNET CLI TELEMETRY OPTOUT
  • 如何在CSV文件中同时转义逗号和双引号?

    我正在编写一个 Java 应用程序以将数据从 Oracle 导出到 csv 文件 不幸的是 数据的内容可能相当棘手 逗号仍是分隔符 但行上的某些数据可能如下所示 ID FN LN AGE COMMENT 123 John Smith 39
  • 阻止过期的访问令牌从资源服务器检索数据

    我一直在摆弄 IDS 4 但遇到了一个小问题 我将令牌生命周期设置为大约 15 秒 即使它们已过期 我仍然可以从资源服务器检索日期 如果我从客户端调用的标头中删除令牌 则会收到 401 错误 Client Authorize public
  • 尝试替换数据框中的特定值,但不覆盖它

    我的数据框看起来像这样orders total price amount side 0 0 003019 100 bids 0 0 003143 100 asks 当我尝试通过执行以下操作来替换特定值时 orders total order
  • powershell Get-ChildItem 结果数组

    Get ChildItem File Recurse Path path Fullname返回全名数组 Get ChildItem File Recurse Path path Name返回文件名数组 但 Get ChildItem Fil
  • 进度对话框不出现

    我的活动中有以下内容 我用它来下载用户的 LoveFilm 队列中的电影 但 ProgressDialog 从未出现 public class MyListActivity extends Activity SharedPreference
  • 将字节数组[十六进制]转换为字符数组或字符串类型+ Arduino [重复]

    这个问题在这里已经有答案了 我需要将十六进制字节数组转换为字符串 例如 byte array 4 0xAB 0xCD 0xEF 0x99 array 0 0xAB array 1 0xCD array 2 0xEF array 3 0x99
  • jqGrid拖放接收事件

    我正在使用jqgrid拖放 我有两个表表A和表B 我从表A中拖动一行并放入表B中 我想捕获表中收到的新行ID和数据 是否有任何接收事件在 jqGrid 中 您可以定义ondrop事件函数 参见此Link 像下面这样 jQuery table
  • C++ - thread_local 向量导致 MinGW 上的 join() 崩溃

    include
  • 通过引用返回。返回变量周围的括号

    http php net manual en function return php 通过引用返回时 切勿在返回变量周围使用括号 因为这是行不通的 您只能通过引用返回变量 而不能返回语句的结果 如果使用 return a 那么你返回的不是变
  • 获取 Javascript 中其他位置的偏移量

    我在亚洲 我想计算澳大利亚的偏移量 我知道如何计算偏移量的值 代码如下 var timezone offset new Date getTimezoneOffset 但其他地点如何计算呢 有人可以指导我吗 虽然这can如果要在一个简短的函数
  • 在linux终端中编译c++文件:string_view:没有这样的文件或目录

    我有 gcc Cadence 4 8 3 我想编译一个包含 string view 的 C 文件 当我编译文件时 g script cpp 出现以下错误 script cpp 4 23 fatal error string view No
  • Android - 使用push()插入多个标记

    我可以在地图上插入多个标记 但是 当我插入 Firebase 数据库时 只有最后放置的标记被插入 我想我必须使用某种列表或哈希图 POJO类 public class FirebaseMarker String address String
  • 在 python 脚本中使用 youtube-dl 仅从 youtube 视频下载音频

    有一个few posts on 下载音频来自 YouTube 使用youtube dl 但没有一个是具体的或太有帮助的 我想知道从 Python 脚本中执行此操作的最佳方法是什么 例如 以下是下载视频的 README 示例 import y
  • Python - 沃尔玛的网络抓取

    我正在尝试从中获取一些数据Walmart使用 Python 和 BeautifulSoupbs4 简而言之 我编写了一段代码来获取所有类别名称并且有效 import requests from bs4 import BeautifulSou
  • 启动前为进程设置环境变量

    我有以下情况 我有 Mac OS 捆绑包 其中包含使用一些第三方动态库的应用程序 这些库依赖于一些环境变量 让我们命名它ENV VAR 我想设置ENV VAR仅对我的应用程序具有某些值 因为如果我为整个系统设置它 可能会破坏其他一些应用程序