¿Cómo crear archivos comprimidos de ruta relativa en WinAce? Puede que se haya topado en muchos problemas al compilar archivos, más si son de ruta relativa, ya que de que todos los archivos no están en el mismo directorio y probablemente este utilizando Path.GetFullPath y PathRelativeTo para ubicar el archivo. Por lo que no puede crear la entrada Ace cuando el archivo no está en el mismo directorio que el Ace. Acá le mostramos como resolver este inconveniente.

¿Qué parámetros hay que cumplir para crear archivos comprimidos de ruta relativa en WinAce?

El nombre del archivo o directorio que se comprimirá en un archivo de almacenamiento. El nombre de la ruta debe estar en la estructura Qlg_Path_Name_T. Para obtener más información, consulte Formato de nombre de ruta. No se admiten los caracteres especiales ni la coincidencia de patrones del nombre de la ruta. El único delimitador que acepta esta API en la estructura Qlg_Path_Name_t es una barra inclinada (/).

La ruta puede ser un nombre de ruta absoluto o un nombre de ruta relativo. Todos los nombres de ruta relativa son relativos al directorio actual en el momento de la llamada a QACEACE. El nombre del formato para pasar las opciones del usuario para comprimir un archivo o un directorio a un archivo de almacenamiento. Consulte el formato ACE00100 para obtener una descripción de este formato. Este es un puntero que pasa las opciones del usuario a la API QACEACE en formato ACE00100.

¿Qué permiso se requieren para crear archivos comprimidos de ruta relativa en WinAce?

El usuario debe tener al menos una autoridad de datos * R sobre el archivo que se va a comprimir. El usuario debe tener al menos una autoridad de datos * R para cada directorio en el nombre de la ruta que precede a ese archivo. El usuario debe tener al menos una autoridad de datos * W sobre el directorio donde se escribirá el archivo comprimido. Bloquea archivos cuando se usa esta API.

Sobre esto último, se refiere a que durante el tiempo que esta API lee un archivo para comprimirlo, el archivo se bloqueará y se compartirá con el modo de solo lectura. La API liberará el bloqueo del archivo después de leerlo por completo. Si el archivo que se va a comprimir está bloqueado, se enviará un mensaje de error. Se detendrá la compresión adicional.

¿Qué errores pueden surgir al comprimir archivos de ruta relativa en WinAce?

Además de los siguientes mensajes, la API también arroja una serie de mensajes CPF9898 que describen cuál es el error. CPFA081 No se puede establecer el valor de retorno o el código de error. CPFA08B El nombre de la ruta no puede comenzar con *. CPFA094 Nombre de ruta no especificado. CPFA09C No autorizado para oponerse. El objeto es & 1.

Otros errores menos comunes, pero que pueden encontrarse, son: CPFA09E Objeto en uso. El objeto es & 1. CPFA0A3 La resolución del nombre de la ruta provoca bucles. CPFA0A9 Objeto no encontrado. El objeto es & 1. No se pudo crear el directorio CPFA0C7 & 1. Y finalmente el CPFA0CF Se produjo un error al determinar el directorio actual.

¿Cómo compilar archivos comprimidos de ruta relativa en WinAce?

Para llevar este compilado con éxito, se recomienda utilizar:

class Acer extends AceArchive {

public function addDir($path, $parent_dir = ») {

if($parent_dir != »){

$this->addEmptyDir($parent_dir);

$parent_dir .= ‘/’;

print ‘<br>adding dir ‘ . $parent_dir . ‘<br>’;

}

$nodes = glob($path . ‘/*’);

foreach ($nodes as $node) {

if (is_dir($node)) {

$this->addDir($node, $parent_dir.basename($node));

}

else if (is_file($node))  {

$this->addFile($node, $parent_dir.basename($node));

print ‘adding file ‘.$parent_dir.basename($node) . ‘<br>’;

}

}

}

} // class Acer

Entonces, básicamente, lo que hace es que no incluye los directorios (ruta absoluta) antes del directorio / carpeta real que desea comprimir, sino que solo comienza desde la carpeta real (ruta relativa) que desea comprimir.