2016-12-12 28 views
3

私はInstallshiled 2016を使用しています。MSI - メジャーアップグレード中にレジストリ値が変更されないようにする方法

メジャーアップグレードパッケージを作成しようとしています。レジストリ値は、アップグレード後に常にデフォルト値に戻されることを除いて、すべてうまく機能します。

シナリオは次のとおりです。新鮮な最初のインストールのインストール

  1. ユーザーはいくつかのレジストリ値を変更しました(ログ、サーバーのURLなどを有効にします)。
  2. メジャーアップグレードを実行しています。
  3. ユーザーによって変更されたレジストリ値は、デフォルト値に戻されます(インストーラによって設定されます)。

"Permanent"をyesに設定しようとしましたが、コンポーネントタブで "Never Overwrite"をyesに設定しようとしました。これはファイルでは有効ですが、レジストリ値では機能しません。

言い換えれば、元のパッケージ(新規インストール)は「永久」と「上書きしない」を「はい」に設定していないことです。私はそれだけ新しいパッケージで修正しました。だから私は最初のアップグレードは期待どおりに動作しないことを理解していますが、2番目のアップグレードからはうまくいくはずですが、そうではありません(ファイルの2番目のアップグレードからうまく機能します)。 新しいパッケージとしてアップグレードパッケージ( "Permanent"と "Never Overwrite"をyesに設定)をインストールしてアップグレードしようとすると、ファイルのレジストリ値に対してもうまく機能しません。

私には何が欠けていますか?アップグレード中

おかげ

答えて

1

、あなたはMSIプロパティに既存の値を読み取るためにAppSearch & RegLocatorテーブルを使用して、新しいMSIのレジストリテーブルにデフォルト値としてこれらのプロパティを使用することができます。この方法では、まだ値を削除して書き直していますが、アップグレード後にユーザーのデータは変更されません。

UPDATE:より完全な説明のためにこれを読んで - http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

+0

感謝。わたしにはできる。なぜこの "トリック"が必要なのか分かりません。 MSIは値を上書きすることはできません... – liorco

関連する問題