本ページでは、(Windows 7 にも対応した)吉里吉里/KAGのインストーラを作成する 方法について述べる。述べるというかもう一意に示しちゃう。なぜか インストーラに関する話題って殆ど無いんだよね、吉里吉里って。そりゃまぁ そんなに困るような話じゃないのかもしんないけど、でも最初のとっかかりが無いと 実際インストーラ作る時に困っちゃうし、ということで。
インストーラを自分で作ろうと思っている人には、可能な限りやめといた方がいいと 忠告したい。アナタが本当にやりたいことはゲームを作ることであって、 インストーラを作ることではないはずだ。 何のためにインストーラを作りたいのか?どうしても新規作成しないとダメなのか? 既存のもので代用できないのか?を常に考える。新規で作るということは、 作成・テストに手間がかかるということで、それだけ「余計」であることを 認識すること。
もちろん、なんとしても新規インストーラを作らねばならん、どうしてもXXという 機能が必要だから!ということであれば、新規にインストーラを作ることは止めない。 しかし、本当にその機能は必要なのか?についても、熟考すべし。
で、ここではさくさくと既存のものを使うことにする。 比較してるサイトもあるが、我輩はメジャーどころで Inno Setup 5を 使うことにした。テキストファイルベースなのでちょっと敷居は高いが、 日本語での解説サイトもあるし、 サンプルも色々くっついてきている。逆にテキストファイルベースだから 「作り方」の保存は楽だ。 Inno Setup 5は、インストールするファイルを一つの実行ファイルに纏めて くれるので、エンドユーザに対して使い方を明示する必要がない(要するに動かせって ことだな!と判る)というメリットもある。よしこれだ!
…正直、Inno Setup 5使うなら、 Gutchieさんのところの解説が非常に丁寧で纏まってると思う。 ここを読みなされ。さすればもうこの後読む必要まるでなし(いいのか)。 インストール方法なんかももうここでは説明しない(いいのか)。
本書では、ゲームのインストール仕様を以下のように決め、以下ではこれを実現 するためのスクリプトを書いたり解説したりする。
「吉里吉里/KAGはWindows7未対応」という話がある。まぁうん、確かに
本家の動作環境の対応OSにWin7はない。
本家がそういうのならそうなんだろう。
とはいえ、現在Win7はWindowsシェアでトップになりそうなイキオイなので、
それを無視するわけにはいかないという現実もある。
本家には是非早急にWin7対応を謳って頂きたいものだ。というか、Vista対応
謳っておいて7対応を謳わないのは、ただ確認が面倒だからとかそれだけの
理由なんじゃないだろうか…。なんか問題あるのかな。
で、じゃぁ実際Win7では動かないの?と聞かれると、64bit版を含め、
うん大体動く、ということが既に先達の実験により判っている。
Win Vista/7で困るのは、ずばりUAC(User Access Control)、主にデータファイルの 書き込み時に問題が発生する(他にもいくつか細かい不具合はあるが、 まぁそれは目をつぶることができなくもないのでここでは省略。詳細は最下部 参考URLをチェッキッタゥ)。
具体的には、「UACが有効なとき、または制限つきユーザが、C:Program files 以下に ゲームをインストールし、ゲームのセーブデータをゲームと同じ場所に保存する時」 に問題になる。Win2k/XPでもそうだが、 制限つきユーザは C:Program files 以下にファイルを作成することはできない、 Vista/7ではUACが有効だと一般ユーザもそゆことできなくなったため。 なんでMicrosoftはそういういろんなものの根幹に関わる変更をびっくりするくらい さくさく許してしまうのか。
これを解決する方法はいくつかある。
なお、 セーブデータの保存場所の変更方法はこちら。我輩は.cfファイルは作らない派。
ということで、ここまでの設定を満たす設定ファイルはこちら。 これをInno Setup 5のエディットウィンドウに貼り付けてbuildするだけで インストーラが完成する。これだけならInnoEditXは不要。 ただ、InnoEditXのscript欄にこれを貼り付ければ、どう設定しているかわかりやすく なるだろう。
[Setup] Compression=bzip/9 AppContact=master@keepcreating.com DefaultGroupName=我輩ゲーム AppVersion=1.00 AppPublisherURL=http://www.keepcreating.com/ AppUpdatesURL=http://www.keepcreating.com/update.html AppSupportURL=http://www.keepcreating.com/support.html AppPublisher=KeepCreating UninstallFilesDir={app} UninstallDisplayName=我輩ゲーム OutputDir=D:\同人ゲーム\我輩ゲーム\インストーラ OutputBaseFilename=setup DefaultDirName={pf32}\我輩ゲーム AppVerName=我輩ゲーム Ver 1.00 AppName=我輩ゲーム SetupIconFile=D:\同人ゲーム\我輩ゲーム\インストーラ\ゲームアイコン.ico WizardImageFile=D:\同人ゲーム\我輩ゲーム\インストーラ\インストーラ1.bmp WizardSmallImageFile=D:\同人ゲーム\我輩ゲーム\インストーラ\インストーラ2.bmp [Files] Source: "D:\同人ゲーム\我輩ゲーム\我輩ゲーム.eXe"; DestDir: "{app}"; Source: "D:\同人ゲーム\我輩ゲーム\data.xp3"; DestDir: "{app}"; Source: "D:\同人ゲーム\我輩ゲーム\plugin\*"; DestDir: "{app}\plugin"; Source: "D:\同人ゲーム\我輩ゲーム\savedata\*"; DestDir: "{app}\savedata"; Source: "D:\同人ゲーム\我輩ゲーム\readme.txt"; DestDir: "{app}"; [Icons] Name: "{group}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe"; Name: "{group}\アンインストーラ"; Filename: "{app}\unins000.exe"; Name: "{group}\ReadMe"; Filename: "{app}\readme.txt"; Name: "{commondesktop}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe"; [Languages] Name: "jp"; MessagesFile: "C:\Program Files\Inno Setup 5\Languages\Japanese.isl"; |
こうやって作成したインストーラバイナリが、Win2k(32bit)、WinXP(32bit)、 Win7(64bit)で共通してちゃんと動作することを確認している。
細かい説明は以下の通り。これらのパラメータが全て必ずしも必要なわけではないし、 他にも沢山細かい指定ができたりするんだけど、まぁそれはおいおい。 あと、{app}とか{group}、{pf32}などは定数。Inno Setup 5のヘルプで「Constants」を 引けば詳細説明が出てくるが、それは英語。日本語のは…うーん、InnoEditXで [Setup]タブの[デフォルトインストール先]右のボタン押して出てくるのを 参照してみては如何。個人的には{pf}じゃなくて{pf32}を指定すべき(吉里吉里には 64bit版がないので)だと思うのだがどうだろうか。
セクション(灰色)・パラメータ名 | 値の例 | 意味 |
---|---|---|
[Setup] | - | インストーラ全体で利用する一般的な値を設定するセクションの開始を表す |
Compression= | zip、bzip/9、lzma, noneなど | インストーラ内部の圧縮形式を指定する。圧縮しなければ指定不要 |
AppContact= | a@b.com | コンタクト先メールアドレスを指定する。指定されていると、 「プログラムの追加と削除」のところに「サポート情報を参照するには、ここをクリックしてください」というリンクが現れ、押すとサポート情報として表示される。 |
DefaultGroupName= | 我輩ゲーム | グループ名を指定する。Windowsのスタートメニューに登録する時のフォルダ名だと思って頂ければ。 |
AppVersion= | 1.00 | ゲームバージョンを指定する。ただ、通常ゲームは全体バージョンアップせず、 パッチ形式でバージョンアップしていくので、これは逆に指定しない方がいいかも しれない。 |
AppPublisherURL= | http://www.keepcreating.com/ | サークルのホームページを指定する。指定されていると(以下AppContactと同じ) |
AppUpdatesURL= | http://www.keepcreating.com/update.html | サークルの製品更新ページを指定する。指定されていると(以下AppContactと同じ) |
AppSupportURL= | http://www.keepcreating.com/support.html | サークルのサポートページを指定する。指定されていると(以下AppContactと同じ) |
AppPublisher= | KeepCreating | サークル名を指定する。指定されていると(以下AppContactと同じ) |
UninstallFilesDir= | {app} | インストール後にアンインストーラ(unins*.*)が設置される場所を指定する。 |
UninstallDisplayName= | 我輩ゲーム | 「プログラムの追加と削除」に表示される名前 |
OutputDir= | D:\同人ゲーム\我輩ゲーム\インストーラ | インストーラの作成先を指定。もちろん、作成後のインストーラは任意に移動してよい。 |
OutputBaseFilename= | setup | 作成するインストーラのファイル名(.exeを除く) |
DefaultDirName= | {pf32}\我輩ゲーム | インストール先のデフォルトフォルダ名。{pf}だと64bit版Win7なんかに インストールした時にもC:Program Files\ ... に変換されるが、{pf32}だと C:Program Files(x86)\ ... に変換される。WinXP 32bit だとちゃんと C:Program Files\ ... になるので、まぁうんこう書いておけばいいかなー、と。 |
AppVerName= | 我輩ゲーム Ver 1.00 | バージョン名を含むゲーム名を指定。指定されていると 「プログラムの追加と削除」で表示されるプログラム名となる。あとインストール する時にダイアログに表示するプログラム名もこれに。 |
AppName= | 我輩ゲーム | ゲーム名を指定する。いろんなところで使用されるので間違えると恥ずかしい。 |
SetupIconFile= | D:\同人ゲーム\我輩ゲーム\インストーラ\ゲームアイコン.ico | インストーラのアイコンを指定する。 |
WizardImageFile= | D:\同人ゲーム\我輩ゲーム\インストーラ\インストーラ1.bmp | インストーラの最初の画面で左側に表示される縦長画像を指定する。 サイズが164x314dotと決まっているので注意。 詳細はここいらへん。 |
WizardSmallImageFile= | D:\同人ゲーム\我輩ゲーム\インストーラ\インストーラ2.bmp | インストーラの右肩に表示される画像を指定する。 サイズが55x58dotと決まっているので注意。 詳細はここいらへん。 |
[Files] | - | インストールするファイルをリストする。Source:が現在ファイルが存在する 場所、DestDirがインストール先フォルダ。 |
Source: "D:\同人ゲーム\我輩ゲーム\我輩ゲーム.eXe"; DestDir: "{app}"; Source: "D:\同人ゲーム\我輩ゲーム\data.xp3"; DestDir: "{app}"; Source: "D:\同人ゲーム\我輩ゲーム\plugin\*"; DestDir: "{app}\plugin"; Source: "D:\同人ゲーム\我輩ゲーム\savedata\*"; DestDir: "{app}\savedata"; Source: "D:\同人ゲーム\我輩ゲーム\readme.txt"; DestDir: "{app}"; |
この例では、5つのファイル・フォルダを、{app}(=インストール先)に ディレクトリ構成を保ったままインストールする。 | |
[Icons] | - | Iconsという名前だが、要するにインストール後にショートカットをどう 作成するかを指定する。 |
Name: "{group}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe"; Name: "{group}\アンインストーラ"; Filename: "{app}\unins000.exe"; Name: "{group}\ReadMe"; Filename: "{app}\readme.txt"; Name: "{commondesktop}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe"; |
この例では、以下の二つを実施する。
|
|
[Languages] | - | インストーラの表示言語を決める。最初から日本語で表示させたいなら必須。 |
Name: "jp"; MessagesFile: "C:\Program Files\Inno Setup 5\Languages\Japanese.isl"; |
インストーラが日本語で表示されることを指定。 |
あとは、CD-RなりDVD-Rなりの上に、上で作成したインストーラ(上の例ではsetup.exe)と、以下のような内容のautorun.infファイルを配置するだけ。これで、CD-R/DVD-R挿入 したらオートランしてインストーラが起動するディスクが出来上がる。簡単ね!
[autorun] open=setup.exe icon=setup.exe |
Win Vista/7とかだと、インストーラが起動されるときに「なんやらファイル書き換え そうなツールが動くけどええかのぅ?続けるなら管理者権限必要じゃけぇどのぅ」 みたいなダイアログが表示されるが、 もうこれはOSレベル(本当はshellレベルだと思う)で 避けられないので対策はしない。マニュフェスト書いたら云々みたいな話はあるが、 我輩はそんなの書かないでユーザに色々知らせた方がいいんじゃないか派。
うん、Inno Setup 5、便利だ!ちょっと捻ろうと思ったら なんかPascal(うわー懐かしー)っぽい言語で色々書く必要があるそうだが、 まぁそこまでやらなくてもそれっぽいものはごく簡単に作れるということで。 同人レベルだったら、できればゲームファイルは纏めずにそのままCD-ROM上に配置して おけた方が、「最後の手段で手でコピーする」というのが使えてハッピーだと 思うが、まぁうん…そのくらいはいいか。
2015/11/24追記。
こちらでご指摘頂いたとおり、ゲームファイルを纏めずにそのままCD-ROM上に
配置することはできる。確かに上の書き方は誤解を招く表現で、
これを見て「できないんだー」と思ってしまった方々には本当に申し訳ない。
伏してお詫び申し上げる所存…。
一方、インタァネットの集合知が有効に機能してることには
感動を禁じえない。指摘歓迎!