2012-01-24 4 views
0

IISにWCFがあります。 WCFはlog4netログを使用します。アンインストール時にログフォルダを削除する方法は? ログフォルダはターゲットフォルダにあります。アンインストール時にログフォルダを削除するには?

私は、コードのこの部分を使用します。

<Directory Id='Logs' Name='Logs'> 
    <Component Id="comp_iislogs" Guid="{0B0E2F6E-008D-42C9-8A7C-1F1265C077A1}" 
     SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no" 
     Win64="no" Location="either"> 
     <RemoveFile Id="Files" On="uninstall" Name="*.log"></RemoveFile> 
     <CreateFolder/> 
    </Component> 
    </Directory> 

問題は、ログファイルでは、アンインストールに使用されていると、アンインストーラがアプリなどを中止してくださいと言う...

答えて

0

MSIは、それが最初の中にコピーされたファイルのみを削除しますインストール。 アプリケーションによって生成されたログは、アンインストールプロセスによって認識されません。 つまり、削除するディレクトリに少なくとも1つのファイルが存在する場合、MSIはそのファイルをユーザーファイルとして処理し、その親ディレクトリを削除からスキップします。

ログディレクトリを削除するには、その内容を最初に強制的に削除する必要がありますが、対処したくないロックの問題が発生する可能性があるため、そのことをお勧めします。

+0

このスクリプトはフォルダとファイルを削除できますが、問題はログファイルを使用しているときです。アンインストールプロセス中です... – Oleg

1

ログファイルが開いているプロセスを強制終了する必要があります。それがWebアプリケーションの中にあれば、ハンドルがリリースされるためにはアプリケーションプールをリサイクルするだけで済むでしょう(私は思っています)。

これは、WiXスクリプト内からappcmd recycle apppool /apppool.name: <pool name>を使用して行うことができます。実際にはサイトを停止して再起動して、その時点で開かれる可能性を避けることができます。

0

WiXのUtil拡張のRemoveFolderEx要素を使用してください。 この方法では、すべてのサブディレクトリとファイルが削除されます。

例:

<util:RemoveFolderEx On="uninstall" Property="Logs" /> 

プレイスこのコンポーネントタグ内。

関連する問題