Как стать автором
Обновить

Упрощаем жизнь: сервис автораспаковки архивов на C#

Время на прочтение2 мин
Количество просмотров6.3K
hateЭто, конечно, не статья, а небольшая путевая заметка, но тем не менее. Так получилось, что 99% архивов попадают на мой компьютер, чтобы быть тут же распакованными, дабы добраться до их содержимого. И если в маке сафари сам это делает за меня, то в windows приходится каждый раз нажимать пункт в контекстном меню.

В какой-то момент мне это безумно надоело и я написал простой сервис, который распаковывает все самостоятельно. Мне он показался удобным и я решил поделиться с народом.


Как это выглядит


В системе есть сервис image

Сервис смотрит за указаными папками и следит за созданием в них файлов с заданными расширениями(по умолчание rar и zip, задается параметром Extentions). Как только файл появился — запускается winrar(можно настроить и другой архиватор), который их распаковывает.

Как это работает


Настраивается все через конфиг monitors.cfg в формате ini файла
[WinRar]
c:\Program Files\WinRAR\WinRAR.exe

[Folders]
c:\downloads
c:\distrib

Конфиг можно править на лету, сервис сам подгружает из него изменения, ничего перезагружать не надо.

За файловой системой следим через FileSystemWatcher
  1. foreach (var watcher in monitoringFolders.Where(Directory.Exists).Select(folder => new FileSystemWatcher(folder) {IncludeSubdirectories = true}))
  2. {
  3.   watcher.Created += WatcherHandler;
  4.   _watchers.Add(watcher);
  5. }
* This source code was highlighted with Source Code Highlighter.


Winrar запускается с ключами x -ad -o+ — распаковка в папку с таким же именем с заменой файлов.

Как установить

  • Скачать и распаковать отсюда.
  • Запустить install.bat из папки AE.Service под правами администратора. Он создаст сервис через sc create(кстати, кто-нибудь может мне ответить, почему я могу создавать/удалять сервисы только через командную строку?). А если хочется просто протестировать без установки, то есть простое консольное приложение в папке AE.Console.

Ссылки

  1. Исходники
  2. Бинарники
Спасибо за внимание.
Теги:
Хабы:
Всего голосов 61: ↑52 и ↓9+43
Комментарии58

Публикации

Истории

Работа

.NET разработчик
75 вакансий

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург