「open_the_indd」公開しました
初めての確定申告はどこに何を書いていいやら、よくわからん。MFクラウド確定申告を使ってて、それなりに入力は出来ているのだが。今のところ源泉徴収(前職の給与、事業の源泉所得税)分は全額戻ってくるはずなんだけどな。国税庁長官云々以前に、それだけの収入がなかったということさっ。
前置きはこれぐらいにして、そんな貧乏生活の中、「open_the_indd」というWindowsアプリケーションを作りました。これは一言でいうと、ものかのさん作Glee (for InDesign) のWindows版です。拡張子「indd」「indt」「indb」「indl」の関連付けを変更して、InDesignの代わりに起動します。起動すると、ファイルのバージョンを取得、インストールされている複数のInDesignの中から最適なバージョンのInDesignを起動するという、Gleeを指をくわえて見ていたWindowsユーザー待望のアプリケーションです。さらにうれしいことに無償です。Mac版が無償なのにWindows版が有償なのはちょっとということもありますが、実質2日ぐらいしかかかってないので、別にいいです。でももしよかったらカンパしてください。
使い方などは「open_the_indd」のページを見て頂くとして、ここでは技術的背景などを少し。おっとその前に命名はひなた(@hinatakobo)さんです。ありがとうございます。最初のテスターもしていただきました。
このアプリケーションの作り方はちょっと変わってまして、中身はVBScriptです。Windowsアプリケーションだと普通はVisualなんとかというアプリケーションで作るのですが、そのたぐいの製品は使っていません。でもVBScriptだと関連付けはできませんよねえ。そうなんです。そこで登場するのが「nandemoExe」というフリーソフトです。これはVBScriptやWindowsバッチファイルなどをexeに変換してくれる非常にありがたいアプリケーションです。使うのは今回が3回目。ESETが天敵でよく削除されます(^^;)が、しつこく除外パスに登録してようやく消されなくなりました。
元々InDesign CS Version Checkなんかがあるし、ドキュメントのバージョンをどこから取得するのかわからなかったので放っておいたんですが、ついにバージョンが書かれている場所を見つけたので、じゃあ作ろうかという感じです。
InDesign CS Version Checkでは多分履歴を見ていると思います。判定までの時間が遅いです。そうじゃなくて、ドキュメントの先頭すぐのところにバージョンが書かれています。30バイト目、34バイト目、38バイト目、もしかすると42バイト目もバージョン情報かもしれません(ドキュメントによっては1バイトずれているものもあります)。「open_the_indd」ではその3つの値を使って「ドキュメントのバージョン」としています。なので、他のアプリケーションとは得られるバージョンが違います(ものかのさんはどこを見てるんでしょうね←聞けない仲ではないのに聞いてない)。いくつか試したところ、この推測でおおむね間違いないようです。
インストールされているInDesignを取得する段階ではCS5/CS5.5で嵌まりました。他のバージョンではレジストリで
HKCR\InDesign.Application.CC.2017_J
などのようにバージョン別のキーを当たれば済むんですが、CS5/CS5.5はどちらも
HKCR\InDesign.Application.CS5_J
を使うんです。両方インストールされていると、後からインストールしたバージョンは取得できるんですが、先にインストールしたバージョンの情報が消えてなくなるわけですね。スタートメニューに残っていればレジストリのスタートメニュー項目を辿ればいいんですが確実ではない。仕方がないので、片方が見つかれば、その情報から、残りの方のインストール先を類推するという方法でやっています。なのでCS5とCS5.5のインストール先フォルダ名に全く類推できる点がない状態だと発見できず、インストールされていないと判断します。こればっかりはしょうがない。なので仕様です。
あ、そうそう、レジストリで
HKCR\InDesign.Application.CC.2017_J
のように日本語版の情報を取得しに行っているので、英語版とか他言語版がインストールされていても全く見てません。これも仕様です。ただし「2.0」「CS」「CC2018」は“_J”がついていないので、もしかすると取得できているかも、です。
2月26日 21:35 追記
ファイル名にスペースがあると、ファイルを開けない不具合を修正しました。再ダウンロードをお願いします。