2013-07-30 21 views
6

このサイトのすべてのトピックをこのような問題で読んでいますが、必要なものは見つけられません。wix - 空でないフォルダを削除する方法

私は1つのプログラムの2つのバージョンが古いと新しいです。 古いバージョンでは、私はフォルダf1を持っています。 新しいバージョンでは、このフォルダf1はありません。

新しいプログラマーのインストーラーが古いバージョンを検出すると、この古いバージョンは削除されますが、フォルダーf1は削除されません。

新しいバージョンのインストーラからf1を削除するにはどうすればよいですか?

 <Component Id ="deleteall" Guid="AA11A32B-9E1E-458A-8C94-3EFEDA77E494" > 
     <RemoveFolder Id='iDocDir' On='both' /> 
     </Component> 

     <Directory Id="iDocDir" Name="iDocs"> 
     </Directory> 

あなたはRemoveFolderEx element in the UtilExtensionをチェックアウトする必要があります(

+0

メジャーアップグレードまたはマイナーアップグレードを行っていますか? –

答えて

11

=動作していない。それは正確に何をしたいん。Bob Arnson has blogged about it before.

<Component Id="deeletall" Guid="PUT-GUID-HERE"> 
    <util:RemoveFolderEx Id="RemoveiDocDir" On="uninstall" Property="iDocDir" /> 
</Component> 

それはRemoveFileテーブルに一時的rowesを書き込むことによって動作します。あります。ただし、マニュアルに記載されているように、これを使用する際の制限:

Windows InstallerのFile Costingに劇的に影響する可能性があるため、 CostInitialize標準 アクションの前に一時行を書き込む必要があります。残念ながら、後でCostFinalize アクションに入るまで、MSIはパッケージ内の ディレクトリ階層のプロパティを作成しません。

アンインストール中にフォルダを削除する典型的な使用例の簡単な回避策は、ディレクトリパスをレジストリに書き込んで、アンインストール中に をロードすることです。

カスタムアクションを使用してプロパティを設定する場合は、WixRemoveFoldersExカスタムアクションの前にスケジュールされた であることを確認してください。

ボブのポストで

も:

削除するディレクトリとファイルの追加などがMSIのファイル コストに影響を与え、RemoveFolderEx原価計算の前にそのことを行う必要があります。 残念ながら、MSIは、コスト計算が完了するまで、ターゲットディレクトリ のプロパティを設定しません。あなたは既にレジストリに(ロブはこのhereを行う方法について説明します)以前のインストールパスを保存する場合AppSearchアクションがCostInitialize前に実行されるよう

は、あなたが、いいですよ。

+0

警告:オン= "アンインストール"はアップグレードのフォルダも削除します。 – Simon

関連する問題