受け入れられた回答が実際にどのように目標を達成したかを完全には理解していなかったという理由だけで、スクリプトの組み合わせを使用して 16 進エンコーディングを生成します。
#!/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'
(スタイルのみ) を別々に挿入するように指示されています。もちろん、これを行うためのツールはありますが、実行するツールが 1 つ増え、作成された DMG でハイパーリンクを機能させる方法がわかりませんでした。では'RTF '
、ハイパーリンクが機能します。
これが将来誰かの時間を節約することを願っています。