updateFiles.datの書式
概要
updateFiles.datは、updateFiles.exeの動作を決定する設定ファイルです。
凡例
  • 行頭に半角のセミコロンがある行はコメントと見なされます。空行は無視されます。
  • この色で記述された部分は省略が可能であることを意味しています。
  • 記述にはキーワードとコマンドがあります。
  • 半角のセミコロンは、value部分の区切り記号に利用されるため、value内に含めることは出来ません。
キーワード
キーワードは、動作の概要を設定するため記述で、一般にkeyword=valueの形で記述されます。
TITLE = titleName
アップデート中のメッセージ表示に使われる対象アプリケーションの名称。表示のみに使われます。省略不可。 titleNameは、アップデート対象の名称。通常ゲームのタイトル。
TITLE=SUGOIZO
updateFiles.exeが表示するメッセージのアプリケーション名の部分にSUGOIZOを表示します。
CMD_VERSION = cmdVersionNumber
cmdVersionNumberは、利用する操作コマンドのバージョン。
DATA_START以降に記述するファイル操作コマンドがバージョンによって異なるため、その違いを吸収する目的で互換性のために用意されているキーワード。 現在は101を指定して下さい。
指定を省略した場合、100が指定されたものとして動作するため、通常は省略しません。 操作コマンドの詳細についてはコマンドを参照して下さい。
CMD_VERSION=101
操作コマンドのバージョンを、1.01だとみなします。
VERSION = appVersion
アップデート後のバージョン番号指定。整数。省略可。
省略したにもかかわらず、UPDATE_INFO指定が0以外の場合、そのアップデートのバージョンは0とみなされます。
appVersionには整数を指定してください。この値はそのまま、UPDATE_INFOで指定されたレジストリやiniファイルに保存されます。
  • UPDATE_INFO=0を指定した場合は、格納されないのでVERSION指定にも意味はなく、省略できます。
このキーワードが設定されると、コピー前にアップデートチェックが行われます。アップデートチェックは次の手順で行われます。
  • アップデート前に、このファイルのUPDATE_INFO/VERSIONで指定されている場所にあるデータを読み出す。
  • 現在指定されているVERSIONと、1で読み出したデータを比較して、より新しくなる場合だけ実行する。
