#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=1.ico
#AutoIt3Wrapper_res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;Инклуды
#include <GuiConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiTreeView.au3>
#include <Array.au3>
#include <ModernMenuRaw.au3>
Opt("GUIOnEventMode", 1)
Global $enabler = True
Global $treeprogs, $insbtn, $start, $TrayExit, $progs, $progstr, $progsch, $perc, $tray, $main
;Проверка файла конфигурации
If Not FileExists("conf.ini") Then
MsgBox(0, "Error", "No config file")
Exit
EndIf
;Проверка на проги
If IniRead("conf.ini", "Params", "main", "main") = "main" Then
MsgBox(0, "Error", "Error in main settings")
Exit
EndIf
$params = StringRegExp(IniRead("conf.ini", "Params", "main", 0), "<(.*?)>", 3)
If UBound($params) = 0 Then
MsgBox(0, "Error", "No programs to install")
Exit
EndIf
If IniRead("conf.ini", "Params", "img", "imgs") = "imgs" Then
MsgBox(0, "Error", "Error in background settings")
Exit
EndIf
$images = StringRegExp(IniRead("conf.ini", "Params", "img", 0), "<(.*?)>", 3)
If IniRead("conf.ini", "Params", "font", "font") = "font" Then
MsgBox(0, "Error", "Error in background settings")
Exit
EndIf
$font = StringRegExp(IniRead("conf.ini", "Params", "font", 0), "<(.*?)>", 3)
If UBound($params) < 8 Or UBound($images) < 3 Or UBound($font) < 4 Then
MsgBox(0, "Error", "Error parsing config file")
Exit
EndIf
If $params[5] = 0 Then
_DrawGUI()
Else
_DoHidden()
EndIf
;Обработка если не hidden
While 1
Sleep(10)
WEnd
;GUI прорисовка
Func _DrawGUI()
;Создание GUI
$main = GUICreate($params[3], 530, 760, @DesktopHeight / 14, @DesktopWidth / 20)
$treeprogs = GUICtrlCreateTreeView(20, 20, 490, 690, 0x120)
$start = $GUI_EVENT_CLOSE
GUICtrlSetFont($treeprogs, $font[0], $font[1], $font[2], $font[3])
_GUICtrlTreeView_SetHeight($treeprogs, $params[6])
;Logic block - вставка colora
GUISetBkColor("0x" & $images[0])
;Color 4 tree
GUICtrlSetBkColor($treeprogs, "0x" & $images[1])
GUICtrlSetColor($treeprogs, "0x" & $images[2])
;Батон старта
$insbtn = GUICtrlCreateButton("Install", 15, 720, 240, 35, 0)
$nbldsbl = GUICtrlCreateButton("Enable All\Disable All", 260, 720, 250, 35, 0)
;Бинды
GUICtrlSetOnEvent($insbtn, "_DoInstall")
GUICtrlSetOnEvent($nbldsbl, "_EnableDisableAll")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Term")
;Занесение прог в массив
Dim $progs[$params[0] + 1]
Dim $progsch[$params[0] + 1]
Dim $progstr[$params[0] + 1]
$progs[0] = $params[0]
For $i = 1 To $progs[0] Step 1
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, ""), "<(.*?)>", 3)
$progs[$i] = $parse[0]
$progsch[$i] = GUICtrlCreateTreeViewItem($parse[1], $treeprogs)
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -331)
If $parse[2] = 1 Then
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$i])
EndIf
Next
;Вскрываем гуи
If $params[2] = 1 Then
$tray = _TrayIconCreate("ABPIW", "shell32.dll", -27)
_TrayIconSetClick($tray, 16)
_TrayIconSetState()
$maintray = _TrayCreateContextMenu($tray)
$side = _CreateSideMenu($maintray)
_SetSideMenuText($side, "ABPIW")
_SetSideMenuColor($side, 0x00FFFF)
_SetSideMenuBkColor($side, 0xDD1F1F)
_SetSideMenuBkGradColor($side, 0xFF7D7D)
$start = _TrayCreateItem("Start")
_TrayItemSetIcon($start, "shell32.dll", 160)
$menu = _TrayCreateMenu("Programs")
_TrayItemSetIcon($menu, "shell32.dll", 210)
_TrayCreateItem("")
_TrayItemSetIcon(-1, "shell32.dll", 211)
$perc = _TrayCreateItem("Install progress")
_TrayItemSetIcon($perc, "shell32.dll", 255)
GUICtrlSetState($perc, $GUI_DISABLE)
$TrayExit = _TrayCreateItem("Exit")
_TrayItemSetIcon($TrayExit, "shell32.dll", 28)
GUICtrlSetOnEvent($TrayExit, "_Term")
GUICtrlSetOnEvent($start, "_DoInstall")
For $i = 1 To $progs[0]
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, ""), "<(.*?)>", 3)
If $parse[2] = 0 Then
$nch = "Not checked - "
Else
$nch = ""
EndIf
$progstr[$i] = _TrayCreateItem($nch & $parse[1], $menu)
_TrayItemSetIcon($progstr[$i], "shell32.dll", 331)
GUICtrlSetOnEvent($progstr[$i], "_Bind")
Next
EndIf
GUISetState(@SW_SHOW, $main)
EndFunc
;Тихий инсталл
Func _DoHidden()
;Занесение прог в массив
Dim $progs[$params[0] + 1]
Dim $progsch[$params[0] + 1]
$progs[0] = $params[0]
;Создание GUI
$main = GUICreate($params[3], 330, 560, @DesktopHeight / 14, @DesktopWidth / 20)
$treeprogs = GUICtrlCreateTreeView(20, 20, 490, 690, 0x120)
;Logic block - вставка colora
GUISetBkColor("0x" & $images[0])
;Color 4 tree
GUICtrlSetBkColor($treeprogs, "0x" & $images[1])
GUICtrlSetColor($treeprogs, "0x" & $images[2])
;Cкрываем гуи
GUISetState(@SW_HIDE, $main)
For $i = 1 To $progs[0] Step 1
$parse = StringRegExp(IniRead("conf.ini", "Params", "prog" & $i, ""), "<(.*?)>", 3)
$progs[$i] = $parse[0]
$progsch[$i] = GUICtrlCreateTreeViewItem($parse[1], $treeprogs)
If $parse[2] = 1 Then
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$i])
EndIf
Next
_DoInstallHidden()
EndFunc
;Функция инстала
Func _DoInstall()
GUICtrlSetState($treeprogs, $GUI_DISABLE)
GUICtrlSetState($insbtn, $GUI_DISABLE)
GUICtrlSetState($start, $GUI_DISABLE)
GUICtrlSetState($TrayExit, $GUI_DISABLE)
;Последовательный запуск инсталяторов (с изменяющимися иконками ^^)
AutoItWinSetTitle($params[3])
For $i = 1 To $progs[0] Step 1
If $params[2] = 1 Then
GUICtrlSetState($progstr[$i], $GUI_DISABLE)
EndIf
If FileExists(@ScriptDir & "\Install\" & $progs[$i]) And _GUICtrlTreeView_GetChecked($treeprogs, $progsch[$i]) = True Then
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -246)
If $params[2] = 1 Then
_TrayItemSetIcon($progstr[$i], "shell32.dll", 246)
EndIf
_GUICtrlTreeView_SetBold($treeprogs, $progsch[$i])
RunWait(@ScriptDir & "\Install\" & $progs[$i])
Sleep($params[1] * 1000)
_GUICtrlTreeView_SetBold($treeprogs, $progsch[$i], False)
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -253)
If $params[2] = 1 Then
_TrayItemSetIcon($progstr[$i], "shell32.dll", 253)
_TrayItemSetText($perc, Ceiling($i / $progs[0] * 100) & "%")
EndIf
WinSetTitle(AutoItWinGetTitle(), "", Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
AutoItWinSetTitle(Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
ElseIf _GUICtrlTreeView_GetChecked($treeprogs, $progsch[$i]) = False Then
_GUICtrlTreeView_SetText($treeprogs, $progsch[$i], "Not installed - " & _GUICtrlTreeView_GetText($treeprogs, $progsch[$i]))
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -200)
If $params[2] = 1 Then
_TrayItemSetIcon($progstr[$i], "shell32.dll", 200)
_TrayItemSetText($perc, Ceiling($i / $progs[0] * 100) & "%")
EndIf
WinSetTitle(AutoItWinGetTitle(), "", Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
AutoItWinSetTitle(Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
ElseIf FileExists(@ScriptDir & "\Install\" & $progs[$i]) = False Then
_GUICtrlTreeView_SetText($treeprogs, $progsch[$i], "Doesn't exist - " & _GUICtrlTreeView_GetText($treeprogs, $progsch[$i]))
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -240)
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$i], False)
If $params[2] = 1 Then
_TrayItemSetIcon($progstr[$i], "shell32.dll", 240)
_TrayItemSetText($perc, Ceiling($i / $progs[0] * 100) & "%")
EndIf
WinSetTitle(AutoItWinGetTitle(), "", Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
AutoItWinSetTitle(Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
Else
_GUICtrlTreeView_SetText($treeprogs, $progsch[$i], "Error - " & _GUICtrlTreeView_GetText($treeprogs, $progsch[$i]))
_GUICtrlTreeView_SetIcon($treeprogs, $progsch[$i], "shell32.dll", -28)
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$i], False)
If $params[2] = 1 Then
_TrayItemSetIcon($progstr[$i], "shell32.dll", 28)
_TrayItemSetText($perc, Ceiling($i / $progs[0] * 100) & "%")
EndIf
WinSetTitle(AutoItWinGetTitle(), "", Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
AutoItWinSetTitle(Ceiling($i / $progs[0] * 100) & "% - " & $params[3])
EndIf
Next
;Sleep после всего инсталла, удаление гуи или enable контролов
If $params[4] = 1 Then
Sleep($params[1] * 1000)
GUIDelete()
_TrayIconDelete($tray)
If $params[7] = 1 Then
Shutdown(2)
Exit
EndIf
Exit
ElseIf $params[4] = 0 Then
GUICtrlSetState($treeprogs, $GUI_ENABLE)
GUICtrlSetState($insbtn, $GUI_ENABLE)
GUICtrlSetState($start, $GUI_ENABLE)
GUICtrlSetState($TrayExit, $GUI_ENABLE)
If $params[2] = 1 Then
For $i = 1 To $progs[0]
GUICtrlSetState($progstr[$i], $GUI_ENABLE)
Next
EndIf
EndIf
EndFunc
;Функция инстала - hidden mode
Func _DoInstallHidden()
;Последовательный запуск инсталяторов (с изменяющимися иконками ^^)
For $i = 1 To $progs[0] Step 1
If FileExists(@ScriptDir & "\Install\" & $progs[$i]) And _GUICtrlTreeView_GetChecked($treeprogs, $progsch[$i]) = True Then
RunWait(@ScriptDir & "\Install\" & $progs[$i])
Sleep($params[1] * 1000)
EndIf
Next
;Sleep после всего инсталла, удаление гуи
Sleep($params[1] * 1000)
GUIDelete()
Exit
EndFunc
;Bind
Func _Bind()
$a = @GUI_CtrlId
$b = _ArrayFindAll($progstr, $a)
$a = $b[0]
If _GUICtrlTreeView_GetChecked($treeprogs, $progsch[$a]) = True Then
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$a], False)
_TrayItemSetText(@GUI_CtrlId, "Not checked - " & _GUICtrlTreeView_GetText($treeprogs, $progsch[$a]))
ElseIf _GUICtrlTreeView_GetChecked($treeprogs, $progsch[$a]) = False Then
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$a])
_TrayItemSetText(@GUI_CtrlId, _GUICtrlTreeView_GetText($treeprogs, $progsch[$a]))
EndIf
EndFunc
;Функция Enable all/Disable all
Func _EnableDisableAll()
$enabler = Not $enabler
For $i = 1 To $progs[0]
_GUICtrlTreeView_SetChecked($treeprogs, $progsch[$i], $enabler)
Next
EndFunc
;Угадайте что значит эта функция :P
Func _About()
MsgBox(0, "About", "AutoIt Based Post-Installation Wizard v1.2-beta")
EndFunc
;Функция выхода
Func _Term()
If $params[2] = 1 And $params[5] = 0 Then
GUIDelete()
_TrayIconDelete($tray)
EndIf
If Not $main Then
Exit
Else
GUIDelete()
Exit
EndIf
EndFunc