Skip to content

Release no contiene carpetas #720

Open
@dc740

Description

Que sistema operativo usas ? // What operating system and version?
Ubuntu 20.04

Que hiciste para que ocurriera? // What did you do?
Descargué el release directo desde la página:
https://github.com/ao-libre/ao-cliente/releases

Que esperabas que pase? // What did you expect to happen?
Dado que el actualizador no funciona en Linux, bajar el release completo es la única forma de descargarlo y jugarlo (a excepción del inventario que se ve mal). Ya lo había probado con anterioridad y hoy quise volver a jugar.

Que fue lo que paso? // What actually happened?
En el archivo comprimido, en lugar de esar dentro de carpetas, los archivos nombres de archivo tienen el nombre de carpeta. Ejemplo:
AUDIO/midi/1.mid

En lugar de estar en la carpeta AUDIO con la subcarpeta midi... el nombre del archivo es AUDIO\midi\1.mid (con la contrabarra que usa windows).


más allá de ese problema, el cliente funciona relativamente bien en linux. He logrado que corra sin problemas y unicamente me muestra mal el inventario (clickear y usarlo funciona bien, pero no se ven los items)


WORKAROUND

#!/usr/bin/env python

import argparse
import os
import pathlib
import shutil
from zipfile import ZipFile

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--ao-zip', help='AO full release zip file')
    parser.add_argument('--install-dir', help='AO install dir')
    args = parser.parse_args()
    
    print("Creating destination directory.")
    pathlib.Path(args.install_dir).mkdir(parents=True, exist_ok=True)

    print("Unzipping full release file.")
    with ZipFile(args.ao_zip, 'r') as zipObj:
        zipObj.extractall(path=args.install_dir)
    
    print("Renaming files.")
    for root, dirs, files in os.walk(args.install_dir):
        for name in files:
            filename = name[name.rfind('\\')+1:]
            real_directory = name[:name.rfind('\\')].replace('\\', '/')
            original_file = os.path.join(root,name)
            if name.rfind('\\')>0:
                final_path = os.path.join(root, real_directory)
                if len(filename) > 0:
                    final_filename = os.path.join(final_path, filename)
                    print(f'Moving {final_filename}')
                    pathlib.Path(final_path).mkdir(parents=True, exist_ok=True)
                    shutil.move(
                        original_file,
                        final_filename
                    )
                else:
                    print(f'Creating empty directory {final_path}')
                    pathlib.Path(final_path).mkdir(parents=True, exist_ok=True)
                    os.remove(original_file)

Descargamos el AO completo. No el auto-update, sino el release del cliente completo, guardamos el script de arriba y lo corremos pasandole el archivo zip del release, y el directorio donde queremos instalar el AO. Ejemplo:
python install_ao.py --ao-zip $HOME/Downloads/v0.13.47.zip --install-dir $HOME/ao

Eso descomprime el archivo, crea todas las carpetas y renombra los archivos.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions