--[[ Так выглядит Settings.ini [SELECT] 1=AkelPad 2=NotePad 3=7-zip и т.д. [INSTALL] 1=AkelPad.exe /S 2=NotePad.exe /S 3=7-zip.exe /S --]] ----------------------------------------------- -- On Preload или On Show ----------------------------------------------- local tValueNames = INIFile.GetValueNames(_SourceFolder.."\\DOCS\\Settings.ini", "SELECT"); if tValueNames then for i = 1, #tValueNames do -- Имена элементов (1, 2, 3) в [SELECT] и в [INSTALL] должны совпадать local sFileName = INIFile.GetValue(_SourceFolder.."\\DOCS\\Settings.ini", "SELECT", tValueNames[i]); local sRun = INIFile.GetValue(_SourceFolder.."\\DOCS\\Settings.ini", "INSTALL", tValueNames[i]); ListBox.AddItem("ListBox1", sFileName, sRun); end end ----------------------------------------------- -- Кнопка Install ----------------------------------------------- local tUnChecked = ListBox.GetChecked("ListBox1", BST_UNCHECKED); if tUnChecked then for i = #tUnChecked, 1, -1 do ListBox.DeleteItem("ListBox1", tUnChecked[i]); end end local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED); if tChecked then local function RunEx(s) local function _getArgs(s) assert(type(s) == "string") local s = String.TrimLeft(String.TrimRight(s, nil), nil); local nPos = String.Find(s, " "); if (nPos ~= -1) then return String.Mid(s, 1, (nPos - 1)), String.Mid(s, (nPos + 1), -1); end return s; end -- local sFileName, sArgs = _getArgs(s); File.Run(SourceFolder.."\\"..sFileName, sArgs or "", "", SW_SHOWNORMAL, true); end -- for i = 1, #tChecked do local sRun = ListBox.GetItemData("ListBox1", tChecked[i]); if sRun ~= "" then RunEx(sRun); end end end |