Both sides previous revision Previous revision Next revision | Previous revision |
linux_faq:настройка_wiasane_sane [2016/06/03 09:45] – [Установка устройств HP] mike | linux_faq:настройка_wiasane_sane [2019/05/14 07:52] (current) – admin |
---|
| ====== Задача ====== |
| У меня была задача - сделать **скан-сервер** (по аналогии с принт-сервером) для **Windows**-клиентов. То есть сервер, который бы предоставлял пользователям доступ к сканерам по сети. В результате должен получиться единый унифицированный интерфейс доступа к сканерам. \\ |
| На клиентских машинах прописывается подключение к сканеру на скан-сервере с помощью унифицированного драйвера. А на скан-сервере уже подключение к физическому устройству с использованием драйвера, специфичного для данного устройства. Таким образом, даже физическая замена сканера на другое устройство будет приводить только к необходимости переконфигурирования устройства на скан-сервере, но не на клиентах.\\ |
| В частности - было необходимо, чтобы пользователи фермы **Citrix XenApp** могли сканировать с сетевых (Ethernet) сканеров (МФУ HP). То есть на каждом терминальном сервере должны быть установлены все сканеры, а пользователь получал бы доступ к одному из них (или нескольким) в зависимости от того, включен он в группу, соответствующую этому сканеру. \\ |
| |
| ====== Архитектура и компоненты ====== |
| В качестве программной части скан-сервера выступает [[http://www.sane-project.org/|SANE]], который предоставляет унифицированный интерфейс для доступа к разнообразным сканирующим устройствам. \\ |
| В качестве унифицированного драйвера для Windows выступил [[https://github.com/mback2k/wiasane|WIASANE]]. Это драйвер для Windows, позволяющий сканировать по протоколу **SANE**. В системе устанавливается **WIA (Windows Image Acquisition)** устройство, обращения к которому перенаправляются к устройству по протоколу **SANE**. |
| |
| ====== Настройка скан-сервере SANE ====== |
| |
| ===== Установка SANE на Ubuntu 14.04 ===== |
| |
| sudo apt-get install sane sane-utils libsane-extras |
| |
| Затем как предписывает документация нужно проверить тут http://www.sane-project.org/sane-mfgs.html, что сканнер поддерживается и включить в файле **/etc/sane.d/dll.conf** соответствующий **backend** (раскомментировав нужную строку). |
| После этого включаем sane в режим сервера. В файлике **/etc/default/saned** прописываем: |
| # Set to yes to start saned |
| RUN=yes |
| |
| И прописываем сеть из которой будет доступен демон **saned** в файлике: **/etc/sane.d/saned.conf**. |
| Там можно указать как отдельный хост, так и целую сеть. Для того, чтобы дать доступ к saned с любого IP-адреса нужно добавить строку с одним символом **+** (плюсик). |
| |
| Мне нужно настроить работу SANE с МФУ HP M521 и 1536. |
| Поэтому - ставим модуль **libsane-hpaio**, который будет работать с сетевым интерфейсом **hpaio**: |
| sudo apt-get install libsane-hpaio |
| Если нужного модуля нет, то в дальнейшем команда **scanimage -L** будет вываливаться с ошибкой **Segmentation fault (core dumped)**. |
| |
| На всякий случай проверяем наличие в файлике **/etc/services** строки: |
| sane-port 6566/tcp sane saned # SANE |
| |
| |
| ===== Тестирование SANEd ===== |
| Во первых - можно включить тестовый бекенд **test**. Для этого в файлике **/etc/sane.d/dll.conf** нужно раскомментировать/добавить строку **test**. В результате сервер начнет отдавать пару сканеров: |
| device `net:localhost:test:0' is a Noname frontend-tester virtual device |
| device `net:localhost:test:1' is a Noname frontend-tester virtual device |
| |
| Если сервер sane работает как-то не так, то можно запустить его в режиме дебага, в котором он будет выдавать много полезной информации. Для начала нужно остановить его командой: |
| sudo /etc/init.d/saned stop |
| И запустить в debug-режиме: |
| sudo /usr/sbin/saned -d |
| Или в более подробном варианте: |
| sudo /usr/sbin/saned -d128 |
| |
| C какой-либо рабочей станции с Linux (на которой установлены **sane sane-utils libsane-extras**) можно попробывать подключиться к saned: |
| scanimage -d net:<ip adderss of saned>:test -T |
| Если все хорошо, то вывод будет примерно такой: |
| scanimage: scanning image of size 157x196 pixels at 8 bits/pixel |
| scanimage: acquiring gray frame, 8 bits/sample |
| scanimage: reading one scanline, 157 bytes... PASS |
| scanimage: reading one byte... PASS |
| scanimage: stepped read, 2 bytes... PASS |
| scanimage: stepped read, 4 bytes... PASS |
| scanimage: stepped read, 8 bytes... PASS |
| scanimage: stepped read, 16 bytes... PASS |
| scanimage: stepped read, 32 bytes... PASS |
| scanimage: stepped read, 64 bytes... PASS |
| scanimage: stepped read, 128 bytes... PASS |
| scanimage: stepped read, 256 bytes... PASS |
| scanimage: stepped read, 255 bytes... PASS |
| scanimage: stepped read, 127 bytes... PASS |
| scanimage: stepped read, 63 bytes... PASS |
| scanimage: stepped read, 31 bytes... PASS |
| scanimage: stepped read, 15 bytes... PASS |
| scanimage: stepped read, 7 bytes... PASS |
| scanimage: stepped read, 3 bytes... PASS |
| |
| На рабочей станции с Linux можно прописать адрес сервера **saned**, чтобы команда **scanimage** знала откуда брать сканеры. Для этого редактируем файлик **/etc/sane.d/net.conf** и в конец дописываем IP-адрес сервера **saned**. |
| |
| |
| |
| ===== Установка устройств HP ===== |
| Для работы с устройствами HP нужен пакет **HPLIP** (HP Linux Imaging and Printing System). Его можно либо скачать с сайта HP, либо из репозиториев Ubuntu. На Ubuntu 14.04.02 я устанавливал из репозиториев. |
| sudo apt-get install hplip |
| Поставилась версия 3.14.3 и с ней удалось сканировать по сети через **saned** с клиента Ubuntu. |
| |
| С сайта HP можно скачать гораздо более новую версию, но с ней у меня так и не получилось сканировать по сети через **saned**. Но на всякий случай: |
| Скачиваем HPLIP - http://hplipopensource.com/hplip-web/gethplip.html |
| Скачиваем и ставим. Ставить рекомендуют под обычным пользюком (не под root): |
| wget http://vorboss.dl.sourceforge.net/project/hplip/hplip/3.15.7/hplip-3.15.7.run |
| chmod a+x hplip-3.15.7.run |
| ./hplip-3.15.7.run |
| Запускать инсталлер можно под обычным юзером. В процессе установки он попросит пароль чтобы выполнить установку от имени root. |
| |
| Если в интернет система выходит через proxy, то нужно объявить об этом до установки: |
| export http_proxy=http://host.com:port/ |
| export ftp_proxy=http://host.com:port/ |
| export no_proxy=.domain.com |
| export HTTP_PROXY=http://host.com:port/ |
| export FTP_PROXY=http://host.com:port/ |
| А также прописать **http_proxy**, **https_proxy** и **ftp_proxy** в файлике **/etc/wgetrc** |
| |
| А после установки нужно установить плагины: |
| hp-plugin -i |
| А затем установить принтер/сканер: |
| sudo hp-setup -i -a <ip address of printer> |
| Теперь сканер должен появляться при выполнении команды: |
| scanimage -L |
| Если там его нет, то генерируем URI для этого сканера. Делать это необязательно, но во многих мануалах это действие присутствует: |
| hp-makeuri <ip address of printer> |
| В выдаче будет строка типа: **hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1** |
| Для поверки состояния сканера берем строку с URI сканера и подставляем в команду: |
| scanimage --device=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1 -T |
| В результате должны вывалиться результаты тестов: PASSED. |
| |
| Команда |
| scanimage -L |
| Должна выдавать список сканеров. Если она этого не делает, возможно, дело в файлике **/etc/cups/printers.conf**. В нем нужно заменить значение параметра **DeviceURI**. Там может быть либо что-то про **socket**, а должно быть то что возвращает команда **hp-makeuri** в строчке CUPS URI. Что-то типа **hp:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1**. После правки этого файла нужно перезапустить **cups**: |
| sudo /etc/init.d/cups restart |
| |
| Теперь сканировать на сервере saned из командной строки можно так: |
| scanimage --device "hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1" --mode Color --resolution 300 > ~/scan.jpg |
| |
| Если списка сканеров нет совсем или там нет нужного. то можно включить дебаг: |
| SANE_DEBUG_NET=128 SANE_DEBUG_DLL=128 scanimage -L |
| |
| Сканировать с клиента Linux можно командой: |
| scanimage --device "net:10.50.6.218:hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1" --mode Color --resolution 300 > ~/scan.jpg |
| Тут укаываем, что используем бекэнд **net**, затем через двоеточие адрес сервера **saned** и затем **URI** сканера.\\ |
| \\ |
| Иногда бывает, что сканер поставился, но при попытках сканировать сообщает: **Error during device I/O**. Вероятно нужно удалить его и поставить снова. |
| |
| ===== Удаление принтера-сканера ===== |
| Обычно на сервере сканирования устанавливается несколько принтеров одинаковой модели. Для того, чтобы узнакть какой именно принтер надо удалить - открываем файлик **/etc/cups/printers.conf** и ищем по IP-адресу как именно называется устройство. |
| sudo cat /etc/cups/printers.conf |
| sudo hp-setup -i -r |
| |
| ====== Настройка фронтэндов под Windows ====== |
| ===== WiaSane ===== |
| **wiasane** - это обертка для **sane**, которая предоставляет WIA интерфейс к сканерам **saned**. \\ |
| Настроить wiasane (0.1.1.9) с устройствами **hpaio:/net/...** удалось только после патчинга драйверов **HPLIP**. Со стандартным драйвером программа пытается получать список сканеров с сервера **sane**, но сервер не отдает эти устройства. Помогает патчинг драйвера. Смотри ниже. \\ |
| Рабочая сборка - {{:linux_faq:sane_wia_driver.zip|}}. Она доработана для того, чтобы прописывать сканеры скриптом. |
| Если возникают проблемы с установкой драйвера (он просто не ставится), то скорее всего не установлен [[https://www.microsoft.com/en-us/download/confirmation.aspx?id=30679|Visual C++ Redistributable for Visual Studio]] \\ |
| |
| Скрипт для пакетного прописывания сканеров такой: |
| <code>devsane.exe device uninstall wiasane.inf |
| devsane.exe driver uninstall wiasane.inf |
| devsane.exe driver install wiasane.inf |
| del /f /q "c:\Program Files\SANE WIA Driver\_device install.log" |
| |
| devsane.exe device install wiasane.inf -x=1 "-f=M1530 Gilyar 6" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.90.32.74 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M1530 Gilyar 7" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.90.32.6 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Volokolamsk" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.166.243.200 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 PavlPosad" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 ul.Dm.Ulyanova" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.204.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Schelkovo" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.234.3 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Orehovo-Zuevo" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.207.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Kolomna" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.225.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Kozhuhovo" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.226.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Chehov" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.211.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Kashira" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.237.10 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Lobnya" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.223.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Podolsk" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.214.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Shatura" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.244.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Klin" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.209.3 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Noginsk" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.215.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Egor'evsk" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.229.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Zheleznodorozhnyj" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.239.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 B.Tishinskiy" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.206.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Balashiha" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.233.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Mytishi" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.217.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Lubertsy" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.221.2 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| devsane.exe device install wiasane.inf -x=1 "-f=M521 Zvenigorod" -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.218.1 -u= -s= "-l=c:\Program Files\SANE WIA Driver\_device install.log" |
| </code> |
| ===== SaneWinDS ===== |
| Может сканировать. Удается вставить URI сканера в соотвествующее поле и сканировать. Но сам фронтенд (версия 0.9.5589) пока что очень убогий и годится только для тестов. |
| |
| ===== SwingSane ===== |
| Не удалось. |
| |
| ====== Патчим драйвер hplip чтобы работали сканеры net:_saned_IP_:hpaio:/net/HP_ ====== |
| Если при попытке прописать сканер **wiasane** не обнаружвает сканер, то, скорее это связано с багом в библиотеках **hplip** на сервере saned. Исправить ситуацию можно собрав **hplip** из исходников и применив патч, описанный тут: https://sourceforge.net/p/hplip/mailman/message/2564768/ \\ |
| |
| Останавливаем **saned**:<code>sudo /etc/init.d/saned stop</code> |
| Удаляем старый **hplip**:<code>sudo apt-get remove hplip</code> |
| Cкачиваем исходники драйвера: <code>wget http://downloads.sourceforge.net/project/hplip/hplip/3.15.7/hplip-3.15.7_py2.5.tar</code> |
| Рядом с распакованным архивом кладем патч {{:linux_faq:hplip_sane_patch_and_make.rar|}} (**hplip-sane-patch.sh** и **hplip-sane-patch.diff**) распаковываем и применяем его:<code>chmod a+x ./hplip-sane-patch.sh && ./hplip-sane-patch.sh</code> |
| |
| Дальше собираем по инструкции:<code>http://hplipopensource.com/hplip-web/install/manual/distros/ubuntu.html</code> |
| Для **Ubuntu 14.04** будет так: |
| Ставим зависимости:<code>sudo apt-get install --assume-yes build-essential avahi-utils libcups2 cups libcups2-dev cups-bsd cups-client libcupsimage2-dev libdbus-1-dev build-essential ghostscript openssl libjpeg-dev libsnmp-dev snmp-mibs-downloader libtool libusb-1.0.0-dev wget policykit-1 policykit-1-gnome python3-dbus python3-gi python3-dev python3-notify2 python3-pil python3-pyqt4 gtk2-engines-pixbuf python3-dbus.mainloop.qt python3-reportlab python3-lxml libsane libsane-dev sane-utils xsane</code> |
| Конфигурим:<code>./configure --with-hpppddir=/usr/share/ppd/HP --libdir=/usr/lib --prefix=/usr --enable-qt4 --disable-libusb01_build --enable-doc-build --disable-cups-ppd-install --disable-foomatic-drv-install --disable-foomatic-ppd-install --disable-hpijs-install --disable-udev_sysfs_rules --disable-policykit --enable-cups-drv-install --enable-hpcups-install --enable-network-build --enable-dbus-build --enable-scan-build --enable-fax-build</code> |
| Компилим:<code>make</code> |
| Ставим:<code>make install</code> |
| Затем ставим плагин: |
| hp-plugin -i |
| И собственно принтер/сканер: |
| sudo hp-setup -i -a <ip address of printer> |
| |
| Теперь можно запустить **saned**, настроить на клиенте backend net и проверяем с удаленного клиента:<code>sudo /etc/init.d/saned start</code> |
| |
| И на клиенте проверяем:<code>scanimage -L</code> |
| |
| ====== Прописываем пользователям сканеры в NAPS2 в соответствии с группами AD ====== |
| Для сканирования я применяю бесплатную опенсорсную утилитку **NAPS2** - http://sourceforge.net/projects/naps2/ \\ |
| Если на терминальном сервере много сканеров, то пользователю неудобно выбирать каждый раз нужный. |
| Можно создавать профили **NAPS2** в зависимости от того, в какие группы входит пользователь.\\ |
| Каждому сканеру сопоставлена групппа. Если пользовтаель входит в группу - ему пропишется нужный сканер. Названия групп и сканеров разные, потому что группы изначально использовались для прописывания принтеров. Но можно сделать их одинаковыми и тогда скриптец немного упростится. \\ |
| Вот этот скриптец VBS для прописывания сканеров в **NAPS2**: |
| <code>Dim dicScanGroups, arrGroups |
| Set dicScanGroups = CreateObject("Scripting.Dictionary") |
| 'Заполняем словарь групп-сканеров. |
| ''''''''''''''''''''Key - имя группы, Value - имя сканера |
| dicScanGroups.Add "Prn_1536_Gilyar6","M1530 Gilyar 6" |
| dicScanGroups.Add "Prn_1536_Gilyar7","M1530 Gilyar 7" |
| dicScanGroups.Add "Printer_Chehov_M521","M521 Chehov" |
| dicScanGroups.Add "Printer_Egorevsk_M521","M521 Egor'evsk" |
| dicScanGroups.Add "Printer_Kolomna_M521","M521 Kolomna" |
| dicScanGroups.Add "Printer_Podolsk_M521","M521 Podolsk" |
| dicScanGroups.Add "Printer_Scholkovo_HP_MFP","M521 Schelkovo" |
| dicScanGroups.Add "Printer_B_Tishinskiy_M521","M521 B.Tishinskiy" |
| dicScanGroups.Add "Printer_Balashiha_M521","M521 Balashiha" |
| dicScanGroups.Add "Printer_ul.Dm.Ulyanova_HP521","M521 ul.Dm.Ulyanova" |
| dicScanGroups.Add "Printer_Lobnya_M521","M521 Lobnya" |
| dicScanGroups.Add "Printer_Lubertsy_M521","M521 Lubertsy" |
| dicScanGroups.Add "Printer_Mytishi_M521","M521 Mytishi" |
| dicScanGroups.Add "Printer_Pavlovskiy_Posad_M521","M521 PavlPosad" |
| dicScanGroups.Add "Printer_Volokolamsk_M521","M521 Volokolamsk" |
| dicScanGroups.Add "Printer_Zvenigorod_M521","M521 Zvenigorod" |
| dicScanGroups.Add "Prn_HP521_Zheleznodorozhnyj","M521 Zheleznodorozhnyj" |
| dicScanGroups.Add "Printer_Kashira_M521","M521 Kashira" |
| dicScanGroups.Add "Prn_Klin_M521","M521 Klin" |
| dicScanGroups.Add "Prn_M521_Noginsk_def","M521 Noginsk" |
| dicScanGroups.Add "Printer_Orehovo-Zuevo_M521","M521 Orehovo-Zuevo" |
| dicScanGroups.Add "Printer_Shatura_M521","M521 Shatura" |
| |
| arrGroups = dicScanGroups.Keys |
| |
| Dim intCount, strGroup, ScannerName, ScanerDevName, ScannerID |
| Dim objDeviceManager, i, objFSO, ProfileFile, DesktopPath |
| |
| Set objUser = CreateObject("ADSystemInfo") |
| Set CurrentUser = GetObject("LDAP://" & objUser.UserName) |
| strGroup = LCase(Join(CurrentUser.MemberOf)) |
| |
| Set objFSO = CreateObject("Scripting.FileSystemObject") |
| |
| Set Shell = CreateObject("WScript.Shell") |
| Set DeviceManager = Wscript.createObject("WIA.DeviceManager") |
| |
| 'создаем папку и файл %APPDATA%\NAPS2\profiles.xml |
| Call Shell.Run("%COMSPEC% /c mkdir ""%APPDATA%\NAPS2""",0,true) |
| ''objFSO.CreateFolder(Shell.expandEnvironmentStrings("%APPDATA%") & "\NAPS2") |
| Set ProfileFile = objFSO.CreateTextFile(Shell.expandEnvironmentStrings("%APPDATA%") & "\NAPS2\profiles.xml", True) |
| ProfileFile.WriteLine "<?xml version=" & """" & "1.0" & """" & "?>" |
| ProfileFile.WriteLine "<ArrayOfExtendedScanSettings xmlns:xsi="&""""&"http://www.w3.org/2001/XMLSchema-instance"&"""" & " xmlns:xsd="&""""&"http://www.w3.org/2001/XMLSchema"&""""&">" |
| |
| 'Перебираем группы из словарика и и если группа есть у пользюка то |
| For intCount = 0 to dicSCanGroups.count - 1 |
| ScannerName = dicScanGroups.Item(arrGroups(intCOunt)) |
| If InStr(strGroup, lcase(arrGroups(intCount))) Then |
| 'Создаем ярлык на утилитку сканирования |
| DesktopPath = Shell.SpecialFolders("Desktop") |
| Set oShortCut = Shell.CreateShortcut(DesktopPath & "\ScanTool.lnk") |
| oShortCut.TargetPath = "C:\ScanTool\NAPS2.exe" |
| oShortCut.Save |
| 'перебираем сканеры чтобы найти DevID |
| For i = 1 to DeviceManager.DeviceInfos.Count |
| ScanerDevName = DeviceManager.DeviceInfos(i).Properties("Name").Value |
| ScannerID = DeviceManager.DeviceInfos(i).DeviceID |
| If StrComp(ScanerDevName, ScannerName, vbTextCompare) = 0 Then |
| 'прописываем сканер в файлик |
| ProfileFile.WriteLine " <ExtendedScanSettings>" |
| ProfileFile.WriteLine " <Device>" |
| ProfileFile.WriteLine " <ID>" & ScannerID & "</ID>" |
| ProfileFile.WriteLine " <Name>" & ScanerDevName & "</Name>" |
| ProfileFile.WriteLine " </Device>" |
| ProfileFile.WriteLine " <DriverName>wia</DriverName>" |
| ProfileFile.WriteLine " <DisplayName>" & ScanerDevName & "</DisplayName>" |
| ProfileFile.WriteLine " <IconID>0</IconID>" |
| ProfileFile.WriteLine " <MaxQuality>false</MaxQuality>" |
| ProfileFile.WriteLine " <IsDefault>true</IsDefault>" |
| ProfileFile.WriteLine " <Version>1</Version>" |
| ProfileFile.WriteLine " <UseNativeUI>false</UseNativeUI>" |
| ProfileFile.WriteLine " <AfterScanScale>OneToOne</AfterScanScale>" |
| ProfileFile.WriteLine " <Brightness>0</Brightness>" |
| ProfileFile.WriteLine " <Contrast>0</Contrast>" |
| ProfileFile.WriteLine " <BitDepth>C24Bit</BitDepth>" |
| ProfileFile.WriteLine " <PageAlign>Left</PageAlign>" |
| ProfileFile.WriteLine " <PageSize>Letter</PageSize>" |
| ProfileFile.WriteLine " <Resolution>Dpi200</Resolution>" |
| ProfileFile.WriteLine " <PaperSource>Glass</PaperSource>" |
| ProfileFile.WriteLine " </ExtendedScanSettings>" |
| End If |
| Next |
| End If |
| Next |
| ProfileFile.WriteLine "</ArrayOfExtendedScanSettings>" |
| ProfileFile.Close |
| </code> |