2016-07-28 9 views
1

私はconfig.iniをコピーし、ユーザにiniファイルに挿入される値を問い合わせるインストーラを作成しました。これは新規インストールとメジャー/マイナーアップグレード時にうまく動作します。WiXインストーラは修復時に設定ファイルの値を削除します

<Component Id="ConfigIni" Guid="GUID-GOES-HERE" DiskId="1"> 
    <File Id="ConfigIniFile" 
      Name="config.ini" 
      Source="../../artefacts/etc/template-config.ini" 
      KeyPath="yes"/> 
    <IniFile Id="ValueOne" 
      Action="addLine" 
      Directory="ETC" 
      Section="sectionone" 
      Name="config.ini" 
      Key="valueone" 
      Value="[VALUEONEPROPERTY]" /> 
    <IniFile Id="ValueTwo" 
      Action="addLine" 
      Directory="ETC" 
      Section="sectiontwo" 
      Name="config.ini" 
      Key="valuetwo" 
      Value="[VALUETWOPROPERTY]" /> 
</Component> 

ただし、既にインストールされている製品の同じバージョンをインストールしようとすると、インストーラは修復モードに入ります。修復モードの仕組みがわからないのですが、config.iniファイルの場合は、値が移入されたファイルを削除して再コピーしているように見えます。 config.iniファイルがあるので、ファイルは空白です。

修復時にこのファイルを無視するようにインストーラを設定する方法はありますか、元のユーザーの値を取得する方法はありますか?

+0

[WIX。どのように修復中に機能を再インストールしないのですか?](http://stackoverflow.com/questions/28816058/wix-how-to-not-reinstall-a-feature-during-repair) – Vanita

+0

重複していない可能性があります。あなたがリンクしている質問は、これと比較してかなり混乱しているようです。 – Wolf

答えて

2

基本的な問題は、プロパティ値が保持されないことです。インストールと修復(または新しい機能の追加など)の間にプロパティの値を自動的に保存する魔法はありません。問題は、Windowsがユーザーデータで変更されたファイルを置き換えないため、ファイルが置き換えられているということではありません。

WiXでは、プロパティの値を保存して、これらのメンテナンスケースで復元されるように、"remember property" patternを使用します。

関連する問題