Имеем:
- ГУ Интро
- флешку microSD(HC)
- Навител 5 с таблеткой от мортскрипта, настроенную на com1
- Тотал коммандер для СЕ
Копируем необходимые файлы на флешку: навигатор, таблетки, тотал. В моем случае это выглядело так.
Далее создаем пустую папку \Storage Card\Navi - сюда будут складироваться настройки.
Это нужно для того, чтобы если скрипт сам не сделает ее.
Запускаем ГУ
Запускаем с флешки Тотал командер. Для этого надо пройти в файлы, вверху поставить "Другое", внизу - "SD", выбрать папку ТС и запустить файл CECMD.exe.
Когда запустится командер, ищем в панели путь до папки с навителом, запускаем файл NavStart.exe. Для надежности перезагружаемся.
Опять запускаем Тотал. В одной панели проверяем даты и файлы в папках \ResidentFlash\Navi, \NAND FLASH\Navi. Для надежности все там стираем, не трогая сами папки. Теперь запускаем Navitel.exe. При запуске все отменяем, выходим. Теперь идем в папки, в которых все стирали и смотрим, не появились ли там какие файлы. Если появилась папка ResidentFlash\Navi и там куча новых файлов, что можно выяснить, если сравнить дату создания и системное время, то в уме запоминаем (или записываем на бумажку), путь до них. Это означает, что эта сборка хранит свои настройки именно в этой папке.
Далее, вынимаем флешку, втыкаем в комп и редактируем файлы. Это можно делать и в командере, но это изврат:)
Там нужны файлы: Navitel_Navi.mscr.
Для начала его переименовываем в например Navitel_NaviRUN.mscr. Для чего это надо, я покажу позже
Внутри должен быть такой текст:
If(not DirExists("\ResidentFlash"))
#Если нет директории, в которой навител сохраняет свои настройки, то делаем эти папки
#и копируем все настройки из карты в память
MkDir("\ResidentFlash")
Sleep(500)
MkDir("\Residentflash\Navi")
Sleep(500)
XCopy("\Storage Card\Navi\*.*", "\ResidentFlash\Navi\",TRUE,TRUE)
EndIf
Sleep(500)
#И запускаем сам навител, ждем пока он закроется
RunWait("\Storage Card\navitel\Navitel.exe")
Sleep(500)
#копируем все новые настройки обратно на флешку
XCopy("\ResidentFlash\Navi\*.*", "\Storage Card\Navi\",TRUE,TRUE)
Далее, делаем копию файла Navitel_Navi.exe как Navitel_NaviRUN.exe, в точности как переименовали файл скрипта. Это будет его запускалка.
Для того, чтобы навител возвращался по нажатию кнопки NAVI или выбора в меню, создаем еще один файл по названию Navitel_Navi.mscr
Туда добавляем такой текст:
# Если скрипт уже запущен, то запустить навител опять, чтобы окно с навителом сделать активным
folder = SystemPath("ScriptPath")
if (ScriptProcExists (folder\"navitel_naviRUN.mscr"))
Run(folder \"Navitel.exe" )
Else
#иначе - запустить запускалку основного скрипта, откуда запускается навител с сохранением настроек
Run(folder \"Navitel_naviRUN.exe" )
EndIf
Небольшой комментарий. Можно повесить условие не по запуску скрипта, а по наличию самого окна навитела
Для этого переделываем немного файл navitel_navi.mscr
Добавляем после folder =... строчку
wndNavi = "Navitel Navigator (Auto)"
и вместо if (ScriptProcExists (folder\"navitel_naviRUN.mscr")) пишем if (wndExists(wndNavi))
Дело в том, что я не в курсе, что такое Auto и если заголовок окна изменится, то ничего не поменяется. А так как скрипт ...RUN уже полюбому висит в памяти, то ориентируемся на него.
Сохраняем все файлы, кидаем на флешку.
Далее, в ГУ в опциях системы на кнопку навигации прописываем путь "\Storage Card\Navitel\Navitel_navi.exe".