Сравнивать бинарники службы по содержимому и ускорить опрос службы
fetch-zapret.mjs кладёт файлы через copyFile, а тот ставит текущее время: после каждой сборки CI mtime новее при тех же байтах. Сравнение по времени требовало UAC при каждом обновлении приложения и упиралось в занятый WinDivert64.sys, ещё загруженный в ядро. Теперь сравниваем SHA-256, а если файл всё же занят — уводим его в сторону переименованием. Ожидание состояния службы переехало внутрь одного скрипта PowerShell: раньше каждый опрос был отдельным процессом (~1 с на подъём .NET) с интервалом 300 мс, из чего и складывалась основная задержка включения.
This commit is contained in:
@@ -56,6 +56,19 @@ export function serviceConfigPath(): string {
|
||||
return join(serviceDataDir(), 'strategy.cfg')
|
||||
}
|
||||
|
||||
/**
|
||||
* Файлы, которые служба запускает из своего защищённого каталога: сам winws и всё, от чего
|
||||
* он зависит при старте. Список нужен и `engine.win32.ts` (решить, надо ли копировать),
|
||||
* и повышенному скрипту в `service.win32.ts` (собственно копирование) — держим его здесь,
|
||||
* чтобы он не разъехался на две копии.
|
||||
*/
|
||||
export const SERVICE_BINARY_NAMES = [
|
||||
'winws.exe',
|
||||
'cygwin1.dll',
|
||||
'WinDivert.dll',
|
||||
'WinDivert64.sys'
|
||||
] as const
|
||||
|
||||
/**
|
||||
* Защищённая копия `winws.exe` (+ cygwin1.dll, WinDivert.dll, WinDivert64.sys) — на неё,
|
||||
* а не на оригинал из папки установки приложения, указывает служба. Установка теперь
|
||||
|
||||
Reference in New Issue
Block a user