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.