Pull to refresh

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

Reading time 2 min
Views 6.2K
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. Бинарники
Спасибо за внимание.
Tags:
Hubs:
+43
Comments 58
Comments Comments 58

Articles