我有兴趣从 Python 在 MacOS X 上创建 dmg 磁盘映像,并遇到了以下解决方案:如何使用命令行工具为 Mac OS X 创建漂亮的 DMG?
但是,我遇到了一个与路径长度相关的奇怪问题。以下脚本说明了我的问题:
import os
import Image
for NAME in ['works', 'doesnotwork']:
if os.path.exists(NAME + '.dmg'):
os.remove(NAME + '.dmg')
if os.path.exists('/Volumes/' + NAME):
raise Exception("Need to eject /Volumes/%s first" % NAME)
nx = 256
ny = 256
image = Image.new("RGB", (nx, ny))
for i in range(nx):
for j in range(ny):
image.putpixel((i, j), (i, 0, j))
os.system('hdiutil create -volname %s -fs HFS+ -size 10m %s.dmg' % (NAME, NAME))
os.system('hdiutil attach -readwrite -noverify -noautoopen %s.dmg' % NAME)
os.mkdir('/Volumes/%s/.background' % NAME)
image.save('/Volumes/%s/.background/background.png' % NAME, 'PNG')
apple_script = """osascript<<END
tell application "Finder"
tell disk "%s"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {{100, 100, 355, 355}}
set theViewOptions to the icon view options of container window
set the background picture of theViewOptions to file ".background:background.png"
close
open
end tell
end tell
END""" % NAME
os.system(apple_script)
如果运行,背景将在名为“works”的磁盘映像中正确设置,而不是在名为“doesnotwork”的磁盘映像中。似乎我的卷名限制为 5 个字符。但是,如果我缩短用于存储背景的文件夹的名称,例如改为.bkg
而不是.background
,那么我可以使用更长的卷名,这表明这是与整个路径的长度有关的问题。有谁知道路径长度限制在什么级别?是否有允许任意长路径的解决方法?
编辑:我正在使用 MacOS 10.6 - 脚本似乎在 10.7 上正常工作