Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dfecd5dafb | |||
| 6d01e5ccc2 | |||
| 8da02e2392 |
Generated
+1
-1
@@ -1224,7 +1224,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syshelper"
|
name = "syshelper"
|
||||||
version = "0.1.0"
|
version = "0.1.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"argon2",
|
"argon2",
|
||||||
"axum",
|
"axum",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "syshelper"
|
name = "syshelper"
|
||||||
version = "0.1.0"
|
version = "0.1.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
+32
-3
@@ -185,7 +185,18 @@ begin
|
|||||||
SW_HIDE, ewWaitUntilTerminated, Code);
|
SW_HIDE, ewWaitUntilTerminated, Code);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure InstallService();
|
// Запускаем через net start, а не sc start, по той же причине, что и остановку:
|
||||||
|
// net дожидается фактического запуска и возвращает ошибку, если он не удался.
|
||||||
|
// sc отдаёт управление сразу, и сломанная установка выглядела бы успешной.
|
||||||
|
function StartService(): Boolean;
|
||||||
|
var
|
||||||
|
Code: Integer;
|
||||||
|
begin
|
||||||
|
Result := Exec(ExpandConstant('{sys}\net.exe'), 'start {#ServiceName}', '',
|
||||||
|
SW_HIDE, ewWaitUntilTerminated, Code) and (Code = 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function InstallService(): Boolean;
|
||||||
var
|
var
|
||||||
Bin: String;
|
Bin: String;
|
||||||
begin
|
begin
|
||||||
@@ -204,7 +215,8 @@ begin
|
|||||||
RunSc('description {#ServiceName} "Родительский контроль: следит за запуском программ."');
|
RunSc('description {#ServiceName} "Родительский контроль: следит за запуском программ."');
|
||||||
// Родительский контроль не должен исчезать из-за одной аварии.
|
// Родительский контроль не должен исчезать из-за одной аварии.
|
||||||
RunSc('failure {#ServiceName} reset= 86400 actions= restart/5000/restart/5000/restart/60000');
|
RunSc('failure {#ServiceName} reset= 86400 actions= restart/5000/restart/5000/restart/60000');
|
||||||
RunSc('start {#ServiceName}');
|
|
||||||
|
Result := StartService();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Каталог данных закрываем от обычных пользователей: унаследованные от
|
// Каталог данных закрываем от обычных пользователей: унаследованные от
|
||||||
@@ -223,6 +235,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure CurStepChanged(CurStep: TSetupStep);
|
procedure CurStepChanged(CurStep: TSetupStep);
|
||||||
|
var
|
||||||
|
Started: Boolean;
|
||||||
begin
|
begin
|
||||||
if CurStep <> ssPostInstall then
|
if CurStep <> ssPostInstall then
|
||||||
Exit;
|
Exit;
|
||||||
@@ -231,7 +245,22 @@ begin
|
|||||||
// только затем поднимаем службу.
|
// только затем поднимаем службу.
|
||||||
LockDownDataDir();
|
LockDownDataDir();
|
||||||
SetPassword();
|
SetPassword();
|
||||||
InstallService();
|
Started := InstallService();
|
||||||
|
|
||||||
|
// Обе проверки — про молчаливый отказ: без них установка отрапортует об
|
||||||
|
// успехе, а защиты не будет. При тихой установке (автообновление) человека
|
||||||
|
// за экраном нет, и разбираться придётся по журналу Inno, /LOG= его пишет.
|
||||||
|
if WizardSilent() then
|
||||||
|
Exit;
|
||||||
|
|
||||||
|
if not AuthConfigured() then
|
||||||
|
MsgBox('Не удалось сохранить пароль панели.'#13#10 +
|
||||||
|
'Панель откроется без пароля, и задать его сможет любой, ' +
|
||||||
|
'кто зайдёт первым.', mbError, MB_OK);
|
||||||
|
|
||||||
|
if not Started then
|
||||||
|
MsgBox('Служба не запустилась — контроль сейчас не работает.'#13#10 +
|
||||||
|
'Откройте «Службы» и посмотрите System Helper.', mbError, MB_OK);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
||||||
|
|||||||
Reference in New Issue
Block a user