InnoSetupでアップデータ作成
これまでインストーラ関係は面倒で、Exepressくらいしか使用してなかったんですが、DVD Flick日本語版のインストールが面倒だという意見が多いので、やっと重い腰を上げました。
そもそもInno以外の選択は
インストーラを作成するに当たって、Inno Setup以外にNSISなんかも検討したんですが、決め手は2つありました。
- DVD Flick標準のインストーラがInno Setupであった。
- NSISのスクリプトが標準で貧弱すぎ(単純なif文もプラグイン無しでは煩雑)
Innoは日本語パスの扱いに問題があるような話を聞いたことがあるので微妙だったんですが、どうせFlickのパスに上書きならあまり関係ないか、と思うことにしました。
ちなみにInstall ShieldはVisual Studio 2000に付いてたものしか持っておらず、2009年現在で使用するのは若干気が引けます。さらに、複雑怪奇だという話を聞いているので、新たに購入する気も毛頭ありません(高価だし)。
本題のアップデータ
で、問題は、猫研版Flickはアップデータ的に動作するものなので、そこのところの整合が取れるのか不安です。InnoにはFAQがありますが、微妙に外れた項目しかありません。knowledge baseの方を見てみると、そのものズバリ、HOWTO: Create an installation that is an "update" or "add-on" to an existing installationがありました。
要約すると、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さんがInno全般の参考になりますが、Innoのヘルプの英語はそんなに難しくないのでバリバリ読めます。
最終更新時間:2009年07月19日 00時48分20秒