Что нового

[Автоматизация] Кнопка(Enable all/Disable all) для checkbox'ов из массива программ

S1R1US

скрипт мне запили!
Сообщения
50
Репутация
6
Добрый день! Помогите пожалуйста решить задачу: реализовать кнопку Кнопка(Enable all/Disable all), в графическом меню массовой инсталяции программ, где есть массив программ, которые можно отметить для установки. Инсталлятор с графическим интерфейсом мне предоставил Nik_rus поэтому я не всё могу в нём разобрать...если можно покажите место в коде, где описывается/создается массив. Всё, что необходимо, я прилагаю во вложенном архиве.
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
Код:
$enabler = True
Func _EnableDisableAll()
	For $i=1 To $progs[0]
		_GUICtrlTreeView_SetChecked($treeprogs,$enabler)
	Next
	$enabler = False
EndFunc
 
Автор
S

S1R1US

скрипт мне запили!
Сообщения
50
Репутация
6
После вставки кода кнопка всё равно не работает(

Снова я напортачил, прошу помочь разобраться, чего тут не так, вот код:

Код:
#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)
;Проверка файла конфигурации
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 $params[0]=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
WEnd
;GUI прорисовка
Func _DrawGUI()
	;Создание GUI
	Global $main = GUICreate($params[3],530,760,@DesktopHeight / 14, @DesktopWidth / 20)
	Global $treeprogs = GuiCtrlCreateTreeView(20, 20, 490, 690, 0x120)
	Global $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])
	;Батон старта
	Global $insbtn = GUICtrlCreateButton("Install",15,720,240,35,0)
	Global $nbldsbl = GUICtrlCreateButton("Enable All\Disable All", 260,720,250, 35,0)
	;Бинды
	GUICtrlSetOnEvent($insbtn,"_DoInstall")
	GUICtrlSetOnEvent($nbldsbl,"_EnableDisableAll")
	GUISetOnEvent($GUI_EVENT_CLOSE,"_Term")
	;Занесение прог в массив
	Global $progs[$params[0]+1]
	Global $progsch[$params[0]+1]
	Global $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
		Global $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)
		Global $menu = _TrayCreateMenu("Programs")
		_TrayItemSetIcon($menu, "shell32.dll", 210)
		_TrayCreateItem("")
		_TrayItemSetIcon(-1, "shell32.dll", 211)
		Global $perc = _TrayCreateItem("Install progress")
		_TrayItemSetIcon($perc, "shell32.dll", 255)
		GUICtrlSetState($perc,$GUI_DISABLE)
		Global $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()
	;Занесение прог в массив
	Global $progs[$params[0]+1]
	Global $progsch[$params[0]+1]
	$progs[0]=$params[0]
	;Создание GUI
	Global $main = GUICreate($params[3],330,560,@DesktopHeight / 14, @DesktopWidth / 20)
	Global $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
$enabler = True
Func __EnableDisableAll()
    For $i=1 To $progs[0]
        _GUICtrlTreeView_SetChecked($treeprogs, $enabler)
    Next
    $enabler = False
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
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Автоматизация] Кнопка(Enable all/Disable all) для checkbox\'ов из массива программ

S1R1US [?]
Ну во-первых переменные не объявлены глобально, точнее объявлены но в теле функции, а этого делать нельзя.
Во-вторых, имя функции в назначений события это _EnableDisableAll, а такой функции нет, есть __EnableDisableAll.
Ну и в третьих, переменная $enabler объявлена(?) не там, т.е до неё дело не доходит.


Добавлено:
Сообщение автоматически объединено:

Вот исправленный код (приведён также в читаемый вид):

Код:
#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
 
Автор
S

S1R1US

скрипт мне запили!
Сообщения
50
Репутация
6
Мда..."__" и "_" это конечно мой epic fail :wacko:

Creator, Ваш код идеально сработал! Даже когда выставляешь галочки, а другие снимаешь, он всё равно ставит поверх! Буду ссылаться на Ваш код, при написании скриптов, как на образец))

Большое человеческое спасибо всем кто мне помогал! :IL_AutoIt_1:
 
Верх