対応ソフトを増やす
_inmmcnfに未登録のソフトにパッチを当てて動かすことができたら、そのソフトの情報を_inmmcnf.iniに追加して(登録ソフトとして加えて)、次回からは自動的にパッチを当てられるようにしてみましょう(パッチは一度しか当てる必要ないんですけどね:-p)。その登録情報を_inmm.dllのサポートページの掲示板に書き込んでくださると、すべてのユーザーがその情報を利用でき大変ハッピーです。_inmm.dll対応ソフトを増やすために、どうかご協力をお願いします。
この節では、_inmmcnf.iniに書く情報(歴史的な理由から「登録情報」という変な呼び名がついています)の作り方について説明します。今ある_inmmcnf.iniを参照しながら読み進めていくと分かり易いと思います。
登録情報の形式
_inmmcnf.iniの登録情報は次のような形式です。
[ソフト名] Group=メーカー名 File=パッチを当てるファイル名 Message1=パッチを当てる前に表示される文章(省略可) Message2=パッチを当てた後に表示される文章(省略可) ;(必要に応じて)コメント
このほかに、ゲームのインストール先を調べるための情報が加わることもあります。これについては次の節で説明します。
登録情報は[ソフト名]
の行から始まります。他の行の順番は任意です。
ソフト名は、_inmmcnf.exeの[パッチ]ペー ジで[タイトル]として表示されます。
Group=
は、メーカー毎にタイトルをまとめるために使われます。大文字と小文字、全角と半角の違いだけでも別のグループとして認識されてしまうので注意してください。
File=
には、パッチを当てるファイルの名前を書きます。ゲームをインストールするフォルダは人によって違うので、ここにはフォルダ名は書きません。ただし、(ゲームのフォルダ)\sys\xxxx.xxxのように、インストールフォルダより下層のファイルにパッチを当てたいときは、File=sys\xxxx.xxx
という風にサブフォルダを含めて書きます。複数のファイルにパッチを当てる場合は、それぞれのファイル名を半角のコンマ(,)で区切ってください。
特殊なパッチを使用する場合、File=
の代わりにImportTablePatch=
やVfwPatch=
と書きます。
Message1=
とMessage2=
には、当該ゲームに_inmm.dllを使う際の注意などを書いておきます。Message1はパッチを当てる前、Message2はパッチを当てた後に表示されます。文中に改行を入れたい場合は、代わりに#
(半角シャープ)をその位置に入れてください。本物の改行が入っていると、改行後の文が切れてしまいます。注意事項が特になければ、Message1, Message2の行は省略できます。
セミコロン(;
)から行の最後まではコメントとして無視されます。パッチを当てる際に表示されたりはしませんので、注意事項などにはMessage1, Message2を使ってください。
インストール先フォルダの情報
さて、これだけでも登録情報として使えますが、File=
にはフォルダ名が含まれていないので、パッチをあてるべきファイルがどのフォルダにあるのか_inmmcnf.exeにはわかりません。この登録情報でパッチをあてようとすると、「(ソフト名)をインストールしたフォルダを指定してください」と言われて、フォルダを自分で指定しなければなりません。
「ボタン一つ」でパッチをあてるためには、ゲームがインストールされているフォルダを_inmmcnf.exeが知っている必要があります。
多くのゲームは、レジストリやwindowsフォルダのiniファイルに、インストール先フォルダの情報を記録しています。また、「アプリケーションの追加と削除」で使われる情報からインストール先フォルダを特定できることもあります。これを_inmmcnf.exeに読ませることで、フォルダを自分で指定する必要がなくなります(10)。
- インストール先フォルダの情報が見つからないときは、すっぱり諦めましょう(もとから情報が存在しないゲームもあります)。どうせフォルダ指定なんてたいした手間ではありません。:-)
アンインストール情報からフォルダを取得
レジストリにあるアンインストール情報(「アプリケーションの追加と削除」で使われるやつです)からインストール先フォルダを取得します。最近はこの方法でフォルダを取得できるゲームが多いようです。
コントロールパネルの[アプリケーションの追加と削除]を開くと、インストールしたソフトの一覧が出てきますよね。その中から目的のゲームを探して、そこに表示されている名前(大抵はゲーム名と一緒でしょう)を登録情報にUninstallReg=
として追加します。例えばこんな感じです。
UninstallReg=こみっくパ〜ティ〜
大文字と小文字、全角半角などを厳密に区別するので注意が必要です(11)。
レジストリ内での、アンインストール情報の場所を直接指定することもできます。
UninstallReg=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\こみっくパ〜ティ〜
が、これはあまり意味がないかもしれません…
アンインストール情報からのフォルダ取得は、InstallShieldを使っているソフトでしか使えません。自前でアンインストーラーを用意しているソフトの場合は、フォルダの取得に失敗してエラーとなります。
- この例の場合、"こみっくパーティー"では駄目です。なぜだかわかりますか?
レジストリからフォルダを取得
windowsのレジストリに、インストール先のフォルダが記録されていることがあります。レジストリを覗くにはレジストリエディタ(windowsフォルダにあるregedit.exe)を使います。レジストリはWindowsのファイルシステムのような階層構造になっていて、フォルダにあたるものを「キー」、ファイルに当たるもの(つまり、キーの中にある各々のデータ)を「値」と呼びます。
さて、レジストリの中でゲームの情報がありそうなのはHKEY_CURRENT_USER
かHKEY_LOCAL_MACHINE
です。その下のSoftware\メーカー名\ソフト名
というキーを探してみてください。キーが見つかったら、その中の値を眺めて、ゲームをインストールしたフォルダ名を探します。見つかりましたか(12)?フォルダ名の最後に\記号は付いていてもいなくてもかまいません。ファイル名まで付いてるって?大丈夫、その場合は_inmmcnf.exeがファイル名を自動的に削ってくれます。:-)
レジストリからの情報を登録情報に追加するには、RegKey=
とValue=
という行を書き加えます。例えばHKEY_CURRENT_USER\Software\Leaf\ToHeart
というキーのDataDir
という値にフォルダの情報があったら、
RegKey=HKEY_CURRENT_USER\Software\Leaf\ToHeart Value=DataDir
この2行を登録情報に追加すればOKです。
値の名前が(標準)のときは、Value=
は省略するか、空にしておいてください。
- レジストリエディタの検索機能で、フォルダ名を片っ端から探していくのもいいかもしれません。
iniファイルからフォルダを取得
古いゲームでは、windowsフォルダにiniファイルを作成して、そこに情報を記録していることがあります。大抵はソフト名.iniかメーカー 名.iniというファイル名になっていると思います。ファイルの構造は_inmmcnf.iniと似たような感じで、例えばsizuku.iniにこんな記述があったら
[雫] SizukuDir=c:\game\leaf\sizuku
登録情報に以下の行を追加します。
INI=sizuku.ini Section=雫 Key=SizukuDir
登録情報ができたら
作成した登録情報を_inmmcnf.iniに追加して_inmmcnf.exeを起動し、パッチを実行してみましょう。グループ名やソフト名がリストボックスに正しく表示されていますか?インストール先フォルダをちゃんと取得できているようですか?パッチを当てるべきファイル名は合っていますか?
おめでとうございます!あなたは_inmm.dll対応ゲームを1つ増やしたのです。:-)さあ、登録情報を_inmm.dllサポート掲示板に書き込んで皆をハッピーにしてください。
ご報告いただいた登録情報は、以後のリリースの_inmmcnf.iniに追加されます。また、_inmm.dllの仕様変更などのために、こちらで登録情報に手を加える場合がありますのでご了承ください。