2012-01-24 5 views
0

У меня есть WCF в IIS. 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 удаляет только файлы, он копируется во начальное монтаж. Журналы, сгенерированные приложением, не распознаются процессом удаления. Другими словами, если хотя бы один файл существует в удаляемом каталоге, MSI будет рассматривать его как файл пользователя и пропустить его родительский каталог из удаления.

Для того, чтобы удалить каталог журналов, необходимо сначала удалить его содержимое, но я бы посоветовал это сделать, поскольку вы можете столкнуться с проблемами блокировки, с которыми вы не хотите иметь дело.

+0

Эта часть скрипта может удалить папку и файлы, но проблема в том, когда она пытается это сделать. Log4net все еще использует файл журнала. это во время процесса удаления ... – Oleg

1

Вам придется убить процесс, в котором открыт лог-файл! Если это что-то в веб-приложении, вам, вероятно, придется только перезагрузить пул приложений для дескриптора, который будет выпущен (я думаю).

Вы можете сделать это с помощью appcmd recycle apppool /apppool.name: <pool name> из ваших скриптов WiX. Возможно, вам захочется фактически остановить, а затем перезапустить сайт, но просто чтобы избежать любых шансов, что он будет открыт в то время.

0

Используйте RemoveFolderEx элемент от Util extension in WiX. При таком подходе все подкаталоги и файлы удаляются.

Пример:

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

Поместите этот внутри компонента тега.

Смежные вопросы