我有兴趣在Python上在MacOS X上创建dmg磁盘映像,并且遇到了以下解决方案:How do I create a nice-looking DMG for Mac OS X using command-line tools?
但是,我遇到了与路径长度相关的奇怪问题。以下脚本说明了我的问题:
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”的磁盘映像中正确设置,而不是在名为“didnotwork”的磁盘映像中设置。似乎我的卷名限制为5个字符。但是,如果我缩短用于存储背景的文件夹的名称,例如到.bkg
而不是.background
,我可以使用更长的卷名,这表明这是一个与整个路径长度相关的问题。有谁知道路径长度有什么限制?是否有允许任意长路径的解决方法?
答案 0 :(得分:0)
我相信你必须逃避你的报价。如果不转义它们,就不能在引号内引用引号。例如它应该是,告诉应用程序\“Finder \”。您有很多地方没有正确使用您的报价。如果您查看链接到该人的示例脚本,请巧妙地使用单引号和双引号来避免此问题。我建议你解决这个问题。
另外,你不能像这样引用AppleScript中的文件......“。background:background.png”。当路径以句点开头时,Applescript不知道这意味着什么。 AppleScript中的路径以Macintosh HD的硬盘名称开头。你需要以适当的applescript格式将整个路径放在那里。这也需要引用转义报价。
祝你好运。