Anuncios Google

Sistema de actualizacion en homebrew [LuaDev] (SOLUCIONADO)

Hola.. ya estamos por aqui con otra duda..

A ver, estoy haciendo un Homebrew, bastante chapucero, pero para ser el primero no esta nada mal, aqui lo podeis ver, descargar, criticar, etc..

http://www.elotrolado.net/hilo_homebrew-vita-emulators-insta...

 

Bien, ahora viene la duda, el caso es que ya estoy preparando una nueva version eliminando algo de codigo inutil y para añadir mas homebrews.. hasta aqui bien.

La cosa es que teniendo en cuenta el caracter del mismo, me gustaria poder crear un sistema de actualizacion, para asi poder ir añadiendo nuevos contenido descargable y que solo haya que actualizar el homebrew para diponer de lo que haya nuevo.

Entonces, mi plan es, crear un nuevo script que bautizare instalaciones.lua en cual metere los sub-menus y todas las funcciones que hay para cada homebrew, quedando 4 scripts:

script.lua --> basicamente es una intro y declaracion de alguna cosillas como colores imagenes y etc..

menu.lua --> seria solo el menu principal y nada mas

instalaciones.lua --> que llevaria los sub menus y funciones para instalacion de los contenidos (este es el que hay que actualizar, obviamente)

cretido.lua --> sobra las palabras de lo que es, XD

Bien, el tema es que tengo ya todo mas o menos hecho, pense en un sencillo sub menu dentro del menu.lua que se encargue de las actualizaciones, algo asi:

function menu_actualizacion()
actualizacion= 1
 
while true do
      screen.clear()
      controls.read()
      fondo:blit(0,0)
      screen.print(245,30,"Sistema de Actualizaciones",1.5,blanco,grisoscuro,"center")
      screen.print(15,80,"  Buscar actualizacion",0.7,blanco,grisoscuro)
      screen.print(15,250,"  Atras",0.6,blanco,grisoscuro)
 
if controls.press("down") then
	actualizacion = actualizacion+ 1 
	sound.play(tic)
	end
if controls.press("up") then
	actualizacion = actualizacion- 1
	sound.play(tic)
	end
 
	if actualizacion == 1 then
		screen.print(15,80,">Buscar actualizacion",0.7,blanco,azul2)
		end
	if games == 2 then
		screen.print(15,250,">Atras",0.6,blanco,azul2)
		end	
 
		if controls.press("cross") then
			if actualizacion== 1 then
			--Aqui la llamada a la funcion que se encarga de las actualizaciones
			elseif actualizacion== 2 then
			break end
		end	
 
if actualizacion== 0 then
actualizacion= 2
end
if actualizacion== 3 then
actualizacion= 1
end
 
screen.flip()		
end
end

(ignorar pequeños errores en este codigo que lo hice asi corriendo solo para os hagais una idea)

Bien hasta aqui voy mas o menos bien, se como descargar un archivo de mi dropbox y sustituir el instalaciones.lua por otro, que seria la actualizacion en si, ahora viene mi duda, (si, despues de todo el tocho)

¿Como hago para que verifique el archivo que tengo online y solo lo descargue si es mas reciente? Vamos, lo que viene a ser una comprobacion de actualizacion de toda la vida.. eso es lo que no tengo ni idea de como hacerlo..

 

Un saludo y gracias por adelantado.


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de cosvel

Estoy casi ahi..

Pero tengo un problema.. que tengo que poner dentro del txt?

A ver.. eh probado poner dentro del TXT:

newversion=1

1

"1"

Y siempre me da el mismo error, que es, "atempt to compare number with user data" ...

El codigo es ese, lo hice a modo de prueba: (asi tambien hechais una risa) XDD

version_actual = 1 --cree la variable de la version actual
 
function comparar()
	while true do	
		screen.clear()
		newversion = io.open("ms0:/PSP/GAME/Emu Installer/downloads/version.txt","r")
		newversion:read()
			if newversion > version_actual then --AQUI ME SALE EL ERROR, en esta linea
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Hay una nueva version",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(300)
				txt:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			elseif newversion <= version then
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"no hay una version actual",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(100)
				txt:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			end
	end
end


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Imagen de Jepte

 prueva

 

prueva haci.

newvercion=newvercion:read()

 

edito tienes que usar otra variable para poder cerrar el newversion  

 

newversion_abrir=io.open()

nueva version=nuevaversion_abrir:read()

 

Imagen de cosvel

Humm

Me he perdido...

Voy a probar a ver que saco..

 

Y dentro del TXT? Pongo un 1 a secas?

 

Te refieres a eso?

function comparar()
	while true do	
		screen.clear()
		newversion_abrir = io.open("ms0:/PSP/GAME/Emu Installer/downloads/version.txt","r")
		newversion=newversion_abrir:read()
			if newversion > version_actual then	
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Felipe eres un crack",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(300)
				newversion_abrir:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			elseif newversion <= version then
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Ahora si que molassss",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(100)
				newversion_abrir:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			end
	end
end


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Imagen de Jepte

si, otra forma puedes

si, otra forma puedes utilizar mejor un dofile y asi la variable se actualiza.

function comparar()
	while true do	
		screen.clear()
		dofile("archivo_descargado.txt")
			if newversion > version_actual then	
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Felipe eres un crack",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(300)
				newversion_abrir:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			elseif newversion <= version then
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Ahora si que molassss",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(100)
				newversion_abrir:close()
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			end
	end
end

