2011-03-06 10 views
1

私のアプリケーションには、ユーザーがアプリケーションをアンインストールしたときに保持する必要がある設定ファイルがあります。コンポーネントを使用してこれを行うことはできますか、カスタムアクションを使用する必要がありますか?WiX:アンインストール時にファイル名を変更しないでください

これは私がこれまでのところ(動作していない)したものである:

<Directory Id="INSTALLLOCATION" Name="_MyApp"> 
    <Component> 
    <File KeyPath="yes" Source="$(var.Source)\settings.ini" /> 
    </Component> 
    <Component Id="Backup" Guid="SOME-GUID"> 
    <Condition>REMOVE=ALL</Condition> 
    <CopyFile Id="settings.ini" Delete="no" SourceProperty="INSTALLLOCATION" DestinationProperty="INSTALLLOCATION" SourceName="settings.ini" DestinationName="settings.ini.bak" /> 
    </Component> 
</Directory> 

それが問題にした場合、これらのコンポーネントが属する:アクションMoveFilesが後に実行されるため

<Feature Id="Default" Level="1"> 
    <ComponentRef Id="settings.ini" /> 
    <ComponentRef Id="Backup" /> 
</Feature> 

私はこれが動作しないの疑いRemoveFilesを実行してから、移動する余地がないので、インストーラからsettings.iniを削除し、インストール後に手動でコピーしました。私はこの方法を考えていたiniファイルはRemoveFilesの後にまだそこにあり、それは名前が変更されます。さて、iniファイルは実際にそこにありますが、名前は変更されません。どんな考え?

答えて

1

Windowsインストーラには、ファイルのバックアップと復元のためのメカニズムが組み込まれていません。通常、解決策は、ファイルをコピーするカスタムアクションを使用することです。

私は、インストーラ からsettings.iniを取り出し、 インストール後に手動でコピーします。私はこの方法を考えていた RemoveFilesの後にiniファイルが残っていて、それがバックアップされます。 これは実際にはiniファイルですが、 はバックアップされません。

アンインストールログを作成し、MoveFilesを実行するとどうなるかを確認してください。補足として、インストール後にファイルを手動でコピーする方が、バックアップのカスタム動作よりも優れています。

+0

Cosmin、ご返信ありがとうございます。私は「バックアップ」という言葉を誤解しているかもしれません。「そのファイルのコピーを作成する」という意味だけです。私は後でそれを復元するつもりはありません。私は誤解を修正するために投稿を編集しました。ログファイルに関して、私はあなたが提案したことをしましたが、MoveFileでは何も起こりません。多分、コンポーネントの状態は間違っていますか? – Suiden

+0

ええ、私はそれを逃した。条件は、REMOVE = " ALL "である必要があります。それ以外の場合、 "ALL"文字列はプロパティとして扱われます。プロパティを扱うときは、すべての文字列値を引用符で囲む必要があります。 –

+0

ありがとう、これは知っているのは良いことです。残念ながらアンインストールではまだ何もしません。私は、コンポーネントの状態がアンインストール時に評価されるかどうか疑問に思っています...コードが正しいと仮定すると、おそらくそうではありません。 – Suiden

関連する問題