Главная

Wednesday, 9 February 2011

DOSтижение прогресса

   Как говорят многие админы "Прогресс не остановить". Они конечно правы, если учесть что сам прогресс от них мало зависит, но вот бы еще пользователи это понимали...)
   Это дома можно собрать денежку на крутой апгрейд, сделать его и наслаждаться последней версией любимой софтинки. На работе такой свободы достичь не легко, потому как за все деньги плачены и марки с лицензиями наклеены. Поэтому бывают случаи когда прогресс пошел и не вернулся, а софтина пашет не первый десяток лет и новинки последнего железа ей неведомы. Кешируемость, многоядерность и прочая многозадачность нашей DOS-старушке совершенно не в тему, ей бы памяти чуток да lpt на выходе.
  
   Вот недавно попалась такая софтина, которой "повезло" с плановой заменой компьютера. До этого она работала под ХР, в свое время были определенные танцы с бубном вокруг свойств ярлыка. Но новый комп ее, видимо, достал окончательно и на том же ярлыке и ХР она стала намертво. Безответно. Очередные танцы вокруг да около ни к чему не привели, прога стояла на своем, причем в "Диспетчере задач" она нагло показывала что "Работает".

  Нужны были кардинальные перемены.

  Новой версии можно еще ждать не один апргейд железа, поэтому решено было проверить вариант отвязки от настоящего и будущего железного окружения, т.е. поместить нашу софтину в Песочницу.
  Условия простые, софтина должна:
- работать под DOSом, желательно чистым;
- иметь выход на lpt1;
- быть видна с ОС хоста.

Виртуализация ? Она самая!
В недолгом поиске кандидатов приняло участие три товарища:
MS VirtualPC 2007,
VMWare Player,
DOSBox.

  На MS VirtualPC 2007 смоделировать сам DOS и печать на lpt1 оказалось не проблемой.
Хотя сам сервис "Share Folder" оказался недоступен в чистом DOS-е, поэтому пришлось доставлять Windows98. Папка с хоста была благополучно зашарена, но тут начались проблемы с запуском самой проги, сказались хитрости "network file system" на которой основана Share Folder. А лепить еще одну ХР внутри первой как то не хотелось).

MS VirtualPC 2007 в Windows7 уже называется "ХР Мode". Предполагая что наша софтинка может дожить до 7-ки было решено смоделировать ситуацию "работай-не буду" в ХР Мode. Тут меня ждал сюрприз - оказывается в ХР Мode нет эмуляции lpt1 ! Да, прогресс не стоит на месте. Ладно, пусть так, пробуем другим путем, через компоненты интеграции настаиваем на там чтобы принтер из самой 7-ки был доступен в ХР Мode.
Естественно в 7-ке наш принтер подсоединен именно на lpt1. Заходим в ХР Мode и там по приглашению устанавливаем драйвера для того же принтера. В процессе установки наблюдал еще один сюрпиз - принтер можно было привязать на три lpt-порта, которых в системе не было. Но я делал все честно и привязался на интегированный TS008. Замечательно, но не забываем что софтина никакие TS008 не понимает, ей подавай только LPT1 и точка, т.е. двоеточие.) Стучим в бубен и делаем спул из LPT1: и TS008. Есть! Работает.

Но это еще не все. После перезагрузки ХР Мode меня ждал очередной сюрприз - настройки спула исчезли. Испарились. На их сохранение не повлиял даже режим сна для ХР Мode. Поэтому пришлось лезть либо в реестр
1)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\OKIB430
...the following values changed from:
ChangeID : REG_DWORD : 0x00a6e76a (10938218)
Port : REG_SZ : TS008
...to:
ChangeID : REG_DWORD : 0x00a9f01e (11137054)
Port : REG_SZ : LPT1:,TS008
2) ...and in the following location:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\OKIB430\DsSpooler
...the following values changed from:
portName : REG_MULTI_SZ : TS008
...to:
portName : REG_MULTI_SZ : LPT1: TS008

либо в строке
rundll32 printui.dll,PrintUIEntry /Xs /n "OKIB430" Portname "LPT1:,TS008"

VMWare Player порадовал тем что также бесплатен как и MS VirtualPC, однако огорчил тем что сервис "Share Folder" уже доступен как минимум с WindowsXP в качестве гостевой ОС.

 Опять же смоделировать DOS и печать на lpt1 просто. Вообщем тот же результат что и с VirtualPC.

DOSBox - бесплатное решение для старых игрушек. Попробовал его для более полезного дела.) В базовом варианте сделал все кроме печати на lpt. Поэтому пришлось подобрать более продвинутый набор, а именно DOSBox_Megabuild6-win32-installer.exe.


Фичи которые понравились:
 - простота в установке и настройке
 - легко мапит диск или папку
 - можно пробросить lpt и com
 - не светится в реестре основной ОС
 - возможен запуск в скрытом режиме.
Уверен, что фишек у него еше больше, но мне был нужен быстрый результат. Пользователь настаивал... Теперь софтинка летает даже быстрее чем раньше! ))

  Возможно есть более изящное и более простое решение. Так коментировать никто не запрещал!)

No comments:

Post a Comment

А что вы думаете по этому поводу?