【问题标题】:Where do resource files go when developing Mac apps?开发 Mac 应用程序时资源文件在哪里?
【发布时间】:2018-01-15 19:01:17
【问题描述】:

我是通过 Delphi(柏林)开发 Mac OSX 应用程序的新手,不知道将资源文件放在哪里。在 Windows 中,我可以写 ImageControl1.LoadFromFile('aFile.png'); 并知道它引用了我的可执行文件所在的目录。或者我可以做一些事情,比如制作并引用我放置资源的单独目录的路径。

但我不知道在 Windows 机器上为将在 Mac 上编译和运行的应用程序开发时将资源放在哪里或它们的路径如何工作。我尝试将图像文件放在 Delphi 项目的 OSX 子目录中,并输入完整路径,即 LoadFromFile('path/goes/here')。我还尝试在路径名表达式中使用正斜杠和反斜杠。在每种情况下,我都会遇到错误(在为 Mac 编译时,而不是 Windows)。我有点想这些文件应该存在于 Mac 上的某个地方……但我迷路了。

我希望有人能告诉我在 Windows 机器上开发 Mac 应用程序时将这些资源文件放在哪里,或者如何正确引用它们(或者,一个或两个很好的参考资料可以解释它对我来说...我在网上看了但找不到答案)。

【问题讨论】:

  • 我相信你可以在 OS-X 上将资源嵌入到应用程序中,就像 Windows 的工作方式一样——我认为这两种方法应该完全相同。只需查看嵌入式资源,特别是使用rc 文件。
  • “知道这是在引用我的可执行文件所在的目录”。呃,错了。它是相对于当前目录的。这可能是exe所在的目录,也可能不是。所以这是首先要解决的问题。使用绝对路径。或嵌入式资源。
  • @DavidHeffernan -- 我将保持原样,但你的观点很好。谢谢。
  • FWIW,在 Mac 上,资源位于 .app“文件”的 Resources 分支(子目录)中,这实际上类似于一个目录,其中包含资源分支和可执行文件分支. AFAIK,Delphi 知道这一点(目前无法检查,我的 Mac 正在维修中)并生成正确的 .app 结构。 ISTM,您应该在 Windows 上做同样的事情,即只需将资源添加到项目中,Delphi 就会做它的事情。它是如何做到的无关紧要。
  • 捆绑目录概览:Placing content in a bundle

标签: macos delphi delphi-10.1-berlin


【解决方案1】:

这里有一些关于 macOS 应用程序包结构的信息:

https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW19

在 Delphi 部署管理器中,资源可以部署到远程路径:

内容\资源\

及其子文件夹。以下代码应返回 .app 包的根目录:

NSStrToStr(TNSBundle.Wrap(TNSBundle.OCClass.mainBundle).bundlePath)

将 /Contents/Resources(和适用的子文件夹)添加到该路径,您可以从那里加载部署的文件

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多