Advertisement
TheRio

installer32bit

Mar 12th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.37 KB | None | 0 0
  1. local component = require("component")
  2. local computer = require("computer")
  3. local term = require("term")
  4. local unicode = require("unicode")
  5. local event = require("event")
  6. local fs = require("filesystem")
  7. local internet = require("internet")
  8. local cinternet = component.internet
  9. local keyboard = require("keyboard")
  10. local gpu = component.gpu
  11.  
  12. local HDDs
  13.  
  14. term.clear()
  15.  
  16. -----------------Проверка компа на соответствие сис. требованиям--------------------------
  17.  
  18. local checkSystem = {}
  19.  
  20. print("1 шаг: Подготовка к установке MineTable 32bit...")
  21. print(" ")
  22. print("Проверка системы под нужные требования...")
  23.  
  24. --Проверяем GPU
  25. if gpu.maxResolution() < 80 then table.insert(checkSystem, "Для установки 32 битной версии системы нужен экран и видеокарту минимум 2 уровня.") end
  26.  
  27. --Проверяем оперативку
  28. if math.floor(computer.totalMemory() / 1024 ) < 768 then table.insert(checkSystem, "Недостаточно оперативной памяти - MineTable 32 бит необходимо минимум 768 кб") end
  29.  
  30. --Проверяем не устанавливаем мы MineTable на дискету
  31. if fs.get("bin/shutdown.lua") == nil or fs.get("bin/shutdown.lua").isReadOnly() then table.insert(checkSystem, "Вы не можеет установить MineTable на дискету. Необходимо сначало установить OpenOS с дискеты. После повторите установку.") end
  32.  
  33. if cinternet.isHttpEnabled() == true then else table.insert(checkSystem, "Для установки MineTable нужна интернет карта.") end
  34.  
  35. --Если нашло какое-то несоответствие сис. требованиям, то написать, что именно не так
  36. if #checkSystem > 0 then
  37.   print(" ")
  38.   for i = 1, #checkSystem do
  39.     print(checkSystem[i])
  40.   end
  41.   print(" ")
  42.   print("Возвращаюсь в шелл...")
  43.   return
  44. else
  45.   print(" ")
  46.   print("Эта система подходит минимальным системным требованиям.")
  47.   print(" ")
  48.   print(" ")
  49.   print("Нажмите любую клавишу чтобы перейти к следущему шагу... ")
  50.  
  51.   while true do
  52.     local e = { event.pull() }
  53.     if e[1] == "key_down" or e[1] == "touch" then
  54.       break
  55.     end
  56.   end  
  57.  
  58. end
  59.  
  60.  
  61. ------------------------------ЛИЦ. СОГЛАШЕНИЕ------------------------------------------
  62. term.clear()
  63. print("2 шаг: Лицензионное соглашение")
  64. print(" ")
  65. print("Внимательно прочтите условия данного лицензионного соглашения перед установкой операционной системы.")
  66. print(" ")
  67. print("Нажимая кнопку \"Y\", Вы соглашаетесь с нижеследующим: ")
  68. print(" ")
  69. print(" ")
  70. print("<--Лицензионное соглашение-->")
  71. print(" ")
  72. print("● Вы обязуетесь помнить, что Эмиль пидарас.")
  73. print(" ")
  74. print("● Вы принимаете тот факт, что автор ОС не несет юридической")
  75. print("  ответственности за любой физический и моральный ущерб,")
  76. print("  который Вы можете понести, используя данную ОС.")
  77. print(" ")
  78. print("● В случае несогласия с любым из вышеперечисленных пунктов,")
  79. print("  Вы обязаны нажать \"N\".")
  80. print(" ")
  81. print("<--Лицензионное соглашение-->")
  82. print(" ")
  83. print(" ")
  84. print(" ")
  85. print(" ")
  86. print("Вы принимаете условия лицензионного соглашения [Y/N]?")
  87.  
  88. while true do
  89. local e = { event.pull() }
  90.   if keyboard.isKeyDown("y") then
  91.     term.clear()
  92.     break
  93.   elseif keyboard.isKeyDown("n") then
  94.     term.clear()
  95.     error("Licence decline")
  96.   end
  97. end
  98.  
  99. --------------------------СТАДИЯ ЗАКАЧКИ ОС-----------------------------------
  100. -------------------------------------------------------
  101. local GitHubUserUrl = "https://raw.githubusercontent.com/TheRioMiner/"
  102. -------------------------------------------------------
  103.  
  104. --ЗАГРУЗОЧКА С ГИТХАБА
  105. local function getFromGitHub(url, path)
  106.   local sContent = ""
  107.   local result, response = pcall(internet.request, url)
  108.   if not result then
  109.     return nil
  110.   end
  111.  
  112.   if fs.exists(path) then fs.remove(path) end
  113.   fs.makeDirectory(fs.path(path))
  114.   local file = io.open(path, "w")
  115.  
  116.   for chunk in response do
  117.     file:write(chunk)
  118.     sContent = sContent .. chunk
  119.   end
  120.  
  121.   file:close()
  122.  
  123.   return sContent
  124. end
  125.  
  126. --БЕЗОПАСНАЯ ЗАГРУЗКА
  127. local function getFromGitHubSafely(url, path)
  128.   local success, sRepos = pcall(getFromGitHub, url, path)
  129.   if not success then
  130.     error("Невозможно загрузить \"" .. url .. "\"!\n", 0)
  131.   end
  132.   return sRepos
  133. end
  134. -------------------------- Подготавливаем файловую систему ----------------------------------
  135.  
  136. --Создаем стартовые пути и прочие мелочи чисто для эстетики
  137. local desktopPath = "MineTable/Desktop/"
  138. local picturesPath = "MineTable/Documents/Pictures"
  139.  
  140. fs.makeDirectory(desktopPath .. "My files")
  141. fs.makeDirectory(picturesPath)
  142.  
  143. ---------------------------------------------------------------------------------------------
  144. local filesToDownload = {
  145.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/ECSAPI.lua", path = "lib/ECSAPI.lua" },
  146.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/GUI.lua", path = "lib/GUI.lua" },
  147.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/doubleBuffering.lua", path = "lib/doubleBuffering.lua" },
  148.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/image.lua", path = "lib/image.lua" },
  149.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/advancedLua.lua", path = "lib/advancedLua.lua" },
  150.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/filemanager.lua", path = "lib/filemanager.lua" },
  151.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/files.lua", path = "lib/files.lua" },
  152.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/bit32.lua", path = "lib/bit32.lua" },
  153.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/context.lua", path = "lib/context.lua" },
  154.   { paste = "OpenComputers/master/MineTableInstaller32bit/lib/colorlib.lua", path = "lib/colorlib.lua" },
  155.  
  156.   { paste = "OpenComputers/master/MineTableInstaller32bit/etc/motd", path = "etc/motd" },
  157.   { paste = "OpenComputers/master/MineTableInstaller32bit/bin/emil.lua", path = "bin/emil.lua" },
  158.  
  159.   { paste = "OpenComputers/master/MineTableInstaller32bit/autorun.lua", path = "autorun.lua" },
  160.   { paste = "OpenComputers/master/MineTableInstaller32bit/OS.lua", path = "OS.lua" },
  161.   { paste = "OpenComputers/master/MineTableInstaller32bit/init.lua", path = "init.lua" },
  162. }
  163.  
  164. term.clear()
  165. print("3 шаг: Начинаю скачивание файлов системы...")
  166. print(" ")
  167. os.sleep(1)
  168.  
  169. for i = 1, #filesToDownload do
  170.   print("Загрузка " .. fs.name(filesToDownload[i].path) .. "...")
  171.   getFromGitHubSafely(GitHubUserUrl .. filesToDownload[i].paste, filesToDownload[i].path)
  172. end
  173. os.sleep(1)
  174. term.clear()
  175. print("Файлы системы успешно установлены!")
  176. os.sleep(0.5)
  177.  
  178. -------------------------Стадия перезагрузки------------------------------
  179. term.clear()
  180. print("4 шаг: MineTable 32bit успешно установлена на ваш компьютер!")
  181. print(" ")
  182. print("Компьютер необходимо перезагрузить.")
  183. print(" ")
  184. print(" ")
  185. print("Перезагрузить компьютер [Y/N]?")
  186.  
  187. while true do
  188. local e = { event.pull() }
  189.   if keyboard.isKeyDown("y") then
  190.     term.clear()
  191.     print("Перезагрузка...")
  192.     os.sleep(1)
  193.     computer.shutdown(true)
  194.   elseif keyboard.isKeyDown("n") then
  195.     term.clear()
  196.     print("Возвращаюсь в шелл...")
  197.     os.sleep(1)
  198.     term.clear()
  199.     break
  200.   end
  201. end
  202. --Конец всего дерьмица
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement