[Pregunta] Botón actualizador.

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Buenas!! Que tal amigos?? Quería consultar si alguno sabe si hay algún código para actualizar un programa desde un botón. Osea, pongo un botón que dice "actualizar" y que busque actualizaciones en mi servidor. Yo coloque un código para que lo haga para cuando se abra el programa, pero me gustaría ademas ponerlo en un botón. Muchas gracias!!

Aclaración: Mi programa busca la versión en mi host. Ejemplo: "http://mipagina.com/version.php"
Utiliza el buscador man :pc: :pc:

Video Parte 01


Video Parte 02
https://www.youtube.com/watch?v=EfnV9lIIKbA&t=13s
luasqlite escribió:
25 Oct 2017 04:16
Utiliza el buscador man :pc: :pc:
Si compañero, ese lo tengo y es el que uso, ese busca la actualización cuando el programa se abre, pero yo buscaba un cogido para que cuando le den clic en el botón busque si hay alguna :SOS:
Solo pon el codigo en un boton---Recuerda este codigo no es mio es de "San Rafa"
function getNewVersion()
		
	newVersion = HTTP.Submit("http://[WWW.TUSERVER.COM]/version.php",{}, SUBMITWEB_GET, 20, 80, nil, nil);-- hacemos peticion rest al servidor al archivo version.php
	appVersionInfo = File.GetVersionInfo(_SourceFolder.."\\".._SourceFilename); -- version actual de la pp
	compare = String.CompareFileVersions(appVersionInfo.ProductVersion, tostring(newVersion));--Comparamos versiones

	if(compare == -1)then-- hay una nueva actualizacion
	
		--Dialog.Message("Update", "Hay una nueva actualización disponible ", MB_OKCANCEL, MB_ICONINFORMATION, MB_DEFBUTTON1);
		if(Dialog.Message("Update", "Hay una nueva actualización disponible ¿Quieres instalarla?", MB_OKCANCEL, MB_ICONINFORMATION, MB_DEFBUTTON1)== IDOK)then
			StatusDlg.SetTitle("Descargando . . . ");
			
			StatusDlg.SetMessage("Archivo de actualización . . . ");

			StatusDlg.SetMeterRange(0, 65534);
		
			StatusDlg.Show(0, false);
			-- descargamos actualizador UPDATE.exe
			HTTP.DownloadSecure("https://[WWW.TUSERVER.COM]/[TU_UPDATE.exe]", _DesktopFolder.."\\[TU_UPDATE.exe]", MODE_BINARY, 20, 443, nil, nil, DownloadCallback);
		
			StatusDlg.Hide();
			--Comprobamos si hai errores
			error = Application.GetLastError();
			
			if error ~= 0 then
			
        		Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
    		
   			else
   				Dialog.Message("OK","Descargado, Ejecuta [TU_UPDATE.exe]", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
   				
   				File.Open(_DesktopFolder, "", SW_SHOWNORMAL);
   				Application.Exit(0);
   				
   			end

		end
	end
end

function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
    -- Convert total and downloaded bytes into formatted strings
    sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
    sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

    -- Output time left, formatted.
    StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);
    
    -- Output formatted sizes to user through statusdlg status text
    StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

    -- Set meter position (fraction downloaded * max meter range)
    StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end
luasqlite escribió:
25 Oct 2017 04:27
Solo pon el codigo en un boton---Recuerda este codigo no es mio es de "San Rafa"
function getNewVersion()
		
	newVersion = HTTP.Submit("http://[WWW.TUSERVER.COM]/version.php",{}, SUBMITWEB_GET, 20, 80, nil, nil);-- hacemos peticion rest al servidor al archivo version.php
	appVersionInfo = File.GetVersionInfo(_SourceFolder.."\\".._SourceFilename); -- version actual de la pp
	compare = String.CompareFileVersions(appVersionInfo.ProductVersion, tostring(newVersion));--Comparamos versiones

	if(compare == -1)then-- hay una nueva actualizacion
	
		--Dialog.Message("Update", "Hay una nueva actualización disponible ", MB_OKCANCEL, MB_ICONINFORMATION, MB_DEFBUTTON1);
		if(Dialog.Message("Update", "Hay una nueva actualización disponible ¿Quieres instalarla?", MB_OKCANCEL, MB_ICONINFORMATION, MB_DEFBUTTON1)== IDOK)then
			StatusDlg.SetTitle("Descargando . . . ");
			
			StatusDlg.SetMessage("Archivo de actualización . . . ");

			StatusDlg.SetMeterRange(0, 65534);
		
			StatusDlg.Show(0, false);
			-- descargamos actualizador UPDATE.exe
			HTTP.DownloadSecure("https://[WWW.TUSERVER.COM]/[TU_UPDATE.exe]", _DesktopFolder.."\\[TU_UPDATE.exe]", MODE_BINARY, 20, 443, nil, nil, DownloadCallback);
		
			StatusDlg.Hide();
			--Comprobamos si hai errores
			error = Application.GetLastError();
			
			if error ~= 0 then
			
        		Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
    		
   			else
   				Dialog.Message("OK","Descargado, Ejecuta [TU_UPDATE.exe]", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
   				
   				File.Open(_DesktopFolder, "", SW_SHOWNORMAL);
   				Application.Exit(0);
   				
   			end

		end
	end
end

function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
    -- Convert total and downloaded bytes into formatted strings
    sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
    sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

    -- Output time left, formatted.
    StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);
    
    -- Output formatted sizes to user through statusdlg status text
    StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

    -- Set meter position (fraction downloaded * max meter range)
    StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end
Woow.. Muchisimas gracias, ya lo pruebo. Gracias por tu tiempo y ayuda amigo :yeah: