Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release no contiene carpetas #720

Open
dc740 opened this issue Jul 6, 2020 · 6 comments
Open

Release no contiene carpetas #720

dc740 opened this issue Jul 6, 2020 · 6 comments

Comments

@dc740
Copy link

dc740 commented Jul 6, 2020

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.

@RenxoAr
Copy link

RenxoAr commented Jul 19, 2020

Me estaba pasando lo mismo usando Ark en Manjaro KDE, al usar por terminal el comando unzip no pasa.
Creen una carpeta o asignen destino con el -d porque unzip descomprime todo en el lugar.
La opcion -d crea la carpeta si no existe.
ej:
unzip v0.13.46 -d $PATH/carpeta

@dc740
Copy link
Author

dc740 commented Jul 22, 2020

@RenxoAr Me diste una buena idea. Fijate que actualicé el script de python. Ahora es un instalador completo. Le pasás el archivo comprimido, el directorio de destino, y listo, te acomoda el archivo de release como corresponde.

Una pena que esté este bug, pero al menos ahora no cuesta nada instalar el AO.

@RenxoAr
Copy link

RenxoAr commented Jul 22, 2020

Si estas interesado tengo un repositorio abierto con un instalador bastante funcional para linux. Quizas te sirva algo de ahi o quieras aportarle algo que se nos pasó por alto.

@dc740
Copy link
Author

dc740 commented Jul 22, 2020

ahí miré un poco los scripts a ver que hacían. me parece muy bien!

Off-topic. No relacionado a este bug:
Ya que somos muchos en linux te consulto... vos también ves mal el inventario? Es el único bug que tiene el AO en Linux. El resto funciona genial. También vi que los scripts les tiran este error.

cp: cannot create regular file '/home/dc740/.wine/wineprefix/share/wine/mono': No such file or directory
cp: cannot create regular file '/home/dc740/.wine/wineprefix/share/wine/gecko': No such file or directory

@neoranger
Copy link
Contributor

ahí miré un poco los scripts a ver que hacían. me parece muy bien!

Off-topic. No relacionado a este bug:
Ya que somos muchos en linux te consulto... vos también ves mal el inventario? Es el único bug que tiene el AO en Linux. El resto funciona genial. También vi que los scripts les tiran este error.

cp: cannot create regular file '/home/dc740/.wine/wineprefix/share/wine/mono': No such file or directory
cp: cannot create regular file '/home/dc740/.wine/wineprefix/share/wine/gecko': No such file or directory

El tema del inventario se arregla haciendo click con los 2 botones del mouse. Fijate así lo confirmás. A mi también me está dando ese error. Estoy usando KDE Neon, derivada de Ubuntu.

@RenxoAr
Copy link

RenxoAr commented Jul 22, 2020

Si justo acabo de fixear lo de las carpetas, es algo menor porque si no tenes gecko y mono igual te pregunta para bajarlos el propio wine, son un safe en caso que falle wine. Tengo el problema del inventario, tambien tengo dos videos subidos en el discord de aolibre mostrando lo del bug ese del inventario, estoy viendo si es un tema con las librerias, con algun override de algun dll. Si clickeas con los dos botones al mismo tiempo o arrastras algun item con click derecho se "arregla" temporalmente, igual la grilla del inventario funciona normal, clickeando la posición que corresponde te elije los items y todo, solo esta el renderizado mal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants