我目前有一个 .rtf 格式的 SLA,它将使用 Rez 实用程序使用的中间 .r mac 资源格式集成到 .dmg 中。我已经手动完成了一次,但是对 .rtf 文件的更新难以传播到磁盘映像,并且容易出错。我想自动化这项任务,这也有助于添加其他语言或变体。
.rtf 到 .r 文本转换的过程如何实现自动化?
谢谢。
我目前有一个 .rtf 格式的 SLA,它将使用 Rez 实用程序使用的中间 .r mac 资源格式集成到 .dmg 中。我已经手动完成了一次,但是对 .rtf 文件的更新难以传播到磁盘映像,并且容易出错。我想自动化这项任务,这也有助于添加其他语言或变体。
.rtf 到 .r 文本转换的过程如何实现自动化?
谢谢。
只是因为我没有完全理解接受的答案实际上是如何实现目标的,所以我使用脚本的组合来生成十六进制编码:
#!/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 '
,超链接才有效。
希望这可以节省将来的时间。
使用unrtf
端口(来自 macports),然后使用 shell 脚本格式化行、标题和尾部。