Imagen de Jepte

no,no me refiero a eso me

no,no me refiero a eso me refiero ala variable que estas usando en el io.open()

Imagen de cosvel

Vale..

Entonces dentro del txt tendria que poner newversion=1 ?

 

Imagen de Jepte

sip.

sip.

Imagen de Jepte

en el caso del io.open si

en el caso del io.open si, pones  el numero de la version, tendrias que poner :read("*n"), de esta forma te devuelve un numero.

Imagen de cosvel

Eureka!!

Me ha salido con el dofile..

function comparar()
	while true do	
		screen.clear()
		dofile("ms0:/PSP/GAME/Emu Installer/downloads/version.txt")
			if newversion > version_actual then	
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"No hay nueva version disponible",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(300)
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			elseif newversion <= version_actual then
				draw.gradrect(0,0,480,272,grisclaro,grisclaro,grisoscuro,grisoscuro)
				screen.print(240,90,"Hay una nueva version disponible",1.0,blanco,sombraverde,"center")
				screen.waitvblankstart(100)
				wlan.term()
				limpiar_ram()
				collectgarbage("collect")
					dofile("./lua/menu.lua")
			end
	end
end

Ahora a adaptarlo al homebrew..

 

Gracias a ambos por la mano..

 

 


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Imagen de Jepte

mejor. if

mejor.

if http.get(ruta_url)==nil then
 
ok=os.message("Hay una nueva actualizasion disponible".."\n".."Desea descargar")
 
if ok==1 then
http.get(ruta_url,ruta_archivo_guardar)
end
 
end

como http.get devuelve un string , si no lo encuentra me imagino que devuelve nil, tambien puedes utilizar este metodo  if http.get()~="" then .

 

 

Imagen de cosvel

Eso..

Lo probare luego a ver que ocurre y comento algo.. muchas gracias

 

Imagen de Jepte

..

pues , puedes hacerlo de varias formas, checando el contenido del archivo, por ejemplo en el archivo de actualizasion pones la version entonces ya nomas checas la version del archivo, otra forma seria cambiando el nombre al archivo por ejemplo actualizasion_1.1, checar el nombre y lo comparas con el que tienes y si es diferente entonces lo descargas o mas bien lo guardas.

Imagen de cosvel

Vale, lo segundo me parece

Vale, lo segundo me parece mas sencillo..

Pero la duda es como hacer esa comprobacion? Se puede hacer online mirando el archivo que hay en el dropbox o hay que descargarlo para luego comprobar?

Y en ambos casos, como lo hago...

Por ejemplo, supongamos que descargo el archivo blablabla_1.1.1.lua, y quiero que si es mayor o menor a blablabla.1.1.0.lua  haga una cosa u otra.. mi duda es como hacer esa comparacion.. si se pudiera hacer online antes de descargar mejor todavia, pero me da a mi que no no?


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Se me ocurre una forma bien

Se me ocurre una forma bien sencilla: Subir un archivo txt que contenga la versión que está en el server (digamos que dentro sólo contenga "3" o la versión que sea), lo descargas, lo lees y lo comparas con alguna variable en tu script (puedes poner v=loquesea en algún script, para comparar). Si es mayor, pues bajas el archivo de actualización y lo instalas. Fácil no?

Imagen de cosvel

Depende..

Para quien sabeo que hace seguramente si, pero para un noob como yo es algo asi como.. que???!!.. jajaja

Va, en serio, seguramente sea la manera mas correcta, pero no doy para tanto de momento... ;(


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Pues yo de tí empezaría a

Pues yo de tí empezaría a practicar, porque eso lo más sencillo que se puede hacer (hay otra forma más correcta, pero debes saber de sockets y peticiones, y es algo más difícil que sólo bajar un txt y leerlo xD).

Imagen de cosvel

Vale..

A ver si te he entendido..

Pongamos un ejemplo... pongo una variable en el scritp, algo si como version = 1... cuando haga una actualizacion subo el nuevo scritp con dicha variable actualizada y un txt que ponga 2.. entonces hago que descargue el txt y lo compare con la variable version, y si es mayor descargue el script, y si no break end y santas pascuas..

Eso supondria dos descargas no? Descargar el txt y luego la actualizacion.

Podrias poner un ejemplo sencillo de como leer un archivo y comparar el contenido con alguna variante? Si no es abusar mucho.. XD


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Así es, dos descargas. Lo

Así es, dos descargas. Lo bueno es que el txt no ocupa casi nada, asi que la revisión se hace rápido y sin descargar el resto de archivos.

Ejemplo de cómo leer archivos aquí (y también está la web oficial de Lua, que no hace daño leer jeje).

Imagen de cosvel

Guay..

Con saber que la funcion se llama io ya investigo.

Casi mejor lo hago en un sola descarga, que descargue ambos en zip, lo desempaquete, lea el txt y si procede sustituya el script, y en ambos casos borro los temporales, es factible a que si?

Gracias.


Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb

¨Intentemos hacer facil lo dificil, no dificil lo facil.¨

Imagen de Jepte

talves esto funcione. if

talves esto funcione.

if http.get(ruta_url)~=ruta_url then
 
ok=os.message("Hay una nueva actualizasion disponible".."\n".."Desea descargar")
 
if ok==1 then
http.get(ruta_url,ruta_url_archivo)
end
 
end

solo falta checar que devuelve http.get() cuando no encuentra el archivo, si no lo encuentra quiere decir que hay una nueva actualizasion.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.