patcher.lua 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. local Patcher = class()
  2. function Patcher:load()
  3. local fs = love.filesystem
  4. local version = fs.exists('version') and fs.read('version'):match('%w+') or ''
  5. local os = love.system.getOS()
  6. if os == 'OS X' then os = 'OSX' end
  7. local code, gameData = app.net.goregous:patch(version, os)
  8. if false and code and f.exe(self['patch' .. os], self, code, gameData) then
  9. love.event.quit()
  10. else
  11. app.util.context:remove(self)
  12. app.util.context:add(app.context.menu)
  13. end
  14. end
  15. function Patcher:patchWindows(code, data)
  16. local src = love.filesystem.getWorkingDirectory() .. '\\groupGore.exe'
  17. local dst = love.filesystem.getWorkingDirectory() .. '\\groupGore.exe.old'
  18. os.execute('move ' .. src .. ' ' .. dst)
  19. local file = io.open(love.filesystem.getWorkingDirectory() .. '\\groupGore.exe', 'w')
  20. file:write(code)
  21. file:close()
  22. love.filesystem.write('data.zip', data)
  23. os.execute(src)
  24. end
  25. function Patcher:patchOSX(code, data)
  26. local app = love.filesystem.getWorkingDirectory() .. '/groupGore.app'
  27. local zip = app .. '.zip'
  28. local file = io.open(zip, 'w')
  29. file:write(code)
  30. file:close()
  31. love.filesystem.write('data.zip', data)
  32. os.execute('unzip -o ' .. zip)
  33. os.execute('rm ' .. zip)
  34. os.execute('open ' .. app .. ' --args local')
  35. end
  36. return Patcher