InstallShield

01004 : 複数言語対応 MSI のマイナーアップグレードが失敗する

複数言語対応のインストーラーでマイナーアップグレードを実行した際に、以下のような
2254 エラーで、マイナーアップグレードが失敗します。

------------------------------------------------------------------------------------------------------------------
Error 2254: Database: Transform: Cannot update row that doesn't exist. Table: Property
1: 2254 2: 3: Property
変換するときにエラーが発生しました。指定された変換のパスが有効であることを
確認してください。
------------------------------------------------------------------------------------------------------------------


対象プロジェクト:基本の MSI, InstallScript MSI




[概要]

2254 エラーは、キャッシュされているトランスフォームが破損している場合やトランスフォームを
正しく適用できなかった場合に発生するエラーとなります。

Runtime Error 2254

言語トランスフォームを使用する複数言語インストーラーで、マイナーアップグレードを実行した場合
に発生することがあります。

複数言語のインストーラーでは、デフォルト言語以外の言語実行時には MSI データベースに
言語のトランスフォームを適用してインストールを行います。
マイナーアップグレードの実行時には、MSI データベースは再キャッシュされて 新バージョンの
MSI データベースへ置き換えられますが、言語情報を持つトランスフォームはキャッシュされている
以前のバージョンのトランスフォームが適用されます。
このとき、旧バージョンで存在したレコードが新バージョンで存在しない場合、データベースに
存在しないレコードを更新しようとしてトランスフォームの適用に失敗します。

 

[回避方法]

本事象が発生する場合、以下のいずれかの方法で回避を行います。

(a)メジャーアップグレードを実行する
    本事象はマイナーアップグレードで発生する事象のため、アップデート方法をメジャーアップグレード
    へ変更します。

(b)エラーメッセージに表示されているテーブルで、欠損しているプロパティを追加する
    旧バージョン、新バージョンそれぞれのプロジェクトで、エラーに表示されているテーブル
    (例Property テーブル)の内容を比較します。
    プロジェクトを開き、[追加ツール]-[ダイレクトエディタ]でテーブルの内容を確認できます。
    旧バージョンに存在していて、新バージョンで存在していないエントリを検索し、新バージョンの
    テーブルにそのプロパティを追加します。


2006/03/09 14:12:20
2019/05/23 09:49:10