До нажатия кнопки "Установить", загружаются и проверяются конфиги
-
загрузка файлов конфигурации, в лог переписываются данные из их секции $meta
Код:
>> siTypes::TSiCfgList::LoadFromFile >> "D:\games\Sims3\unpatch\UniPatch61\addons.lst" >> [addons.lst, Sims3 UniPatch, v.6.0, (c) AnriRS, []]
>> siTypes::TSiCfgList::LoadFromFile >> "D:\games\Sims3\unpatch\UniPatch61\run.lst" >> [run.lst, Sims3 UniPatch, v.6.1a, (c) AnriRS, []]
>> siTypes::TSiCfgList::LoadFromFile >> "D:\games\Sims3\unpatch\UniPatch61\guid.lst" >> [guid.lst, sInt 2.1+ конфигуратор GUID аддонов, v.6.0, (c) AnriRS, []]
если есть проблемы на этом этапе - патч не встанет;
-
загрузка и проверка путей из реестра
Код:
>> siMain::CheckReg
0 >> загружен key="HKLM\SOFTWARE\Sims\The Sims 3", value="Install Dir"
{SetupPath0} = "d:\games\sims3\ep0"
...
5 >> загружен key="HKLM\SOFTWARE\Sims\The Sims 3 Late Night", value="Install Dir"
{SetupPath5} = "d:\games\sims3\ep3"
если аддона нет путь будет пустой, и будет сообщение
*** путь для {Setup2} не найден ***, это нормально, если есть подозрения юзаем
sInt, затем перезапускаем унипатч;
-
проверка целостности инсталлятора
Код:
>> siMain::CheckRun
0 >> проверка "D:\games\Sims3\unpatch\UniPatch61\ep0_gamedata_0.exe", маска $0001
...
5 >> проверка "D:\games\Sims3\unpatch\UniPatch61\any_registry.exe", маска $003F
если не хватает файла, после него будет текст для какого аддона он нужен
*** компонент для {SetupN} не найден ***;
-
динамически создаются кнопки
Код:
>> siMain::CreateElem
0 >> "The Sims™ 3"
...
5 >> "The Sims™ 3 В сумерках"
тут пишется чего создали;
-
из реестра грузятся версии аддонов
Код:
>> siMain::AddVersions
0 >> загрузка из "...UnInstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}" >> 1.0.631
...
5 >> загрузка из "...UnInstall\{45057FCE-5784-48BE-8176-D9D00AF56C3C}" >> 6.1.11
если какого-то аддона нет будет надпись
*** Исключение ***: "Failed to get data for 'Version'" - это нормально;
После нажатия кнопки "Установить", выполняются конфиги (точнее run.lst)
-
в реестре создается ветка с путями для секционных инсталляторов
Код:
>> siMain::Run
0 >> создан key="HKCU\Software\ARSoft\UniPatch", value="Addon_00"
"d:\games\sims3\ep0"
...
5 >> создан key="HKCU\Software\ARSoft\UniPatch", value="Addon_05"
"d:\games\sims3\ep3"
если кнопка аддона нажата, путь должен быть непустой;
-
последовательно запускаются секции инсталятора, процесс тут несколько мутный из-за того что если запускать инсталляторы непосредственно будет "замораживаться" главное окно (оболочка): создается поток, который запускает инсталлятор и затем переводится в режим ожидания его завершения, по разморозке запускает следующую секцию методом Next:
Код:
>> siMain::Next >> N
TARRunner::Create >> N >> поток создан
::WinExec32AndWait >> "D:\games\Sims3\unpatch\UniPatch61\какой-то.exe /S", SW_HIDE
>> siMain::OnThreadDone >> $Id_потока >> $код_завершения, успешно
тут собственно TARRunner::Create - создали поток, WinExec32AndWait - чего запустили, OnThreadDone возвращает Id потока (должен отличаться от $FFFFFFFF), и код завершения (должен отличаться от $FFFFFFFF) и желательно быть равным $0
-
последний Next ничего не запускает (т.к. вызывается после окончания сценария) и чистит за патчем реестр
Код:
>> siMain::Next >> 6
удален key="HKCU\Software\ARSoft\UniPatch"
-
читаются из реестра новые версии
Код:
>> siMain::AddVersions
0 >> загрузка из "...UnInstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}" >> 1.18.9
...
5 >> загрузка из "...UnInstall\{45057FCE-5784-48BE-8176-D9D00AF56C3C}" >> 6.1.11