以脚本方式将.rtf转换为mac .r资源

时间:2010-11-03 10:04:12

标签: macos resources rtf format-conversion

我目前有一个.rtf格式的SLA,它将使用Rez实用程序使用的中间.r mac资源格式集成到.dmg中。我已经手动完成了一次,但是对.rtf文件的更新压倒性地传播到磁盘映像,并且容易出错。我想自动执行此任务,这也可以帮助添加其他语言或变体。

如何将.rtf到.r文本转换的过程自动化?

感谢。

2 个答案:

答案 0 :(得分:1)

只是因为我没有完全理解接受的答案如何实现目标,我使用脚本的组合来生成十六进制编码:

#!/usr/bin/env ruby
# Makes resource (.r) text from binaries.

def usage
  puts "usage: #{$0} infile"
  puts ""
  puts "  infile   The file to convert (the output will go to stdout)"
  exit 1
end

infile = ARGV[0]    || usage

data = File.read(infile)
data.bytes.each_slice(16) do |slice|
  hex = slice.each_slice(2).map { |pair| pair.pack('C*').unpack('H*')[0] }.join(' ')

  # We could put the comments in too, but it probably isn't a big deal.
  puts "\t$\"#{hex}\""
end

在构建期间将其输出插入到变量中,然后变量最终出现在模板中(我们使用Ant来执行此操作,但具体情况并不特别有趣):

data 'RTF ' (5000, "English SLA") {
@english.licence@
};

确定需要花费很长时间的一点是'RTF '可以直接用于资源。 Apple文档说单独插入'TEXT'(仅使用纯文本)和'styl'(仅使用样式)。当然有一些工具可以做到这一点,但它是另一个运行的工具,我永远无法弄清楚如何在生成的DMG中使超链接工作。使用'RTF ',超链接就可以正常工作。

希望这能节省一些时间。

答案 1 :(得分:0)

使用unrtf端口(来自macports),然后使用shell脚本格式化行,标题和尾部。