我在Mac OS X 10.7.5上使用CMake 2.8.10.2。
我已经将CMake配置为使用Xcode构建一个简单的应用程序,创建一个空窗口。然后我尝试配置CMake以使用以下命令构建程序的DMG安装,指定背景图像:
设置(CPACK_DMG_BACKGROUND_IMAGE / path / to / image)
和自定义.DS_Store使用以下方法设置窗口大小和图标位置
设置(CPACK_DMG_DS_STORE / path / to / DS_Store文件)
Xcode将成功构建应用程序并创建磁盘映像。当我安装图像时,它会显示正确的大小和图标位置,但背景始终设置为白色而不是指定的背景图像。
在磁盘映像中正确显示背景需要什么?
答案 0 :(得分:10)
很遗憾没有人回复这个问题。这是一个令人沮丧的经历,然而,看起来我终于解决了它,所以我在这里发布一个描述,以便在遇到别人时让他们感到悲伤。
为了让背景能够处理安装映像,基本上必须要做两件事;后台文件必须存在于安装映像中,并且必须将映像根目录下的.DS_Store配置为使用该背景。
可以通过将安装映像挂载到可写状态,然后从Finder的“查看”菜单中选择显示视图选项来配置.DS_Store文件。从那里,有人将为背景选择图片选项,并将背景文件拖到显示视图选项面板中的占位符。
使用CPack时,诀窍是能够拖动图像。当有人为安装,构建和安装图像设置背景时,看起来没有任何背景可以拖动到显示视图选项面板。如果有人进入终端并且
ls -a
在已安装的安装的根目录下,该命令将列出一个名为background.png的文件。此文件不会显示在Finder中。
此文件显示在终端而不是Finder中的原因是因为它具有扩展属性,使其为Finder隐藏。由于文件在Finder中隐藏,因此无法将文件拖到显示视图选项面板。做
ls -l@
将显示应用于文件的扩展属性。应该只有一个名为com.apple.FinderInfo。删除此属性应使文件在Finder中可见。可以使用终端
中的此命令删除该属性xattr -d com.apple.FinderInfo background.png
删除属性后,后台文件仍然不会立即显示在Finder中。有人必须弹出并重新安装安装映像。一旦发生这种情况,后台文件应出现在Finder中,有人可以将其拖到显示视图选项面板,这将导致背景图像显示在Finder窗口中以显示安装图像。之后,有人可以从安装映像的根目录复制.DS_Store文件并将其应用于CPACK_DMG_DS_STORE属性,并且无论何时构建安装映像,都应显示背景图像。
答案 1 :(得分:3)
set(CPACK_DMG_BACKGROUND_IMAGE /path/to/image)
DragNDrop
hdiutil attach mypackage.dmg -shadow junk.dmg
.background
中存在一个。我们的策略是使用Finder使窗口 完全 ,然后复制出.DS_Store
文件。View->Show View Options
Background:
下,点击Picture
单选按钮。然后,点击文字Drag Image Here
上方的图片。请注意,当前视图必须为as Icons
,否则此对话框将不存在。cmd-shift-.
这应显示隐藏的文件夹。在此处,进入.background
文件夹并选择背景图片。View
菜单上查看或隐藏工具栏。安装程序将复制确切的设置。.DS_Store
文件复制到另一个位置。可以使用cmd-shift-.
技巧查看文件,或者只使用终端来复制所有内容。请注意,我们可以将此文件的名称更改为DS_Store
,以便在存储时不会隐藏它。junk.dmg
或剩余的任何影子文件。CMakeLists.txt
,设置变量set(CPACK_DMG_DS_STORE /path/to/DS_Store)
这是我们刚创建并移出卷的文件。CPack
重建DMG文件。一切都应该像以前一样。作为警告,有很多信息存储在.DS_Store
文件中,例如文件位置,用户名等。目前,我不知道如何控制这些信息,所以在分发最终的DMG文件时要小心一点。如果您对其中的内容感到好奇,请使用像xxd
这样的十六进制编辑器。
作为一个简短的评论,这个过程非常迟钝。也就是说,我认为这不是Kitware的错。但是,他们可以更好地记录这个过程。据我所知,.DS_Store
文件格式没有详细记录或披露,所以我们基本上被迫使用Finder为我们制作一个。这是一个可能应该修复的MacOS问题。