---
title: roBrightPackage
slug: develop/es/robrightpackage
docTags: 
createdAt: 2025-03-11T07:07:17.200Z
---

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*.

```text
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

:::hint{type="info"}
*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**

```text
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:

1. Dispositivos USB externos del 1 al 9
2. SD
3. µ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*.

:::hint{type="danger"}
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**

```text
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 [registro](docId\:KF6Wam7iqXizx7ADu18g-), en la sección "security" con el nombre "autozipkey", para descifrar el archivo.

**Ejemplo** **extendido**

```text
' 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
```

