マイナーアップグレードのプロジェクトにて、アップグレード対象の旧インストーラに存在するファイルの削除を
行った場合、ビルド時のアップグレード検証にて以下の警告が表示されます。
---------------------------------------------------------------------------------------------------
ISDEV : error Val0001: ファイル [1] (ターゲットは [2]) がセットアップから削除されているようですが、
RemoveFile テーブルにリストされていません。RemoveFile テーブルが作成されない限り、このファイルは
アップグレードの実行時にターゲット マシンから削除されません。
---------------------------------------------------------------------------------------------------
[1] は、削除されたファイルの名前で、[2] は、このファイルのターゲット パスです。
※ 上記警告は[ツール]-[オプション]-[検証]タブで「パッチおよびアップグレード検証の実行する」がオンの時に、
[メディア]-[アップグレード]ビューで「マイナーアップグレードのエントリ」を作成したときに表示されます。
コンポーネントから既存ファイルの削除を行ったインストーラでマイナーアップグレードを実行すると、ターゲット
システム上に存在する旧バージョンの既存ファイルがアンインストール時に削除されません。
これは、新バージョンによりコンポーネントの情報が該当ファイルを含まない情報に更新されてしまうために発生
します。
マイナーアップグレード時にファイルの削除を行う場合は、RemoveFile Table を使用してアップグレードと同時に
該当ファイルの削除を行います。
[設定方法]
InstallShield 2014 以降のバージョンの場合
1. [セットアップのデザイン] ビューで、削除するファイルまたはフォルダーが含まれているコンポーネントの
[ファイル]ノードをクリックします
2. [ファイル] ペインを右クリックしてから [ファイルの削除を追加] をクリックします
3. [プロパティ] ダイアログ ボックスで、以下の設定を行います
ファイルをフォルダーから削除する: チェック
ファイル名: test.dll ※削除したいファイルのファイル名
削除のスケジューリング: コンポーネントのインストール
4. [ OK ]ボタンをクリックします
InstallShield 2013 以前のバージョンの場合
1. [ インストールデザイナ ]-[ 追加ツール ]-[ ダイレクト エディタ ]を選択します
2. 右に表示されるテーブルの一覧から[ RemoveFile ]テーブルを選択します
3. 画面上部の[新規作成]ボタンをクリックしてレコードを新規作成します。レコードの新規追加ダイアログにて、
以下の設定を行います
(InstallShield 2010 以前のバージョンでは、テーブルの最終行(Click here to add a new item の行)に直接入力)
Column Name | 入力例 | 説明 |
FileKey | FileKeyName1 | 一意となる任意の名前を指定します |
Component | NewComponent1 | 削除のトリガとなるコンポーネントを指定します(指定したコンポーネントが更新された場合、ファイルの削除が実行されます。) |
FileName | test.dll | 削除するファイル名を指定します。ワイルドカード(*.*)を指定することも可能です |
DirProperty | INSTALLDIR | 削除対象ファイルの含まれる階層を指定します |
InstallMode | 1 | 1を指定した場合、コンポーネントのインストール時にファイルの削除が実行されます |
※RemoveFile の詳細につきましては、MSI Help Library「RemoveFile Table」をご参照ください。
MSDN Library RemoveRile Table
3. 削除を行なうファイルが複数ある場合は、手順[3]を参考に、それぞれのファイルごとに[ RemoveFile ]テーブルへレコードを作成します
[参考]
マイナーアップグレードの詳細な設定方法につきましては、以下の FAQ をご参照ください。
ID:01473 マイナーアップグレードとメジャーアップグレードの作成方法