-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLAUNCHER.cmd
More file actions
340 lines (302 loc) · 9.39 KB
/
LAUNCHER.cmd
File metadata and controls
340 lines (302 loc) · 9.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
rem ==================================================
rem Self-relaunch guard
rem Usa variabile con delayed expansion per gestire
rem spazi, parentesi e altri caratteri speciali nel
rem percorso (es. "Cartella (1)", "Downloads", ecc.)
rem ==================================================
set "SELF=%~f0"
echo "!CMDCMDLINE!" | findstr /i /c:"!SELF!" >nul 2>&1
if errorlevel 1 goto :DO_RELAUNCH
echo "!CMDCMDLINE!" | findstr /i /c:"/c " >nul 2>&1
if not errorlevel 1 goto :DO_RELAUNCH
goto :MAIN
:DO_RELAUNCH
cmd /k ""!SELF!" _LAUNCHED"
exit
rem ==================================================
:MAIN
rem ==================================================
set "ROOT=%~dp0"
set "STATE=C:\WinOpt\State"
set "LOGS=C:\WinOpt\Logs"
if not exist "%STATE%" mkdir "%STATE%" >nul 2>&1
if not exist "%LOGS%" mkdir "%LOGS%" >nul 2>&1
rem ==================================================
rem Single UAC: elevazione UNA SOLA VOLTA
rem ==================================================
net session >nul 2>&1
if errorlevel 1 (
echo.
echo [UAC] Administrator privileges required. Elevating...
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"Start-Process -FilePath $env:ComSpec -ArgumentList @('/k', '""%~f0"" _LAUNCHED') -Verb RunAs"
exit
)
:MENU
cls
echo ==================================================
echo WINOPT 2.5.7
echo ==================================================
echo.
echo 1) QUICK STABLE (BASELINE + EDGE + UIUX + VERIFY)
echo.
echo 2) BASELINE APPLY (Admin)
echo 3) EDGE APPLY (Admin)
echo 4) UIUX APPLY (Performance) (User)
echo 5) VERIFY (Admin)
echo 6) VERIFY DEEP (Admin + Clean Audit)
echo.
echo 7) ULTRA ADDON (Admin)
echo 8) ONEDRIVE CONTROL (Admin submenu)
echo 9) APPS INSTALL (Admin)
echo 10) CLEAN SAFE (Admin)
echo 11) CLEAN DEEP (Admin)
echo.
echo 12) STARTUP CLEAN (Admin)
echo.
echo --- LAB (EXPERIMENTAL) ---
echo 13) LAB POWER BOOST (Admin)
echo.
echo 0) Exit
echo.
set /p "CHOICE=Select: "
if "!CHOICE!"=="" goto :MENU
if "!CHOICE!"=="0" goto :EXIT_OK
if "!CHOICE!"=="1" goto :DO_1
if "!CHOICE!"=="2" goto :DO_2
if "!CHOICE!"=="3" goto :DO_3
if "!CHOICE!"=="4" goto :DO_4
if "!CHOICE!"=="5" goto :DO_5
if "!CHOICE!"=="6" goto :DO_6
if "!CHOICE!"=="7" goto :DO_7
if "!CHOICE!"=="8" goto :DO_8
if "!CHOICE!"=="9" goto :DO_9
if "!CHOICE!"=="10" goto :DO_10
if "!CHOICE!"=="11" goto :DO_11
if "!CHOICE!"=="12" goto :DO_12
if "!CHOICE!"=="13" goto :DO_13
echo.
echo [WARN] Invalid choice: !CHOICE!
timeout /t 2 >nul
goto :MENU
:DO_1
call :QUICK_STABLE
goto :POST
:DO_2
call :RUNADMIN "%ROOT%Modules\01_BASELINE\APPLY.ps1"
goto :POST
:DO_3
call :RUNADMIN "%ROOT%Modules\03_EDGE\APPLY.ps1"
goto :POST
:DO_4
call :RUNUSER "%ROOT%Modules\02_UIUX\APPLY.ps1"
goto :POST
:DO_5
call :RUNADMIN "%ROOT%Modules\04_VERIFY\VERIFY.ps1"
goto :POST
:DO_6
call :VERIFY_DEEP
goto :POST
:DO_7
call :RUNADMIN "%ROOT%Modules\10_ULTRA_ADDON\APPLY.ps1"
goto :POST
:DO_8
call :ONEDRIVE_MENU
goto :POST
:DO_9
call :RUNADMIN "%ROOT%Modules\30_APPS\APPLY.ps1"
goto :POST
:DO_10
call :RUNADMIN "%ROOT%Modules\40_CLEAN\SAFE.ps1"
goto :POST
:DO_11
call :RUNADMIN "%ROOT%Modules\40_CLEAN\DEEP.ps1"
goto :POST
:DO_12
call :RUNADMIN "%ROOT%Modules\50_STARTUP\CLEAN.ps1"
goto :POST
:DO_13
call :RUNADMIN "%ROOT%Modules\90_LAB\01_POWER_BOOST.ps1"
goto :POST
rem ==================================================
:EXIT_OK
echo.
echo Goodbye.
timeout /t 2 >nul
exit /b 0
rem ==================================================
:QUICK_STABLE
echo.
echo [QUICK STABLE] Running sequence: BASELINE - EDGE - UIUX - VERIFY
echo.
echo.
echo This sequence runs in a single elevated session (single UAC).
echo Exit codes reflect the actual result of each module.
echo Log: %LOGS%
echo.
set "QS_BASELINE=LANCIATO"
set "QS_EDGE=LANCIATO"
set "QS_UIUX=LANCIATO"
set "QS_VERIFY=LANCIATO"
call :RUNADMIN "%ROOT%Modules\01_BASELINE\APPLY.ps1"
if errorlevel 1 (set "QS_BASELINE=WARN (exitcode^>0)") else (set "QS_BASELINE=OK")
call :RUNADMIN "%ROOT%Modules\03_EDGE\APPLY.ps1"
if errorlevel 1 (set "QS_EDGE=WARN (exitcode^>0)") else (set "QS_EDGE=OK")
call :RUNUSER "%ROOT%Modules\02_UIUX\APPLY.ps1"
if errorlevel 1 (set "QS_UIUX=WARN (exitcode^>0)") else (set "QS_UIUX=OK")
call :RUNADMIN "%ROOT%Modules\04_VERIFY\VERIFY.ps1"
if errorlevel 1 (set "QS_VERIFY=WARN (exitcode^>0)") else (set "QS_VERIFY=OK")
echo.
echo ==================================================
echo QUICK STABLE -- SUMMARY
echo ==================================================
echo BASELINE : !QS_BASELINE!
echo EDGE : !QS_EDGE!
echo UIUX : !QS_UIUX!
echo VERIFY : !QS_VERIFY!
echo ==================================================
echo Exitcode = actual script result.
echo Full details in logs: %LOGS%
echo ==================================================
echo.
echo Restart Windows to activate Edge policies.
echo.
echo ==================================================
echo.
pause
exit /b 0
:QUICK_FAIL
echo.
echo [ERROR] QUICK STABLE interrupted. Log in: %LOGS%
del /f /q "%STATE%\launcher.flag" >nul 2>&1
exit /b 1
rem ==================================================
:VERIFY_DEEP
set "EC_AGG=0"
call :RUNADMIN "%ROOT%Modules\04_VERIFY\VERIFY.ps1"
if errorlevel 1 set "EC_AGG=1"
call :RUNADMIN "%ROOT%Modules\40_CLEAN\VERIFY.ps1"
if errorlevel 1 set "EC_AGG=1"
exit /b !EC_AGG!
rem ==================================================
:ONEDRIVE_MENU
cls
echo ==================================================
echo ONEDRIVE CONTROL
echo ==================================================
echo.
echo 1) OneDrive ON (enable)
echo 2) OneDrive OFF (disable)
echo 3) OneDrive STATUS
echo 0) Back
echo.
set /p "ODC=Select: "
if "!ODC!"=="" goto :ONEDRIVE_MENU
if "!ODC!"=="0" exit /b 0
if "!ODC!"=="1" goto :OD_ON
if "!ODC!"=="2" goto :OD_OFF
if "!ODC!"=="3" goto :OD_VERIFY
echo.
echo [WARN] Invalid option. Use 0 to return to main menu.
timeout /t 2 >nul
goto :ONEDRIVE_MENU
:OD_ON
call :RUNADMIN "%ROOT%Modules\20_ONEDRIVE\APPLY_ON.ps1"
exit /b !ERRORLEVEL!
:OD_OFF
call :RUNADMIN "%ROOT%Modules\20_ONEDRIVE\APPLY_OFF.ps1"
exit /b !ERRORLEVEL!
:OD_VERIFY
call :RUNADMIN "%ROOT%Modules\20_ONEDRIVE\VERIFY.ps1"
exit /b !ERRORLEVEL!
rem ==================================================
:POST
echo.
set "LAST_STATUS=?"
set "LAST_STEP=?"
set "LAST_EC=?"
if exist "%STATE%\last_status.txt" set /p LAST_STATUS=<"%STATE%\last_status.txt"
if exist "%STATE%\last_step.txt" set /p LAST_STEP=<"%STATE%\last_step.txt"
if exist "%STATE%\last_exitcode.txt" set /p LAST_EC=<"%STATE%\last_exitcode.txt"
del /f /q "%STATE%\launcher.flag" >nul 2>&1
echo ==================================================
echo RESULT: !LAST_STATUS! ExitCode=!LAST_EC!
echo STEP: !LAST_STEP!
echo Logs: %LOGS%
echo ==================================================
echo.
rem -- avviso riavvio solo per moduli che lo richiedono --
echo !LAST_STEP! | findstr /I "01_BASELINE 10_ULTRA 90_LAB 01_POWER_BOOST" >nul 2>&1
if not errorlevel 1 (
echo.
echo ** RESTART RECOMMENDED **
echo Some changes (pagefile, 8.3 names, Multimedia Profile)
echo will only take effect after a system restart.
echo.
)
echo [L] Open Logs [M] Menu [Q] Exit
echo.
set /p "AFTER=> "
if /I "!AFTER!"=="L" start "" "%LOGS%"
if /I "!AFTER!"=="Q" goto :EXIT_OK
goto :MENU
rem ==================================================
rem ==================================================
:RUNUSER
call :RUNSCRIPT USER "%~1"
exit /b !ERRORLEVEL!
rem ==================================================
:RUNADMIN
call :RUNSCRIPT ADMIN "%~1"
exit /b !ERRORLEVEL!
rem ==================================================
:RUNSCRIPT
rem Usage: call :RUNSCRIPT (ADMIN|USER) "C:\path\script.ps1"
set "MODE=%~1"
set "SCRIPT=%~2"
if not exist "!SCRIPT!" goto :RUNSCRIPT_ERR
rem -- calculate relative path for cleaner output --
set "REL=!SCRIPT:%ROOT%=!"
if "!REL:~0,1!"=="\" set "REL=!REL:~1!"
rem -- estrai nome modulo breve (es. 01_BASELINE) da Modules\NomeModulo\Script.ps1 --
set "MOD_SHORT=!REL!"
set "MOD_SHORT=!MOD_SHORT:Modules\=!"
for /f "delims=\" %%A in ("!MOD_SHORT!") do set "MOD_SHORT=%%A"
if /I "!MODE!"=="ADMIN" (
net session >nul 2>&1
if errorlevel 1 (
echo.
echo [ERROR] This module requires administrator privileges.
echo Run LAUNCHER.cmd as administrator.
>"!STATE!\last_status.txt" echo FAIL
>"!STATE!\last_step.txt" echo !MOD_SHORT!
>"!STATE!\last_exitcode.txt" echo 1
exit /b 1
)
)
echo.
echo [!MODE!] Avvio: !REL!
echo 1>"!STATE!\launcher.flag" 2>nul
powershell -NoProfile -ExecutionPolicy Bypass -File "!SCRIPT!"
set "EC=!ERRORLEVEL!"
del /f /q "!STATE!\launcher.flag" >nul 2>&1
set "LAST_STATUS=FAIL"
if "!EC!"=="0" set "LAST_STATUS=OK"
>"!STATE!\last_status.txt" echo !LAST_STATUS!
>"!STATE!\last_step.txt" echo !MOD_SHORT!
>"!STATE!\last_exitcode.txt" echo !EC!
exit /b !EC!
:RUNSCRIPT_ERR
set "REL=!SCRIPT:%ROOT%=!"
if "!REL:~0,1!"=="\" set "REL=!REL:~1!"
set "MOD_SHORT=!REL!"
set "MOD_SHORT=!MOD_SHORT:Modules\=!"
for /f "delims=\" %%A in ("!MOD_SHORT!") do set "MOD_SHORT=%%A"
echo [ERROR] Script not found: !REL!
>"!STATE!\last_status.txt" echo FAIL
>"!STATE!\last_step.txt" echo !MOD_SHORT!
>"!STATE!\last_exitcode.txt" echo 1
exit /b 1