2011年6月23日木曜日

Inno Setupにハマる

比較的柔軟な動作設定・定義ができるという点で使っているInno Setupだけれども、アンインストール動作で不穏な動作に遭遇した。結論から言えば、Inno Setup自体は問題なかった(仕様どおりの動作)のだけれども、あまり意識していないとハマる可能性があるので備忘録として残しておくことにした。

というのは、公開しているアプリのバージョンアップなどで、古いバージョンをインストールしたまま同じフォルダに上書きインストールしたときはアンインストール動作にも気を配ろう。
具体的に言うと、古いバージョンのときに指定した[UninstallRun]セクションの内容は、上書きインストールした新しいバージョンの[UninstallRun]セクションとともに、アンインストール情報ファイル"unins???.dat"に両方記録されている、という点である。つまり、上書きインストールを行ったアプリのアンインストール動作としては、

  1. 新バージョンで指定した[UninstallRun]セクション
  2. 旧バージョンで指定した[UninstallRun]セクション

の順で実行されるので、新しいバージョンでインストーラ/アンインストーラ関係のファイルを更新したり、動作を変更したりすると、上の2の動作のときにおかしくなる可能性がある。

これを回避する方法としては、


  1. 新旧バージョンでインストーラ/アンインストーラの動作を変更しないこと
  2. アンインストール動作を変更したとしても、旧形式でのアンインストール動作で不具合を起こさないように注意すること
  3. 新バージョンをインストールする際に、旧バージョンをアンインストールしてから新バージョンをインストールするようにユーザに喚起するか、新インストール側でそういう対策を行うこと
という方法が考えられる。

0 件のコメント:

コメントを投稿