roBrightPackage
Un objeto roBrightPackage representa un archivo .zip, que puede incluir contenido arbitrario o instalarse en un dispositivo de almacenamiento para proporcionar actualizaciones de contenido y scripts (por ejemplo, para distribuir actualizaciones mediante unidades USB). El equivalente de JavaScript es la API Zlib de Node.js.
Creación de objetos: El objeto roBrightPackage se crea con un parámetro de nombre de archivo que especifica el nombre del archivo .zip.
CreateObject("roBrightPackage", filename As String)Limitaciones
El objeto roBrightPackage admite archivos .zip de menos de 4 GB únicamente.
Tecnologías compatibles
- deflate32 (con opciones predeterminadas)
- PPMd (con opciones predeterminadas)
- WinZip (con las opciones "No compression", "Maximum" y "SuperFast"; otras opciones, incluida "Enhanced Deflate", no son compatibles)
- Cifrado AES
Tecnologías no compatibles
- bzip2
- LZMA
- Deflate64
- zip64 (es decir, el software de compresión integrado en Windows Explorer)
ifBrightPackage
ifBrightPackage es una interfaz heredada. Recomendamos usar roAssetPool en su lugar para obtener una mejor funcionalidad.
Unpack(path As String) As Void
Extrae el archivo .zip a la ruta de destino especificada. Todos los archivos preexistentes en el directorio de destino se eliminarán como parte de esta operación. Proporcionar una ruta de destino de "SD:/" eliminará todos los archivos preexistentes de la tarjeta y extraerá el contenido del archivo .zip a la carpeta raíz.
SetPassword(password As String) As Void
Proporciona la contraseña especificada cuando se creó el archivo .zip. Este método admite cifrado AES de 128 y 256 bits, generado por WinZip. El método devuelve falso si la operación falla.
GetFailureReason() As String
UnpackFile(a As String, b As String) As Boolean
Este método toma dos parámetros, nombre de archivo y ruta. nombre de archivo es el nombre del archivo que se va a descomprimir y ruta es la ubicación en la que se descomprimirá el archivo. El método devuelve falso si la operación de descompresión falla.
Ejemplo
package = CreateObject("roBrightPackage", "myfile.zip")
setPassOk = package.SetPassword("test")
if not setPassOk then
print "Failed to set password: "; package.GetFailureReason()
stop
end if
unpackedDir$ = "SD:/unpacked"
DeleteDirectory(unpackedDir$)
dirOk = CreateDirectory(unpackedDir$)
if not dirOk then
print "Failed to create directory: "; unpackedDir$
stop
end if
' Unpack a specific file from the root of myfile.zip
ok = package.UnpackFile("index.html", unpackedDir$)
if not ok then
print "Failed to unpack file: "; package.GetFailureReason()
stop
end if
print "File unpacked successfully."Uso de roBrightPackage para actualizaciones de contenido
Los reproductores BrightSign verifican los dispositivos de almacenamiento en busca de scripts autorun en el siguiente orden:
- Dispositivos USB externos del 1 al 9
- SD
- µSD
Además de buscar scripts autorun.brs, los reproductores BrightSign buscan archivos autorun.zip que contienen el nombre de script autozip.brs. Si se encuentra un archivo autorun.zip con un archivo autozip.brs, y autozip.brs puede descifrarse, entonces el reproductor ejecutará el archivo autozip.brs.
El archivo autozip.brs no puede hacer referencia a ningún archivo externo, ya que es el único archivo que un reproductor BrightSign descomprime automáticamente antes de la ejecución.
El script autozip.brs debe descomprimir el contenido del archivo autorun.zip en un dispositivo de almacenamiento instalado y reiniciar para completar la actualización:
Ejemplo
package = CreateObject("roBrightPackage", "SD:/autorun.zip")
package.Unpack("SD:/")
MoveFile("SD:/autorun.zip", "SD:/autorun.zip_invalid")
RebootSystem()Descompresión de archivos cifrados
Si el archivo autorun.zip está cifrado, entonces el reproductor usa la contraseña almacenada en el registroregistry, en la sección "security" con el nombre "autozipkey", para descifrar el archivo.
Ejemplo extendido
' Content update application
r=CreateObject("roRectangle", 20, 668, 1240, 80)
t=CreateObject("roTextWidget",r,1,2,1)
r=CreateObject("roRectangle", 20, 20, 1200, 40)
t.SetSafeTextRegion(r)
t.SetForegroundColor(&hff303030)
t.SetBackgroundColor(&hffffffff)
t.PushString("Updating content from USB drive, please wait...")
package = CreateObject("roBrightPackage", "autorun.zip")
package.SetPassword("test")
package.Unpack("SD:/")
package = 0
t.Clear()
t.PushString("Update complete - remove USB drive to restart.")
while true
sleep(1000)
usb_key = CreateObject("roReadFile", "USB1:/autorun.zip")
if type(usb_key) <> "roReadFile" then
a=RebootSystem()
endif
usb_key = 0
end while