Здравствуйте, уважаемый Леголес.
Дабы не огорчать Вас, я до сих пор не писал о неурядицах с бат-файлом..
Раз Вы просите, то напишу..
Вот текст присланного Вами бат-файла:
CODE:@ECHO OFF
SET regfile="%temp%\tempreg.reg"
SET W9X=
VER | FIND /I /C "Windows 9" | CHOICE /N /C01 > nul
IF ERRORLEVEL 2 SET W9X=1
ECHO REGEDIT4 > %regfile%
ECHO. >> %regfile%
IF "%W9X%"=="1" ECHO [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts] >> %regfile%
IF NOT "%W9X%"=="1" ECHO [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts] >> %regfile%
TYPE fonts.lst >> %regfile%
ECHO. >> %regfile%
REGEDIT /s %regfile%
SET regfile=
SET W9X=
COPY fonts\*.* %windir%\fonts /y
IF "%W9X%"=="1" COPY kbdinall.kbd %windir%\system\kbdinall.kbd /y
IF NOT "%W9X%"=="1" COPY kbdinall.dll %windir%\system32\kbdinall.dll /y
REGEDIT /s kbdinall.reg
Первоначально я с ним работал в вин_ХР, и все казалось в ажуре. Фонты устанавливались, в реестре регистрировались.
Затем раскладка kbdinall.dll устанавливалась в папке %windir%\system32\ и регистрировалась в реестре тоже.
Затем я перешел на опер.систему вин_98..
И тут бат-файл устанавливал фонты очень корректно. Но.. строка:
CODE:IF "%W9X%"=="1" COPY kbdinall.kbd %windir%\system\kbdinall.kbd /y
совершенно отказывалась работать! То есть, выбор опер_системы совершенно не работал!
Файл раскладки для вин_98
kbdinall.kbd не записывался в папку
%windir%\system\kbdinall.kbd /y.
Вместо оного работала строка:
CODE:IF NOT "%W9X%"=="1" COPY kbdinall.dll %windir%\system32\kbdinall.dll /y
REGEDIT /s kbdinall.reg
и в вин_98 записывалась раскладка для вин_ХР
kbdinall.dll в папку
\system32\ и в реестре для вин_98 записывалась раскладка для вин_ХР
kbdinall.dll.
Вот такие пироги.
Тут я взял Ваш бат-файл и слегка переделал вот таким образом:
CODE:@ECHO OFF
SET regfile="%temp%\tempreg.reg"
SET W9X=
VER | FIND /I /C "Windows 9" | CHOICE /N /C01 > nul
IF ERRORLEVEL 2 SET W9X=1
ECHO REGEDIT4 > %regfile%
ECHO. >> %regfile%
IF "%W9X%"=="1" ECHO [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts] >> %regfile%
IF NOT "%W9X%"=="1" ECHO [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts] >> %regfile%
TYPE fonts.lst >> %regfile%
ECHO. >> %regfile%
REGEDIT /s %regfile%
SET regfile=
SET W9X=
COPY fonts\*.* %windir%\fonts /y
COPY kbdinall.kbd %windir%\system\kbdinall.kbd /y
REGEDIT /s kbdinall.kbd
Теперь Ваш бат-файл хорошо устанавливает в вин_98 и фонты, и раскладку для вин_98 и все это хорошо записывается в реестре.
Но вот возникла для меня в связи с этим другая проблема:
в самой программе установки фонтов и раскладок в VB мне теперь приходится искать путь, при котором программа выбирала бы сама, какая операционка установлена в компьютере.
Иначе она, эта программа, записывает и копирует только то, что выбираете ВРУЧНУЮ.
Этот момент у меня НЕ предполагался, так как программа изначальна была задумана для круглых ЛАМЕРОВ - то есть для тех, кому и НЕ нужно думать, какая там операционка, а лишь нажимать на ту кнопку, которая установит для него нужный шрифт и нужную раскладку.
В ином разе я просто объяснительным путем написал бы, что и куда нужно устанавливать, например, как в этом адресе:
http://janyzak.narod.ru/kbd/ornot.htm
Прошу Вас, уважаемый Леголес, прояснить ситуацию с возможностью выбора операционки в строках:
CODE:IF "%W9X%"=="1" COPY kbdinall.kbd %windir%\system\kbdinall.kbd /y
IF NOT "%W9X%"=="1" COPY kbdinall.dll %windir%\system32\kbdinall.dll /y
REGEDIT /s kbdinall.reg
Кстати, тут не совсем понятна запись:
CODE:REGEDIT /s kbdinall.reg
Тут тоже следовало бы сделать выбор:
если вин_98, то REGEDIT /s следует записать НЕ файл
kbdinall.reg, где указаны лишь про раскладку
kbdinall.dll, а тот файл, в котором бы указывалась на раскладку для вин_98 -
kbdinall.kbd.
Я *.reg-файлы теперь тоже разделил:
для вин_ХР - inall_xp.reg ;
для вин_98 - inall_98.reg.
Для пояснения:
раскладка для вин_98 называется -
*.kbd
раскладка для вин_ХР называется -
*.dll
Если в бат-файле проясните ситуацию с выбором операционки, то больше ничего не нужно!
Бог с ним, со шрифтами, которые останутся у клиента в фонт-папке..
====================
Вот такие пироги. Задача, казалось бы, слишком усложнилось.
Между тем алгоритм был проще простого:
1. установить фонты по списку;
2. установить раскладку клавиатуры:
а) если для вин_98, то установить
*.kbd-файл в систем_папку sistem
и записать в реестре;
б) если для вин_ХР, то установить
*.dll-файл в систем_папку sistem32
и записать в реестре;
3. Если клиенту не понравятся шрифты или же сама раскладка, то чтобы он мог восстановить первоначальное положение, то есть, до установки фонтов и раскладки (uninstall).
==============
Окончательная просьба:
в бат-файле уточните, пож., момент
выбора операционки более корректно.
С уважением
Жанызак.