アップデート先が新しい場合は、その旨を表示して終了します。
VERSION=1
バージョン番号として1を指定します。
バージョン番号は正の整数ならいくつでもかまいませんが、アップデートチェックのための比較に利用されるため、 新しいバージョンはそれ以前のものよりも大きな数値でなければなりません。
UPDATE_INFO = P0;P1;P2;P3
VERSIONで指定したバージョン番号を格納する場所を指定します。 省略した場合、UPDATE_INFO=0が指定されたものと見なされますが、updateFiles.exeのバージョンにも依存するので省略しない方が無難です。
P0は、場所の種類を表す数値(0〜3)P1P2P3は、P0によって意味が異なります。
P0 P1 P2 P3 解説
0 なし なし なし なにもしない
1 .INIファイル名 セクション名 キー名 INIファイル利用。VISTA以降不可
2 HKCU内のサブキーの位置 バージョンが格納されているキー なし HKEY_CURRENT_USER指定
3 HKLM内のサブキーの位置 バージョンが格納されているキー なし HKEY_LOCAL_MACHINE指定
4 RNFファイル名 バージョンが格納されているキー名 なし ver.1.07以降
UPDATE_INFO=0
[ P0=0 : バージョン格納なし ]
この場合、アップデート後のバージョン情報はどこにも格納されません。 そのためアップデートされたかどうかは、インストールされたファイルを調べなければわかりません。VERSIONキーは不要か、あっても無視されます。 バージョン管理があまり重要ではないアプリケーション(例えばアップデートパッチの場合、どのバージョンに適用しても最新になるようなパッチ。 こういったパッチでは、現在のバージョンを調べる必要がありません)の場合は、面倒がないのでこれがよく使われます。
UPDATE_INFO=1;appName.ini;system;version
[ P0=1:INIファイル指定 ]
この例では、アップデート対象フォルダにあるappName.iniの、[system]セクションの、 versionキーに、VERSIONコマンドで指定した文字列を設定します。
なお、VISTA以降では、特定フォルダにおけるINIファイルへの書き込みが認めらていません。 そのため現在では利用しない方が良いでしょう。過去との互換性のために残されています。
UPDATE_INFO=2;SOFTWARE\MakerName\TitleName;version
[ P0=2:HKEY_CURRENT_USER指定 ]
この例では、HKEY_CURRENT_USER\SOFTWARE\MakerName\TitleName\にあるversion キーに、VERSIONコマンドで指定した文字列を設定します。
UPDATE_INFO=3;SOFTWARE\MakerName\TitleName;version
[ P0=3:HKEY_LOCAL_MACHINE指定 ]
この例では、HKEY_LOCAL_MACHINE\SOFTWARE\MakerName\TitleName\にあるversion キーに、VERSIONコマンドで指定した文字列を設定します
SITE_URL = siteURL
SITE_EXPL = explain
SITE_URLSITE_EXPLは、ペアで使用される指定で、どちらも about ダイアログの中にあるサイトアクセス用のボタンを設定するものです。 どちらも省略が可能で、省略時の動作については、下記の「例」を参照して下さい。
SITE_URLのsiteURLは、ボタン押下時にアクセスするサイトのURLを指定します。
SITE_EXPLのexplainは、ボタンの上に書かれる説明文字列を指定します。
SITE_URL=http://www.reotuch.info/index.html
SITE_EXPL=retouch.infoへ
[ 省略なし] 両方の項目が指定された場合、ボタンの上にはSITE_EXPLで指定された文字列が表示され、押された場合は、SITE_URLで指定されたファイルが開かれます。
SITE_URL=http://www.reotuch.info/index.html
[ SITE_EXPLのみ省略 ]
SITE_EXPLのみが省略された場合、ボタンの上には"GO -> SITE_URLで指定された文字列"が表示されます。押された場合は、SITE_URLで指定されたファイルが開かれます。
SITE_EXPL=サポートサイトはありません
[ SITE_URLのみ省略 ]
SITE_URLのみが省略された場合、ボタンの上にはSITE_EXPLで指定された文字列が表示され、ボタンは無効になり押せなくなります。
[ 両方省略 ]
両方の項目が省略された場合、updateFiles デフォルトの値が用いられます。 デフォルトの値は、以下の指定が行われてているのと同じ動作をします。
SITE_URL=http://www.reotuch.info/retouch/others/updateFiles/index.html
SITE_EXPL=reotuch.info 内の updateFiles 解説サイトへ
INSTALL_INFO = P0;P1;P2
対象アプリがインストール場所が指定されている場所の指定を行います。省略不可。
エラー処理時、内部でSITE_xxxの値を利用します。なるべくこれらの指定より後ろに配置して下さい。 P0は、場所の種類を表す数値(0〜4)P1P2は、P0によって意味が異なります。
P0 P1 P2 インストール位置
0 なし なし updateFiles.exeと同じ位置
1 インストールフォルダ名\ なし 直接フォルダ位置を指定する。
2 HKCU内のサブキーの位置 インストールフォルダが格納されているキー HKEY_CURRENT_USER指定
3 HKLM内のサブキーの位置 インストールフォルダが格納されているキー HKEY_LOCAL_MACHINE指定
4 チェック用ファイル名 最初に確認するフォルダ名\ ユーザーに指定させる
通常市販アプリケーションでは、大抵、アンインストールのために自分自身がインストールされた位置の情報をレジストリに保持しているため、2または3が利用されます。 フリーウェア等や体験版等に見られる、レジストリを汚さないタイプのアプリケーションは、4を利用して、ユーザーにその位置を指定させることになるでしょう。0および1は、現在ではあまり使用されません。
INSTALL_INFO=1;c:\program files\MakerName\TitleName
[ P0=1:直接指定 ]
この例で、対象アプリケーションは、C:\program files\MakerName\TitleName\フォルダにインストールされているものとします。
INSTALL_INFO=2;SOFTWARE\MakerName\TitleName;PATH
[ P0=2:HKEY_CURRENT_USER指定 ]
この例では、HKEY_CURRENT_USER\SOFTWARE\MakerName\TitleName\にあるPATH キーに、インストールフォルダがフルパスで格納されているものとします。
INSTALL_INFO=3;SOFTWARE\MakerName\TitleName;PATH
[ P0=3:HKEY_LOCAL_MACHINE指定 ]
この例では、HKEY_LOCAL_MACHINE\SOFTWARE\MakerName\TitleName\にあるPATH キーに、インストールフォルダがフルパスで格納されているものとします。
INSTALL_INFO=4
[ P0=4:ユーザーに任せる指定 ]
この例では、チェック用ファイル名指定も、最初に確認するフォルダ名指定も省略されています。
この場合、updateFiles.exe がおかれているフォルダを初期対象ファイルにして、フォルダ選択ダイアログが開きます。 チェック用ファイル名指定が省略されているので、どのフォルダを指定してもアップデートを行おうとします。
INSTALL_INFO=4;check.exe
[ P0=4:ユーザーに任せる指定 ]
レジストリを利用しないアプリケーションのアップデートで、最もよく利用されるのがこの指定です。 基本的に ひとつ前の例と同じですが、チェック用ファイル名が指定されています。 この例では、選択したフォルダに、check.exe が存在していない場合、インストールされていないと見なされます。
INSTALL_INFO=4;check.exe;%sys%:\Program Files\
[ P0=4:ユーザーに任せる指定 ]
ひとつ前の例に、初期確認フォルダが追加されています。
もしこのフォルダにcheck.exe が存在すればそのままそのフォルダをアップデートします。 もし含まれていなければ、初期確認フォルダをカレントにしてフォルダ選択ダイアログが表示されます。 以後の動作は、初期確認フォルダ指定なしの場合と同じです。
なお、初期確認フォルダ名には、%sys% 指定が可能で、windowsのシステムドライブ名に置き換わります。
例:%sys%:\Program Files\ -> C:\Program Files\
DATA_START (value指定はありません)
このキーワードは、必ずキーワード指定の最後に配置されなければなりません。
このキーワード以降、ファイルの最後まで、ファイルの操作コマンドが並びます
ファイルの操作コマンドについては、コマンドを参照して下さい。
コマンド
  • ここでは、CMD_VERSION = 101以降のコマンドについて解説しています。
  • コマンドやパラメータの間にあるスペースはすべてタブです。半角スペースは利用できません。
