#NoTrayIcon #include #include #include #include #include #include Global $aArray = DriveGetDrive($DT_ALL), $sDisk, $iBtn11, $iBtn10, $iBtn7, $PathEr, $sDiskS, $UN11, $UN10x64, $UN10x86, $UN7x64, $UN7x86 Global $bFontOk = False, $font = "Segoe UI", $hBg _LoadFonts() $font = _Font() _ShowWallpaper() For $i = 1 To $aArray[0] $aFileList = _FileListToArrayRec($aArray[$i] & "\WindowsESD", "NOT.DEL", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) If Not @error Then $sDisk = $aArray[$i] & "\WindowsESD\" $PathEr = 1 ExitLoop EndIf Next For $i = 1 To $aArray[0] $aFileList = _FileListToArrayRec($aArray[$i] & "\efi\Paravis\Windows", "NOT.DEL", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) If Not @error Then $sDisk = $aArray[$i] & "\efi\Paravis\Windows\" $PathEr += 1 ExitLoop EndIf Next If $PathEr > 1 Then MsgBox(48, 'Предупреждение!', 'В системе больше одной папки с образами. Проверьте и удалите лишние (читаем ReadMe.txt). Система будет перезагружена.') Exit EndIf For $i = 1 To $aArray[0] $aFileList = _FileListToArrayRec($aArray[$i] & "\efi\Paravis\Boot", "NOT.DEL", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) If Not @error Then $sDiskS = $aArray[$i] & "\efi\Paravis\Boot" ExitLoop EndIf Next $ESD11 = $sDisk & "install_11.esd" $ESD10x64 = $sDisk & "install_10_x64.esd" $ESD10x86 = $sDisk & "install_10_x86.esd" $ESD7x64 = $sDisk & "install_7_x64.esd" $ESD7x86 = $sDisk & "install_7_x86.esd" If FileExists($sDisk & "autounattend\unattend11.xml") Then $UN11 = " /unattend:" & $sDisk & "autounattend\unattend11.xml" Else $UN11 = '' EndIf If FileExists($sDisk & "autounattend\unattend10x64.xml") Then $UN10x64 = " /unattend:" & $sDisk & "autounattend\unattend10x64.xml" Else $UN10x64 = '' EndIf If FileExists($sDisk & "autounattend\unattend10x86.xml") Then $UN10x86 = " /unattend:" & $sDisk & "autounattend\unattend10x86.xml" Else $UN10x86 = '' EndIf If FileExists($sDisk & "autounattend\unattend7x64.xml") Then $UN7x64 = " /unattend:" & $sDisk & "autounattend\unattend7x64.xml" Else $UN7x64 = '' EndIf If FileExists($sDisk & "autounattend\unattend7x86.xml") Then $UN7x86 = " /unattend:" & $sDisk & "autounattend\unattend7x86.xml" Else $UN7x86 = '' EndIf $OEM11 = " /m:" & $sDisk & "$OEM11$" $OEM10x64 = " /m:" & $sDisk & "$OEM10x64$" $OEM10x86 = " /m:" & $sDisk & "$OEM10x86$" $OEM7x64 = " /m:" & $sDisk & "$OEM7x64$" $OEM7x86 = " /m:" & $sDisk & "$OEM7x86$" $setup = "X:\sources\setup.exe /installfrom:" If FileExists(@WindowsDir & "\SYSWOW64") Then RunWait($sDiskS & "\src_x64.exe auto2") _x64() Else RunWait($sDiskS & "\src_x86.exe auto2") _x86() EndIf Func _LoadFonts() Local $reg = @TempDir & "\Montserrat-Regular.ttf" Local $bold = @TempDir & "\Montserrat-Bold.ttf" FileInstall("assets\Montserrat-Regular.ttf", $reg, 1) FileInstall("assets\Montserrat-Bold.ttf", $bold, 1) Local $r1 = DllCall("gdi32.dll", "int", "AddFontResourceExW", "wstr", $reg, "dword", 0x10, "ptr", 0) Local $r2 = DllCall("gdi32.dll", "int", "AddFontResourceExW", "wstr", $bold, "dword", 0x10, "ptr", 0) If IsArray($r1) And IsArray($r2) Then If $r1[0] > 0 Or $r2[0] > 0 Then $bFontOk = True EndIf EndFunc Func _Font() If $bFontOk Then Return "Montserrat" Return "Segoe UI" EndFunc Func _ShowWallpaper() Local $bg = @TempDir & "\paravis_wallpaper.bmp" FileInstall("assets\wallpaper-install.bmp", $bg, 1) $hBg = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW) GUICtrlCreatePic($bg, 0, 0, @DesktopWidth, @DesktopHeight) GUISetState(@SW_SHOW, $hBg) EndFunc Func _x86() $detect_efi = EnvGet("firmware_type") If $detect_efi = "Legacy" Then $hGUI = GUICreate("Windows Setup by Paravis", 410, 250, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255) WinSetOnTop($hGUI, "", 1) $iBtn10 = GUICtrlCreateButton("Установить Windows 10", 5, 5, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtn7 = GUICtrlCreateButton("Установить Windows 7", 5, 45, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnTC = GUICtrlCreateButton("Total Commander", 5, 105, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnR = GUICtrlCreateButton("Перезагрузка", 5, 145, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) GUISetState() _checkesd86() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Case $iBtn10 GUISetState(@SW_HIDE) RunWait($setup & $ESD10x86 & $OEM10x86 & $UN10x86) GUISetState(@SW_SHOW) Case $iBtn7 GUISetState(@SW_HIDE) RunWait($setup & $ESD7x86 & $OEM7x86 & $UN7x86) GUISetState(@SW_SHOW) Case $iBtnTC GUISetState(@SW_HIDE) RunWait($sDiskS & '\TotalCommander\TOTALCMD.EXE /I="%%COMMANDER_PATH%%\tcmdmain.ini"') GUISetState(@SW_SHOW) Case $iBtnR Exit EndSwitch WEnd Else If Not FileExists($sDisk & "install_10_x86.esd") Then MsgBox(48, 'Предупреждение!', 'Не найден образ Windows 10 x86. Система будет перезагружена.') Exit EndIf $hGUI = GUICreate("Windows Setup by Paravis", 360, 190, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255) WinSetOnTop($hGUI, "", 1) $iBtn10 = GUICtrlCreateButton("Установить Windows 10", 5, 5, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnTC = GUICtrlCreateButton("Total Commander", 5, 65, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnR = GUICtrlCreateButton("Перезагрузка", 5, 105, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Case $iBtn10 GUISetState(@SW_HIDE) RunWait($setup & $ESD10x86 & $OEM10x86 & $UN10x86) GUISetState(@SW_SHOW) Case $iBtnTC GUISetState(@SW_HIDE) RunWait($sDiskS & '\TotalCommander\TOTALCMD.EXE /I="%%COMMANDER_PATH%%\tcmdmain.ini"') GUISetState(@SW_SHOW) Case $iBtnR Exit EndSwitch WEnd EndIf EndFunc Func _x64() $hGUI = GUICreate("Windows Setup by Paravis", 410, 250, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255) WinSetOnTop($hGUI, "", 1) $iBtn11 = GUICtrlCreateButton("Установить Windows 11", 5, 5, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtn10 = GUICtrlCreateButton("Установить Windows 10", 5, 45, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtn7 = GUICtrlCreateButton("Установить Windows 7", 5, 85, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnTC = GUICtrlCreateButton("Total Commander", 5, 145, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) $iBtnR = GUICtrlCreateButton("Перезагрузка", 5, 185, 350, 40) GUICtrlSetFont(-1, 13, 500, 0, $font) GUISetState() _checkesd64() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Case $iBtn11 GUISetState(@SW_HIDE) RunWait($setup & $ESD11 & $OEM11 & $UN11) GUISetState(@SW_SHOW) Case $iBtn10 GUISetState(@SW_HIDE) RunWait($setup & $ESD10x64 & $OEM10x64 & $UN10x64) GUISetState(@SW_SHOW) Case $iBtn7 GUISetState(@SW_HIDE) RunWait($setup & $ESD7x64 & $OEM7x64 & $UN7x64) GUISetState(@SW_SHOW) Case $iBtnTC GUISetState(@SW_HIDE) RunWait($sDiskS & '\TotalCommander\TOTALCMD64.EXE /I="%%COMMANDER_PATH%%\tcmdmain.ini"') GUISetState(@SW_SHOW) Case $iBtnR Exit EndSwitch WEnd EndFunc Func _checkesd64() If Not FileExists($sDisk & "install_11.esd") Then GUICtrlSetState($iBtn11, $GUI_DISABLE) EndIf If Not FileExists($sDisk & "install_10_x64.esd") Then GUICtrlSetState($iBtn10, $GUI_DISABLE) EndIf If Not FileExists($sDisk & "install_7_x64.esd") Then GUICtrlSetState($iBtn7, $GUI_DISABLE) EndIf EndFunc Func _checkesd86() If Not FileExists($sDisk & "install_10_x86.esd") Then GUICtrlSetState($iBtn10, $GUI_DISABLE) EndIf If Not FileExists($sDisk & "install_7_x86.esd") Then GUICtrlSetState($iBtn7, $GUI_DISABLE) EndIf EndFunc