[PR #17616] service.bat: показывать рассинхрон службы со стратегией, называть пункт Reinstall #503

Open
opened 2026-09-21 11:18:16 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/zapret-discord-youtube/pull/17616
Author: @klaymm
Created: 9/20/2026
Status: 🔄 Open

Base: main ← Head: feat/service-state


📝 Commits (1)

  • f585b57 service.bat: показывать рассинхрон службы со стратегией, называть пункт Reinstall

📊 Changes

1 file changed (+125 additions, -79 deletions)

View changed files

📝 service.bat (+125 -79)

📄 Description

service.bat: меню не показывает реальное состояние установленной службы

1. Check Status не видит, что служба крутит устаревшие аргументы

В реестр при установке пишется только имя стратегии, а в binPath - аргументы на момент установки.

Если после установки поправить .bat или сменить Game Filter, служба продолжает работать со старыми аргументами. Check Status при этом бодро пишет Service strategy installed from "general (ALT11)" и ничего не сообщает. Со стороны выглядит так, будто правка применилась. ( В курсе, что GameFilter просит перезапусутить zapret, но всё же это ничего не отменяет. )

Теперь Check Status разбирает текущий файл стратегии и сравнивает с ImagePath установленной службы:

Service strategy installed from "general (ALT11)"
Service arguments match general (ALT11).bat
Service strategy installed from "general (ALT11)"
[?] Service arguments differ from what general (ALT11).bat produces now
    The strategy file or the Game Filter settings changed after the service was installed
    Reinstall the service to apply them

2. Из меню не видно, что Install Service умеет переустанавливать

:service_install уже делает полную переустановку - net stop, sc delete, sc create. Но пункт всегда называется Install Service, и при уже установленной службе читается как «поставить ещё одну». Некоторые люди могут из-за этого сначала жать Remove Services, а потом Install Service.

Когда служба установлена, пункт теперь называется Reinstall Service:

   :: SERVICE
      1. Reinstall Service
      2. Remove Services
      3. Check Status

Что изменено в коде

Парсер аргументов лежал инлайном внутри :service_install. Чтобы им можно было пользоваться из двух мест, вынес его в подпрограмму :parse_strategy_args - тело перенесено без единой правки, :service_install теперь просто зовёт её.

Новая :check_service_args: парсит текущий файл, читает ImagePath из реестра, нормализует обе строки и сравнивает. Нормализация убирает кавычки, обратные слэши и пробелы, поэтому экранирование \", которое sc create разворачивает при сохранении, на сравнение не влияет.

Надпись в меню - одна строка, CurrentStrategy уже вычисляется вызовом :get_strategy_name перед отрисовкой.

Полный цикл прогнал на установленной службе:

  • служба установлена, ничего не трогал → Service arguments match general (ALT11).bat
  • переключил Game Filter → [?] Service arguments differ from what general (ALT11).bat produces now

Надпись в меню проверена мною в обоих состояниях - со службой и без.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/zapret-discord-youtube/pull/17616 **Author:** [@klaymm](https://github.com/klaymm) **Created:** 9/20/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/service-state` --- ### 📝 Commits (1) - [`f585b57`](https://github.com/Flowseal/zapret-discord-youtube/commit/f585b5780ff4604645437012d42730ba3c93af45) service.bat: показывать рассинхрон службы со стратегией, называть пункт Reinstall ### 📊 Changes **1 file changed** (+125 additions, -79 deletions) <details> <summary>View changed files</summary> 📝 `service.bat` (+125 -79) </details> ### 📄 Description # service.bat: меню не показывает реальное состояние установленной службы ## 1. Check Status не видит, что служба крутит устаревшие аргументы В реестр при установке пишется только **имя** стратегии, а в `binPath` - аргументы на момент установки. Если после установки поправить `.bat` или сменить Game Filter, служба продолжает работать со старыми аргументами. `Check Status` при этом бодро пишет `Service strategy installed from "general (ALT11)"` и ничего не сообщает. Со стороны выглядит так, будто правка применилась. ( В курсе, что GameFilter просит перезапусутить zapret, но всё же это ничего не отменяет. ) Теперь `Check Status` разбирает текущий файл стратегии и сравнивает с `ImagePath` установленной службы: ``` Service strategy installed from "general (ALT11)" Service arguments match general (ALT11).bat ``` ``` Service strategy installed from "general (ALT11)" [?] Service arguments differ from what general (ALT11).bat produces now The strategy file or the Game Filter settings changed after the service was installed Reinstall the service to apply them ``` ## 2. Из меню не видно, что Install Service умеет переустанавливать `:service_install` уже делает полную переустановку - `net stop`, `sc delete`, `sc create`. Но пункт всегда называется `Install Service`, и при уже установленной службе читается как «поставить ещё одну». Некоторые люди могут из-за этого сначала жать `Remove Services`, а потом `Install Service`. Когда служба установлена, пункт теперь называется `Reinstall Service`: ``` :: SERVICE 1. Reinstall Service 2. Remove Services 3. Check Status ``` ## Что изменено в коде Парсер аргументов лежал инлайном внутри `:service_install`. Чтобы им можно было пользоваться из двух мест, вынес его в подпрограмму `:parse_strategy_args` - **тело перенесено без единой правки**, `:service_install` теперь просто зовёт её. Новая `:check_service_args`: парсит текущий файл, читает `ImagePath` из реестра, нормализует обе строки и сравнивает. Нормализация убирает кавычки, обратные слэши и пробелы, поэтому экранирование `\"`, которое `sc create` разворачивает при сохранении, на сравнение не влияет. Надпись в меню - одна строка, `CurrentStrategy` уже вычисляется вызовом `:get_strategy_name` перед отрисовкой. Полный цикл прогнал на установленной службе: - служба установлена, ничего не трогал → `Service arguments match general (ALT11).bat` - переключил Game Filter → `[?] Service arguments differ from what general (ALT11).bat produces now` Надпись в меню проверена мною в обоих состояниях - со службой и без. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-09-21 11:18:16 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/zapret-discord-youtube#503