DATA_START 以降の行は、1行1コマンドで、空行はなにもしません。
有効な各行は、cmd;P0;P1;P2 といった構造を持ちます。cmdや各パラメータの間の区切り記号は、半角セミコロン、またはTABが許されています。 コマンド区切りはすべてタブだと思って下さい。半角スペースは利用できません。HTML上ではTABの表現が難しいので、以下ではすべてセミコロンを用いて解説します。
md; folderName\
フォルダの作成(MakeDirectory)
folderName\は、作成するフォルダ名でインストールフォルダ相対パス指定。パスの最後には\が必要です。
md; targetFolder\
インストールフォルダの下に、targetFolderフォルダを作成します。
cb; folderName\
バックアップ用フォルダの作成 (CreateBackupFolder)
folderName\は、作成するフォルダ名でインストールフォルダ相対パス指定。パスの最後には\が必要です。
mdとの違いは2つ。
ひとつは、P0内に、%1を記述できること。%1は、実行時にそのファイルが存在していないことが保証されている8桁の数値に変換されます。 もう一つは、cbで作成したフォルダは、以降バックアップフォルダだと見なされることです。
このコマンドが実行された行以降、バックアップファイル指定に記述できる%bakcup%は、再度このコマンドが実行されるまで、ここで指定されたフォルダ名に置換されます。
cb; backup\
インストールフォルダの下に、backup\フォルダを作成します。以降、%backup%は、backup\ に置換されるようになります。
cb; backup%1\
インストールフォルダの下に、backup????????フォルダを作成します。
????????の部分は、任意の8桁の数値になり、すべての数値が使い切られていない限り必ず新規作成されます。以降、%backup%は、backup????????\ に置換されるようになります。
up; srcName; destName; backupName;
ファイルの更新(Update)。
更新といっても、その実態は強制上書きコピーで、標準では日付を比較したりしません。 またフォルダを指定することは出来ません。
srcNameは、コピー元ファイル名で、updateFiles.exeのあるフォルダ相対パスで指定します。
destNameは、コピー先ファイル名で、インストールフォルダ相対パスで指定します。
backupNameは、バックアップファイル名で、インストールフォルダ相対パスで指定します。
バックアップファイル名内には、%1指定や%backup%指定を記述することが出来ます。 バックアップファイル名は省略可能で、省略した場合はバックアップを行いません。
up;start.rld;rld\start.rld;rld\start.backup%1.rld
新しいstart.rld ファイルを、インストールフォルダ\rld\start.rld にコピーします。
オリジナルのstart.rldは、インストールフォルダ\rld\start.backup????????.rldに保存されます。 ????????の部分は任意の8桁の数値になり、すべての数値が使い切られていない限り必ず新規作成されます。
cp; srcName;destName;
srcNameは、コピー元ファイル名で、インストールフォルダ相対パスで指定します。
destNameは、コピー先ファイル名で、インストールフォルダ相対パスで指定します。
cpコマンドは、upと異なり、インストールフォルダ内でファイルをコピーするために用意されました。 従って、srcName、destName共にインストールフォルダ相対のパスを持ちます。 たとえば、バージョンアップの結果インストールフォルダの構造が変わってしまうような場合に、delコマンド等と併せて利用します。なお、フォルダそのものを対象にすることはできません。
cp;system.inf;userdata\system.inf
インストールフォルダ\system.inf を、インストールフォルダ\userdata\system.inf にコピーします。 移動させたい場合は、ソースファイルをdelコマンドで削除して下さい。
del; targetName; backupName
ファイルやフォルダを削除(delete)します。
targetNameは、削除したいファイルやフォルダ名で、インストールフォルダ相対パスで指定します。
backupNameは、バックアップファイル/フォルダ名\で、インストールフォルダ相対パスで指定します。
  • targetNameがフォルダ名の時は、backupNameもフォルダ名でなければならず、targetNameがファイル名の時は、backupNameもファイル名でなければなりません。
  • フォルダ名が指定された場合、それ以下にあるファイルやフォルダはすべて削除されます。ご注意下さい。
  • バックアップ名内には、%1指定や%backup%指定を記述することが出来ます。
  • バックアップ名は省略可能で、省略した場合はバックアップを行いません。
