トップ 検索 一覧 ヘルプ RSS ログイン

Inno Setupでアップデータ作成の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!InnoSetupでアップデータ作成

これまでインストーラ関係は面倒で、[Exepress|http://www.webtech.co.jp/onlinesoft/exepress/download.html]くらいしか使用してなかったんですが、[[DVD Flick日本語版]]のインストールが面倒だという意見が多いので、やっと重い腰を上げました。

!!そもそもInno以外の選択は

インストーラを作成するに当たって、[Inno Setup|http://www.jrsoftware.org/isinfo.php]以外に[NSIS|http://nsis.sourceforge.net/]なんかも検討したんですが、決め手は2つありました。

+DVD Flick標準のインストーラがInno Setupであった。
+NSISのスクリプトが標準で貧弱すぎ(単純なif文もプラグイン無しでは煩雑)

Innoは日本語パスの扱いに問題があるような話を聞いたことがあるので微妙だったんですが、どうせFlickのパスに上書きならあまり関係ないか、と思うことにしました。

ちなみにInstall ShieldはVisual Studio 2000に付いてたものしか持っておらず、2009年現在で使用するのは若干気が引けます。さらに、複雑怪奇だという話を聞いているので、新たに購入する気も毛頭ありません(高価だし)。

!!本題のアップデータ

で、問題は、猫研版Flickはアップデータ的に動作するものなので、そこのところの整合が取れるのか不安です。Innoには[FAQ|http://www.jrsoftware.org/isfaq.php]がありますが、微妙に外れた項目しかありません。[knowledge base|http://www.jrsoftware.org/iskb.php]の方を見てみると、そのものズバリ、[HOWTO: Create an installation that is an "update" or "add-on" to an existing installation|http://www.jrsoftware.org/iskb.php?updateinstall]がありました。

要約すると、''AppId''を同じにすれば同じアプリケーションと見なすらしい。''UsePreviousAppDir=yes''とすれば前回のディレクトリが使用される。''CreateUninstallRegKey=no''で新たなアンインストール用のエントリをレジストリに作成せず、''UpdateUninstallLogAppName=no''でアンインストール用エントリの表示も更新しない。

実際、これだけで行けました。'''なんだ簡単'''。これでインストールしてみると、unins000.datのサイズが微妙に増えます。どうやらAppIdが同じなら追記して、アンインストール時には''まとめて処理''してくれるようです。

あ、UsePreviousAppDirだけでオリジナルのFlickと同じディレクトリが指定される確信は無かったので、ついでに''DisableDirPage''も付けときました。それからInitializeSetup()で対象バージョンのFlickがインストールされている事も確認しています。Pascalなんて初めて書きましたが。

!ただし

アップデータだけアンインストールできるようにする場合や、アップデータをインストール後にアンインストール用エントリの表示を変えたい場合は、上記は適度に変えるべきです。それからインストール時にバックアップを作成したい場合、FAQには以下のようにできるとあります。
 Source: "{app}\MyProg.exe"; DestDir: "{app}\backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall

猫研版では面倒なのでそこまでのケアはしませんでした。インストール時は上書きでアンインストール時は本家ごと根こそぎです。

!ちなみに

[Donut RAPT|http://rapt21.com/innosetup.php]さんがInno全般の参考になりますが、Innoのヘルプの英語はそんなに難しくないのでバリバリ読めます。