2007年10月15日

せんべえの生地作り ver.0.004 公開

せんべえの生地作り ver.0.004 のダウンロード

ソースコードのダウンロード

フォルダ内のファイルを、ISO9660/JOLIET/UDF イメージファイルにまとめるツール
「せんべえの生地作り」の修正版です。

変更点:

・excepts.txt に記述したファイル名のファイルを除外するようにした。
・細かい修正
・その他、規格を勘違いしていた箇所の修正

実行ファイルと同じフォルダに置かれた except.txt には、イメージから除外するファイルを、一行に一つづつ書き込めます。 大文字と小文字を区別しません。

今回の修正について

今回の修正は、トラックバックを送ってくださったくらり氏が、せんべえの生地作りを使った際の問題を受けたものです。
http://blog.karari.net/wp/?p=166
単に名前が .DS_Store や Icon というファイルはイメージに取り込めるので、問題はそれらが使用されている為だと思うのですが、このファイル独占使用のいい対策が思い浮かばなかったので、こういう形になりました。
配布ファイルでは、
.DS_store
Icon
Thumbs.db
の 3 つを書き込んであります。追加する、削除する場合には、お手数ですがメモ帳などで開いて修正してください。
根本的な解決になっていませんが、どうでしょうか。

あと、トラックバックにあった Mac へのイメージファイルのコピーと DVD-R への記録の問題ですが、正直 Mac の知識もないし焼きソフトもわからないし再現も出来ないので難しいです。とりあえず、そのフォーマットの HDD に書き込めるファイルの最大サイズや、DVD-R の容量を確認するといった初歩的なことしか思い浮かびません。

なお、DVD-R の容量の目安は、イメージファイルの大きさで 4,700,000,000 バイトです。メーカーや種類によって微妙に異なります。イメージファイルではファイルは圧縮されず、ファイルの情報やディレクトリ構造、ボリュームの情報などが加えられ、ファイルはセクタに合わされるため、単純なファイルの総和よりかなり大きくなります。あまりお勧めしませんが、ISO9660/JOLIET でしか記録されていない DVD-ROM もあるので、UDF を切り捨てればサイズは減ります。
なお、今回の変更で作成されるイメージファイルのサイズを少し減らしました。
posted by 七癖 at 18:56| Comment(1) | TrackBack(0) | 自作フリーウェア | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
いつもお世話になっておりますm(__)m、そのご恩返しというわけではありませんが「せんべえの生地作り ver.0.004」にいくつかバグ、というかケアレスミスを見つけましたので、ご報告させていただきます。

【殆どのケースで問題にはならないが、場合によっては致命的となるかもしれないもの】
● ボリュームラベルに1バイト文字で長いもの(16字以上)を指定すると
・ISO9660 SVD.VolumeIdentifier
・UDF1.02 FSD.FileSetIdentifier
この二箇所の後方の領域にあるデータがエラいことになる。
☆最大被害範囲
・ISO9660 SVD.UnusedField2 (8バイト全域)(まぁ、元々使っていないところなので。。。)
・ISO9660 SVD.VolumeSpaceSize (8バイト全域)(ちょいとヤバいことがあるかも^^;)
・ISO9660 SVD.EscapeSequence (前半の16バイト、ただし最初の3バイトは "%/E" で上書きされているので大丈夫)
・UDF1.02 FSD.CopyrightFileIdentifier(32バイト全域)
・UDF1.02 FSD.AbstractFileIdentifier(最初の1バイト)
● ISO9660 PVDとSVDの LogicalBlockSize のうち、ビッグエンディアンの方がリトルエンディアンのまま(00 08 08 00 であるべきなのに 00 08 00 08)

【致命的ではないが、恒常的に問題となるもの】
● dstring では、最後のバイトに UsedBytes を記録することになっていますが、それが全部抜けてしまっているようです。
CyberLink PowerDVD では、この UsedBytes のデータがないとボリュームラベルが認識できないみたいです。

【気分的なもの】
● UDF1.02 の timestamp.TypeAndTimeZone が 0x121C でなく 0x021C になっている(Flag = 0)
● "*開発者名" を入れる ImplementationIdentifier のうち、IUVD にあるものだけが何も設定されていない(他は全部"*"が入っているのに)
● ISO9660 PVDとSVDにある Date and Time のうち、未使用のものにまでTZが設定されてしまっている。(VolumeModificationTime, ExpirationDateTime, EffectiveDateTime の三つです。未使用のところは全部 0x00 の方が落ち着くような気がします(^^;)

【ちょいと困ることもあるかも】
● フォルダ名に「拡張子」がついていると、
---------------------------
せんべえの生地作り
---------------------------
A8DE4~1.A
以上のファイル名が長すぎます。
ファイル名は64文字以内です。
イメージファイルの作成に失敗しました。
---------------------------
OK
---------------------------
というエラーが出て、UDF以外の形式では作成できないことがある。
○ 拡張子部分が3バイトまでの長さであれば、全体の長さが8バイト以内なら大丈夫
○ 拡張子部分が4バイト以上になると、いくら全体が短くてもダメ
例)
ABCDEFG.A → ×
ABCDEF.A  → OK
ABCDEF.AB → ×
ABCDE.AB  → OK
ABCDE.ABC → ×
ABCD.ABC  → OK
A.ABCD   → ×
A..A     → ×
というか、そもそもフォルダ名に拡張子なんか付けている方が悪いんですが(^^;
Posted by ながえ at 2009年12月14日 00:55
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。