local sDefaultFolder = Input.GetText("Out_dir"); -- папка с файлами .nup local sInSectionName = "update_info"; -- имя секции в файлах .nup с нужными данными local sOutFileName = sDefaultFolder.."\\update.ver"; -- путь+имя файла результата local tFiles = File.Find(sDefaultFolder, "*.nup", false, false, nil, nil); -- таблица файлов .nup (путь+имя) if (tFiles) then -- если есть файлы .nup -- в цикле обрабатываем каждый файл .nup for _, sFile in pairs(tFiles) do local tValueNames = INIFile.GetValueNames(sFile, sInSectionName); -- таблица имен элементов в секции "update_info" if (tValueNames) then -- если секция "update_info" содержит элементы local tData = {}; -- создаем таблицу элементов из секции "update_info" -- в цикле обрабатываем каждую строку в секции "update_info" for _, sValueName in pairs(tValueNames) do tData[sValueName] = INIFile.GetValue(sFile, sInSectionName, sValueName); -- заполняем таблицу данных ( напрмер: [platform] = x86 ) end local sOutSectionName = tData["name"]; -- имя секции для данных в файле резултата if (sOutSectionName) then -- в цикле обрабатываем таблицу с данными из секции "update_info" for sIdx, sValue in pairs(tData) do if (sIdx ~= "name") and (sIdx ~= "filesize") and (sIdx ~= "filename") and (sIdx ~= "crc") then -- добавляем данные в файл результата, кроме указанных в условии... INIFile.SetValue(sOutFileName, sOutSectionName, sIdx, sValue); end end -- ручное добавление данных в файл результата local nFileSize = File.GetSize(sFile); -- размер текущего файла .nup local sFileName = String.SplitPath(sFile).Filename..String.SplitPath(sFile).Extension; -- имя файла без пути INIFile.SetValue(sOutFileName, sOutSectionName, "size", nFileSize); INIFile.SetValue(sOutFileName, sOutSectionName, "file", sFileName); end end end end |