Я уже однажды писал на тему локализации 7-ки в теме "Vistalizator нам поможет!" для таких версий форточек как Домашняя она же Home Edition Basic/Premium, Начальная она же Starter и Профессиональная она же Professional, но тогда была версия оси без сервисного пакета, а на сегодня и я сам и все бренды уже подтянулись и выпускают свои компы с первым сервисным пакетом (SP1). Поэтому стал ребром вопрос, как бы мне решить проблему локализации с этой версией 7-ки. Автор vistalizator-а в данном случае молчит как рыба, а проблема есть. И я стал копать, точнее гуглить.
Начну с того, что скачать сами файлы установки ака MUI (local packs for Windows 7 SP1) можно отсюда. Просто выбираем свою версию 32 или 64бит, язык и скачиваем. Считайте половину дела сделали :о). Далее можно воспользоваться вот этой подробной инструкцией и сделать всё по ней. Я же, решил взять эту инструкцию на вооружение и написать небольшой скрипт, который будет делать всю работу за меня единожды и навсегда :о).
Что понадобиться для работы скрипта?
На самом деле те, кто глянет начальную инструкцию и захотят быстренько всё сделать, как там прописано, смею заверить, у них ничего не выйдет. Потому как файл, который требуется для локализации нужно ещё как-то вычленить из exe файла. А это дело не для слабонервных, т.к. при обычном запуске файла локализации, этот гад начинает сам себя распаковывать в текущую директорию с именем lp.cab и тут уже дело реакции - нужно быстро скопировать и куда-нибудь вставить этот файл. Самым простым вариантом решения этой проблемы может быть вот такой простой скрипт:
start mui-eng-x64.exetasklisttasklistren lp.cab lp_.cab
Но есть и другой вариант. Мне понадобиться одна простенькая программка, которая была написана ещё в далёком 98 году, которая называется EXE2CAB version 3.2 by Yuri Niyazov. Смысл программы прост - извлечение cab файла из exe-шника. Далее мне понадобиться choice.exe из самой форточки %windir%/system32. Ну и пожалуй прямые руки и понимание процесса.
Также нужно создать файл с расширением mui.reg вот с такими данными:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\he-IL]"LCID"=dword:0000040d"DefaultFallback"="en-US""en-US"=hex(7):00,00,00,00"Type"=dword:00000092[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ru-RU]"LCID"=dword:00000419"DefaultFallback"="en-US""en-US"=hex(7):00,00,00,00"Type"=dword:00000092[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US]"LCID"=dword:00000409"DefaultFallback"="en-US""en-US"=hex(7):00,00,00,00"Type"=dword:00000091
Скрипт расcчитан в моём случае на 3 языка - инглиш, русский и иврит. Но можно по желанию и переделать его на любое количество языков. Главное понимать логику действа.
Итак, сам скрипт по локализации Windows 7 SP1:
@echo offrem working directory on the serverrem if you running this script locally, then variable SH must be empty, i.e. set sh=set SH=\\server\mui_langpacks\SP1\rem checking x32 or x64 bit windows installationIf exist "%programfiles(x86)%" (goto menu64) else (goto menu32):menu32rem Draw the menuecho.echo Please choose an install optionecho.echo 1 - Exit the installer and return to a shellecho 2 - install English mui for Windows 7 32bitecho 3 - install Hebrew mui for Windows 7 32bitecho 4 - install Russian mui for Windows 7 32bitecho.echo.rem Prompt for a choicerem Add more options after the /cremrem /c - possible choicesrem /d - default optionrem /m - message to displayrem /t - seconds to waitremrem choice /c: /d /m "" /trem%windir%\system32\choice.exe /c:1234 /d 1 /m "Install option:" /t 30if errorlevel 4 goto menu4if errorlevel 3 goto menu3if errorlevel 2 goto menu2if errorlevel 1 goto end1goto menu32:menu64rem Draw the menuecho.echo Please choose an install optionecho.echo 1 - Exit the installer and return to a shellecho 2 - install English mui for Windows 7 64bitecho 3 - install Hebrew mui for Windows 7 64bitecho 4 - install Russian mui for Windows 7 64bitecho.echo.%windir%\system32\choice.exe /c:1234 /d 1 /m "Install option:" /t 30if errorlevel 4 goto menu7if errorlevel 3 goto menu6if errorlevel 2 goto menu5if errorlevel 1 goto end1goto menu64rem ############################################################################rem These are subroutines to run the installer for each menu choicerem ############################################################################:menu2echo.echo Now installing English language for Windows 7 32bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x86-en-us_783d6dd59e2ec8fb0995a059c9c121795bde46c8.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x86-en-us_783d6dd59e2ec8fb0995a059c9c121795bde46c8.cabbcdedit /set {current} locale en-USbcdboot %WinDir% /l en-USregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\he-IL /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ru-RU /fdel %sh%windows6.1-kb2483139-x86-en-us_783d6dd59e2ec8fb0995a059c9c121795bde46c8.cab /qgoto end:menu3echo.echo Now installing Hebrew language for Windows 7 32bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x86-he-il_1849d14777a76c7c5b4ef766490dccc8aed5c56b.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x86-he-il_1849d14777a76c7c5b4ef766490dccc8aed5c56b.cabbcdedit /set {current} locale he-ILbcdboot %WinDir% /l he-ILregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ru-RU /fdel %sh%windows6.1-kb2483139-x86-he-il_1849d14777a76c7c5b4ef766490dccc8aed5c56b.cab /qgoto end:menu4echo.echo Now installing Russian language for Windows 7 32bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x86-ru-ru_6532a8f36ad7d15277d5d60da92555f0fbee4daa.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x86-ru-ru_6532a8f36ad7d15277d5d60da92555f0fbee4daa.cabbcdedit /set {current} locale ru-RUbcdboot %WinDir% /l ru-RUregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\he-IL /fdel %sh%windows6.1-kb2483139-x86-ru-ru_6532a8f36ad7d15277d5d60da92555f0fbee4daa.cab /qgoto end:menu5echo.echo Now installing English language for Windows 7 64bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x64-en-us_9b9c8a867baff2920507fbf1e1b4a158572b9b87.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x64-en-us_9b9c8a867baff2920507fbf1e1b4a158572b9b87.cabbcdedit /set {current} locale en-USbcdboot %WinDir% /l en-USregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\he-IL /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ru-RU /fdel %sh%windows6.1-kb2483139-x64-en-us_9b9c8a867baff2920507fbf1e1b4a158572b9b87.cab /qgoto end:menu6echo.echo Now installing Hebrew language for Windows 7 64bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x64-he-il_617029400059f0847d7d90d4da673ae4ed43ebd9.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x64-he-il_617029400059f0847d7d90d4da673ae4ed43ebd9.cabbcdedit /set {current} locale he-ILbcdboot %WinDir% /l he-ILregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ru-RU /fdel %sh%windows6.1-kb2483139-x64-he-il_617029400059f0847d7d90d4da673ae4ed43ebd9.cab /qgoto end:menu7echo.echo Now installing Russian language for Windows 7 64bit SP1%sh%exe2cab.exe %sh%windows6.1-kb2483139-x64-ru-ru_0587eb296a2f04e0d3699650d39b53ee18b97a79.exe -qdism /online /add-package /packagepath:%sh%windows6.1-kb2483139-x64-ru-ru_0587eb296a2f04e0d3699650d39b53ee18b97a79.cabbcdedit /set {current} locale ru-RUbcdboot %WinDir% /l ru-RUregedit /s %sh%mui.regreg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US /freg delete HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\he-IL /fdel %sh%windows6.1-kb2483139-x64-ru-ru_0587eb296a2f04e0d3699650d39b53ee18b97a79.cab /qgoto endrem ######################################################################:endecho.echo !!! That's all folks !!!echo.echo Have a nice day!echo.pausestart shutdown -r -t 10 -c "Attension please!!! Your computer is going to restart after 10 seconds!!!":end1exit
Запускать скрипт нужно из под windows 7 с правами администратора. Важно одно НО - перед тем как запускать сам скрипт откорректируйте под себя переменную SH вначале скрипта, если будете запускать не с сервера, а локально, к примеру, с флешки, то оставьте переменную SH пустой (set sh=). По окончанию скрипт автоматически перезагрузит компьютер на автомате. Можно ещё заодно отключить UAC если на то пошло, но так как это требует перезагрузки, то я не стал усложнять скрипт. Вот в общем-то и всё. :о)
Update от 11.12.2011: Забыл отписать немного о логике скрипта. На самом деле она очень проста, но можно задасться вопросом: "А на кой чёрт нужен этот первый mui.reg файл?". Из опыта скажу, что по неясным обстоятельствам, т.к. я тестировал скрипт под vmware, то столкнулся со странной проблемой, что в некоторых случаях при установке пакета локализации и дальнейшей перезагрузке, форточка выпадает в BSOD с ошибкой 0x0000012A вот такого вот вида:
Чисто из интереса я провёл небольшое расследование и выяснилось, что иногда после работы скрипта исчезала ветка реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\[language tag]
где language_tag=en-US или ru-RU или he-IL. Почему это происходит мне неизвестно, но поняв, что это всё-таки происходит и возможна некоторая проблема в работе скрипта, мной было принято очень простое решение. Даже если скрипт не всегда корректно укладывает в реестр нужные ему данные, я ему помогу с этим. Вот поэтому идёт сначала импорт рег-файла, а затем уже стирание ненужных веток для ненужных языков. Как говорил Папанов в фильме "Бриллиантовая рука": "и овцы целы и волки сыты, Кутузов".
Update от 31.05.2012:
На самом деле уже с 22 апреля 2012 можно не париться со всякими скриптами, а воспользоваться старым добрым Vistalizator-ом. Это просто проще для обычных пользователей. Да в общем и технарям программка придётся по-вкусу.
Update от 31.05.2012:
На самом деле уже с 22 апреля 2012 можно не париться со всякими скриптами, а воспользоваться старым добрым Vistalizator-ом. Это просто проще для обычных пользователей. Да в общем и технарям программка придётся по-вкусу.
5 комментариев:
да, что-то на подобии этого
скачал я на сайте вистализатор открыл ех файл и ноль реакции
у меня хом премиум покупал в магазине, попал вирус , пришлось переустановить с ф9 установилась английская версия....помогите
Во-первых, перед тем как, что-то делать лучше всего отключить антивирус.
Во-вторых, запускать надо вистализатор от имени администратора. Правая кнопка на файле, run as administrator.
Во-третьих, надо точно скачать нужную языковую поддержку, для вин 7 без сервис пака - это один пакет, для вин 7 с сервис паком 1 это совсем другой файл.
А как побороть такую ошибку?
Cистема DISM
Версия: 6.1.7600.16385
Версия образа: 6.1.7601.18489
Обрабатывается 1 из 1 - Добавление пакета Microsoft-Windows-Client-Refresh-Langu
agePack-Package~31bf3856ad364e35~amd64~en-US~6.1.7601.17514
[===========================66.0%====== ]
Произошла ошибка - "Microsoft-Windows-Client-Refresh-LanguagePack-Package" Ошибк
а: 0x80070002
Ошибка: 2
Не удается найти указанный файл.
Файл журнала DISM находится по адресу C:\Windows\Logs\DISM\dism.log
C:\Windows\system32>
Эта ошибка (0x80070002) обычно происходит, когда был скачан битый файл. Попробуйте заново закачать исходный файл и заново интегрировать. К тому же обратите внимание на версию и битность системы. Это всё очень важно. Также может быть время на компьютере установлено не верно и из-за этого выпадает проблема.
Ну и до кучи - http://www.errorlive.com/error-code-0x80070002
Отправить комментарий