Preserve AppImage files; do not extract them

My previous fixes here were misguided. Those AppImage files must not be
extracted at all or they won't work.

I've created a sort of dumb extractor function for them that just copies
the .AppImage file; this avoids letting 7-zip ever see them, so they don't
get damaged.
This commit is contained in:
Daniel Johnson 2022-10-09 06:37:13 -04:00
parent d0b7ea8516
commit e6a1138754
3 changed files with 15 additions and 2 deletions

View file

@ -87,6 +87,8 @@ def guess_extractor(path):
extractor = "exe"
elif path.endswith(".deb"):
extractor = "deb"
elif path.endswith(".AppImage"):
extractor = "AppImage"
else:
extractor = None
return extractor
@ -113,6 +115,8 @@ def get_archive_opener(extractor):
opener = "exe"
elif extractor == "deb":
opener = "deb"
elif extractor == "AppImage":
opener = "AppImage"
else:
opener = "7zip"
return opener, mode
@ -187,6 +191,8 @@ def _do_extract(archive, dest, opener, mode=None, extractor=None):
extract_gog(archive, dest)
elif opener == "deb":
extract_deb(archive, dest)
elif opener == "AppImage":
extract_AppImage(archive, dest)
else:
handler = opener(archive, mode)
handler.extractall(dest)
@ -233,6 +239,13 @@ def extract_deb(archive, dest):
break
def extract_AppImage(path, dest):
"""This is really here to prevent 7-zip from extracting the AppImage;
we want to just use this sort of file as-is."""
system.create_folder(dest)
shutil.copy(path, dest)
def extract_gog(path, dest):
if check_inno_exe(path):
decompress_gog(path, dest)

View file

@ -3,7 +3,7 @@
"description": "Basilisk II is an Open Source 68k Macintosh emulator",
"platforms": ["Macintosh"],
"runnable_alone": "True",
"runner_executable": "basiliskii/usr/bin/BasiliskII",
"runner_executable": "basiliskii/BasiliskII-x86_64.AppImage",
"download_url": "https://github.com/Korkman/macemu-appimage-builder/releases/download/continuous/BasiliskII-x86_64.AppImage",
"game_options": [
{

View file

@ -3,7 +3,7 @@
"description": "SheepShaver emulates a PowerMacintosh computer",
"platforms": ["Macintosh"],
"runnable_alone": "True",
"runner_executable": "sheepshaver/usr/bin/SheepShaver",
"runner_executable": "sheepshaver/SheepShaver-x86_64.AppImage",
"download_url": "https://github.com/Korkman/macemu-appimage-builder/releases/download/continuous/SheepShaver-x86_64.AppImage",
"game_options": [
{