del;rld\start.rld;start.backup%1.rld
rld\start.rldを削除します。
rld\start.rldが存在している場合、start.backup????????.rld としてバックアップしてから削除します。 ????????の部分は、任意の8桁の数値になり、すべての数値が使い切られていない限り必ず新規作成されます。
del; userdata\
インストールフォルダにある、userdata\フォルダを階層化毎削除します。バックアップは作られません。
del;userdata\;%backup%userdata\
インストールフォルダにある、userdata\フォルダを階層化毎削除します。
削除前に、userdata\が存在している場合、cbコマンドで作られたバックアップフォルダに丸ごと保存します。 なお、%bakcup%は、最後の\を文字列中に含んでいます。そのため、このような表記になります。
rn; targetName; newName;
インストールフォルダにある、ファイルやフォルダをリネームします。
targetNameは、リネームしたいファイル名やフォルダ名を、インストールフォルダ相対パスで指定します。
newNameは、リネーム後のファイル名やフォルダ名を、インストールフォルダ相対パスで指定します。
rn; rld\old.rld; rld\new.rld
rld\old.rldrld\new.rldにリネームします。
exe; exeName; cmdline;
実行ファイルを起動します。
exeNameは、実行したいファイル名を、updateFiles.exeのあるフォルダ相対パスで指定します。
cmdlineは、その実行ファイルに与えるコマンドラインです。
exeNameにドキュメントファイル名を指定すると、それに関連づけられたアプリケーションでその実行ファイルが開かれます。
exec;readme.html
ブラウザで、updateFiles.exe と同じ位置にある readme.html を開きます。
bin; targetName; Address,size; datas;
targetNameのAddressからsizeバイトのデータを書き込みます。書き込むデータは、datasです。 主に、アーカイブされた音声データを差し替えるために作られました。
targetName書き込む対象のファイル名をインストールフォルダ相対パスで指定します。
Addressは、targetNameの先頭を0とした書き込む位置をバイト数で指定します。
sizeは、Addressから書き込むバイト数です。
datasは、実際に書き込むデータで、16進2桁のバイトデータをsize個並べたものです。バイトとバイトの区切りは半角スペースです。
bin; res\res2000.grp; 0x34EB4,4; 9A 0D 02 00;
res\res2000.grp0x34EB4バイト目からバイトのデータを書き込みます。書き込むデータは9A 0D 02 00です。
ovr; sfname; dfname; sstart, dstart, size;
sfnameのsstartからsizeバイトを dfnameのdstartに上書き挿入します。
sfname は挿入するファイル名。
dfname は挿入されるファイル名。
sstart は挿入を開始するsfname上の位置。ファイル全体の場合は0です。
dstart は挿入を開始するdfname上の位置
size は、挿入するデータのサイズ。0でファイル全体を挿入します。
bin は直接バイト列を指定しましたが、こちらはファイルそのもので上書きします。 主に、アーカイブされた音声データを差し替えるために作られました。
ovr; 27678.v; res\res2001.grp; 0, 0x35B52CD8, 0;
res\res2001.grp0x35B52CD8バイト目から 27678.v 全体を上書きします。
grp; flags,sfolder\,figure,startId,endId; indexFile,type,grpId;
指定されたファイル群を利用して、新しいアーカイブファイルを作成します。 主に音声の新規追加に対応するために作成されましたが、通常は開発環境でパッチを当てて当該アーカイブファイルを作成し、 そのアーカイブファイルを取り出して、upコマンドで追加する方が普通です。
flags はフラグです。
00000000_00000000_00000000_00000000
|||||||| |||||||| |||||||| |||||||+- 1:サブフォルダを対象にする。
|||||||| |||||||| |||||||| |
|||||||| |||||||| |||||||| +-------- 1:アーカイブ中キャンセルを禁止する
|||||||| |||||||| ||||||||
|||||||| |||||||| |||||||+---------- 1:出力フォルダが存在しない場合に作成する
sfolderはアーカイブする元データのあるフォルダ名をupdateFiles.exeのあるフォルダ相対パスで指定します。
figureはファイルIDの桁数です。音声なら通常は5。
startIdはアーカイブするファイルIDの先頭IDです。
endIdはアーカイブするファイルIDの終端IDです。
indexFileは、アーカイブファイルのインデックスファイルです。音声なら通常は、res\res2000.grpとなります。
typeは、アーカイブされるファイルの種類です。一応右図のように定義されていますが、いまのところ音声しか使われていません。
type一覧
ID 解説
0x11画像(gyu)
0x12アニメ(dlt)
0x13アニメ(mpg)
0x20音声(v)
0x21音楽(ogg)
0x22効果音(wav)
0x30シナリオ(RLD)
grpId は作成するアーカイブフォルダのID(res20xx.grpのxxの部分になります)
grp; 0x80,v\,5,46207,46374; res\res2000.grp,0x20,3;
v\フォルダにある46207.v46374.vのうち存在しているものを、 res\res2000.grpと同じ位置にあるres\res2003.grpとしてアーカイブを行い、 それが利用できるようにres\res2000.grpを修正します。startIdおよびendIdは、 作成するアーカイブファイルに含まれる範囲であって、実際にそのファイルの有無は無関係です。 このファイル範囲は、res2000.grpが管理している他のアーカイブファイルと重なってはいけません。
なお、もしres2003.grpがすでに存在している場合、新しいアーカイブで強制的に上書きされますのでご注意ください。