------------------------------[[ SCRIPT: Global Script ]]------------------------------ -- Download_Callback = Esta es la funcion que se va a llamar cuando el archivo se comience a descargar. function Download_Callback (BytesRead, FileSize, TransferRate, SecondsLeft, SecondsLeftFormat, Message ) Progress.SetCurrentPos("progress", BytesRead/FileSize * 100); Progress.SetText("progress", Message) end ------------------------------[[ SCRIPT: On Shutdown ]]------------------------------ -- Elminar la carpeta temporal creada para descargar el archivo original. Folder.DeleteTree(_SourceFolder.."\\TempFolder", nil); ------------------------------[[ END SCRIPT: On Shutdown ]]------------------------------ -- Lee la Url del archivo original que se va a descargar. filetodownload = ("http://download.thinkbroadband.com/5MB.zip"); -- Testea la conección connection = HTTP.TestConnection("http://www.thinkbroadband.com", 20, 80, nil, nil); if(connection==true)then -- Si está conectado a internet procede -- Crea la carpeta temporal en la raiz. Folder.Create(_SourceFolder.."\\TempFolder"); -- la ruta y el nombre donde se va a descargar. original_file = (_SourceFolder.."\\TempFolder\\archivo original.zip"); Progress.SetVisible("progress", true); -- Muestra la barra de progreso -- Comienza la descarga del archivo en la ruta que pusimos anteriormente (original_file) y llama la funcion para que muestre el progreso (Download_Callback). HTTP.Download(filetodownload, original_file, MODE_BINARY, 20, 80, nil, nil, Download_Callback); Progress.SetVisible("progress", false);-- Esconde la barra de progreso --[[ Llama la DLL "ImagineCRC32FF.dll" Esta DLL solo tiene una funcion "CRC32FF", obtiene el CRC (Cyclic redundancy check - Comprobación de redundancia cíclica) de un archivo. Llamada: STD Tipo de retorno: Long (entero de 32 bits) Argumentos: 1: (string szFilepath) --]]-- checksum1 = DLL.CallFunction(_SourceFolder.."\\ImagineCRC32FF.dll", "CRC32FF", '"'..original_file..'"', DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); ant_text = ("Archivo 1: ") --Escribe el CRC en un Label Label.SetText("crc_file1", ant_text.." "..checksum1) else -- Si no está conectado muestra un mensaje de error Dialog.Message("ImagineCRC32 - Example", "La direccion del archivo no es correcta o usted no está conectado a internet.\r\n\r\nPor favor ingrese una dirección correcta o conectese a internet antes de utilizar este ejemplo.", MB_OK, MB_ICONEXCLAMATION) end -- Lee la ruta de el archivo que se va a comparar filetocompare = ("archivo_previamente_descargado.zip"); -- Comprueba si el archivo existe. existe_archivo = File.DoesExist(filetocompare); if(existe_archivo==true)then -- Si el archivo existe procede --[[ Llama la DLL "ImagineCRC32FF.dll" Esta DLL solo tiene una funcion "CRC32FF", obtiene el CRC (Cyclic redundancy check - Comprobación de redundancia cíclica) de un archivo. Llamada: STD Tipo de retorno: Long (entero de 32 bits) Argumentos: 1: (string szFilepath) ]]-- checksum2 = DLL.CallFunction(_SourceFolder.."\\ImagineCRC32FF.dll", "CRC32FF", '"'..original_file..'"', DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); checksum2 = DLL.CallFunction(_SourceFolder.."\\ImagineCRC32FF.dll", "CRC32FF", '"'..filetocompare..'"', DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); ant_text2 = ("Archivo 2: ") Label.SetText("crc_file2", ant_text2.." "..checksum2) --Escribe el CRC en un Label -- Comprueba si los dos CRC son iguales y muestra el mensaje que corresponde. Label.SetVisible("result", true) if(checksum1==checksum2)then Label.SetText("result", "El archivo en su PC es légitimo.") else Label.SetText("result", "El archivo en su PC es no es légitimo o ha sido modificado.") end else -- Si el archivo no existe muestra un mensaje de error. Dialog.Message("ImagineCRC32 - Example", "Este archivo no existe o la ruta no es válida, por favor escriba una ruta válida al archivo.", MB_OK, MB_ICONEXCL