Hopefully improve packaging. This is experimental and may have to be removed.
This commit is contained in:
41
move_dirs_hook.py
Normal file
41
move_dirs_hook.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
# Runtime hook to move directories and files from _internal to parent directory
|
||||||
|
if hasattr(sys, '_MEIPASS'):
|
||||||
|
# We're running from a PyInstaller bundle
|
||||||
|
bundle_dir = os.path.dirname(sys.executable)
|
||||||
|
internal_dir = sys._MEIPASS
|
||||||
|
|
||||||
|
# Directories to move from _internal to parent
|
||||||
|
dirs_to_move = ['levels', 'sounds', 'libstormgames']
|
||||||
|
|
||||||
|
# Files to move from _internal to parent
|
||||||
|
files_to_move = ['files', 'logo.png']
|
||||||
|
|
||||||
|
# Move directories
|
||||||
|
for dir_name in dirs_to_move:
|
||||||
|
internal_path = os.path.join(internal_dir, dir_name)
|
||||||
|
target_path = os.path.join(bundle_dir, dir_name)
|
||||||
|
|
||||||
|
# Only move if source exists and target doesn't exist
|
||||||
|
if os.path.exists(internal_path) and not os.path.exists(target_path):
|
||||||
|
try:
|
||||||
|
shutil.move(internal_path, target_path)
|
||||||
|
except Exception as e:
|
||||||
|
# Silently fail if we can't move - game will still work from _internal
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Move files
|
||||||
|
for file_name in files_to_move:
|
||||||
|
internal_path = os.path.join(internal_dir, file_name)
|
||||||
|
target_path = os.path.join(bundle_dir, file_name)
|
||||||
|
|
||||||
|
# Only move if source exists and target doesn't exist
|
||||||
|
if os.path.exists(internal_path) and not os.path.exists(target_path):
|
||||||
|
try:
|
||||||
|
shutil.move(internal_path, target_path)
|
||||||
|
except Exception as e:
|
||||||
|
# Silently fail if we can't move - game will still work from _internal
|
||||||
|
pass
|
||||||
@@ -18,11 +18,13 @@ a = Analysis(
|
|||||||
datas=level_dirs + [
|
datas=level_dirs + [
|
||||||
('sounds', 'sounds'),
|
('sounds', 'sounds'),
|
||||||
('libstormgames', 'libstormgames'),
|
('libstormgames', 'libstormgames'),
|
||||||
|
('files', 'files'),
|
||||||
|
('logo.png', '.'),
|
||||||
],
|
],
|
||||||
hiddenimports=[],
|
hiddenimports=[],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=[],
|
runtime_hooks=['move_dirs_hook.py'],
|
||||||
excludes=[],
|
excludes=[],
|
||||||
noarchive=False,
|
noarchive=False,
|
||||||
optimize=0,
|
optimize=0,
|
||||||
@@ -39,7 +41,7 @@ exe = EXE(
|
|||||||
bootloader_ignore_signals=False,
|
bootloader_ignore_signals=False,
|
||||||
strip=False,
|
strip=False,
|
||||||
upx=True,
|
upx=True,
|
||||||
console=True,
|
console=False,
|
||||||
disable_windowed_traceback=False,
|
disable_windowed_traceback=False,
|
||||||
argv_emulation=False,
|
argv_emulation=False,
|
||||||
target_arch=None,
|
target_arch=None,
|
||||||
|
|||||||
Reference in New Issue
Block a user