inno setupでデータを分ける方法

inno setupを使うと簡単にインストーラが作れます。詳しい説明は以下のページを参照してください。
吉里吉里/KAGゲームのインストーラの作り方(Windows 7対応)
今回の記事はこのページの説明を前提としています。

Flags: external

「おわりに」の部分に

同人レベルだったら、できればゲームファイルは纏めずにそのままCD-ROM上に配置して おけた方が、「最後の手段で手でコピーする」というのが使えてハッピーだと 思うが、まぁうん…そのくらいはいいか。

という記述がありますがinno setupでもファイルを纏めずにインストーラと別々にできます。KAICHOさんが知らなかったのか説明を省いたのか分かりませんが、特に理由がない限り別々にした方がいいです。

setup.exeのサイズが大きければ大きいほどインストーラの起動時間が長くなります。ひどい例だとsetup.exeをダブルクリックしてから一分待たないとインストール画面が出てこないこともあるようです。理由はsetup.exeにセキュリティソフトのウィルススキャンが入ったりするためです。他にもwindows側でも何かやっていた気がしますが詳細は忘れました。誰か知ってたら教えてください・・・・・・。

setup.exeとゲームデータを分ける方法はこのページに日本語で書いてあります。

前提の記事では[Files]が以下のようになっています。

[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}";

これを例えば以下のようにします。Flags: external; を付けるのと、ファイルの場所を{src}を使ってsetup.exeからの相対パスで指定するのがポイントです。

[Files]
Source: "{src}\data\我輩ゲーム.eXe"; DestDir: "{app}"; Flags: external;
Source: "{src}\data\data.xp3"; DestDir: "{app}"; Flags: external;
Source: "{src}\data\我輩ゲーム\plugin\*"; DestDir: "{app}\plugin"; Flags: external;
Source: "{src}\data\我輩ゲーム\savedata\*"; DestDir: "{app}\savedata"; Flags: external;
Source: "{src}\data\我輩ゲーム\readme.txt"; DestDir: "{app}"; Flags: external;

この例の場合は、setup.exeと同じフォルダにdataフォルダを作り、その中に我輩ゲーム.eXeなどを入れておけばいいです。インストール時にはそれらのファイルがインストール先フォルダにコピーされます。

この記事で言いたいことはここまでです。以下はお好みでどうぞ。

AppId

[Setup]でAppIdを指定した方がいいかもしれません。アプリケーションごとの固有のIDを指定します。デフォルトではAppNameと同じになっています。ゲーム名だけでは他と被る可能性が0ではありません。どこかに表示されたりはしないので適当に被らなそうな物を指定しましょう。ホームページがあればそのURLを使うのがいいです。
例えば以下のようにすると良いと思います。http://www.biscrat.com/の部分は自分のサイトのURLを使ってください。
AppId=http://www.biscrat.com/我輩ゲーム/

AllowRootDirectory

デフォルトの状態ではC:\やD:\にはインストールできないようになっています。[Setup]にAllowRootDirectory=yesという行を書いておくとできるようになります。

AllowNoIcons

[Setup]でAllowNoIcons=yesとすると、インストーラの中で「プログラムグループを作成しない」というチェックボックスが出てくるようになります。このチェックボックスにチェックを入れるとスタートメニューにショートカットが作られません。つまり、[Icons]のなかで{group}から始まるショートカットが無視されます。

デスクトップのショートカット

少し手間がかかりますが、デスクトップのショートカットの有無も選べるようにできます。

まず以下を追加します。これでインストーラの中で「デスクトップにショートカットを作成」というチェックボックスが出てくるようになります。

[Tasks]
Name: DesktopShortcut; Description: デスクトップにショートカットを作成;

さらに、[Tasks]の中のデスクトップにショートカットを作る行にはTasks: DesktopShortcut;を付けます。前提の記事の例では、以下のようになっている行です。

Name: "{commondesktop}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe";

これを以下に変更します。

Name: "{commondesktop}\我輩ゲーム"; Filename: "{app}\我輩ゲーム.eXe"; Tasks: DesktopShortcut; 

UninstallDelete

アンインストール時にはインストール時にコピーしたファイルのみが削除されます。よってゲーム起動後に新規作成されたセーブデータや吉里吉里設定ツールが作成するcfuファイルなどが削除されません。アンインストール時にそれらも削除するには[UninstallDelete]で削除するファイルを登録しなければなりません。

以下はセーブデータの保存先を %APPDATA%我輩ゲーム とした場合の例です。

[UninstallDelete]
Name: {commonappdata}\我輩ゲーム\krkr.console.log; Type: files;
Name: {commonappdata}\我輩ゲーム\krenvprf.kep; Type: files;
Name: {commonappdata}\我輩ゲーム\savecheck; Type: files;
Name: {commonappdata}\我輩ゲーム\*.bmp; Type: files;
Name: {commonappdata}\我輩ゲーム\*.ksd; Type: files;
Name: {commonappdata}\我輩ゲーム\*.kdt; Type: files;     
Name: {commonappdata}\我輩ゲーム\我輩ゲーム.cfu; Type: files;
Name: {commonappdata}\我輩ゲーム; Type: dirifempty;
Name: {userappdata}\我輩ゲーム\krkr.console.log; Type: files;
Name: {userappdata}\我輩ゲーム\krenvprf.kep; Type: files;
Name: {userappdata}\我輩ゲーム\savecheck; Type: files;
Name: {userappdata}\我輩ゲーム\*.bmp; Type: files;
Name: {userappdata}\我輩ゲーム\*.ksd; Type: files;
Name: {userappdata}\我輩ゲーム\*.kdt; Type: files;               
Name: {userappdata}\我輩ゲーム\我輩ゲーム.cfu; Type: files;
Name: {userappdata}\我輩ゲーム; Type: dirifempty;
Name: {app}\我輩ゲーム.cfu; Type: files; 

これでも削除されないファイルを見つけたら教えてください。

コメントを残す

メールアドレスが公開されることはありません。