Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion build_exe.ps1
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
function Get-ParentPath {
param([string]$path)

# Check if the path is just a file (no backslashes or forward slashes)
if ($path -notmatch '[\\/]') {
return '.' # Return '.' for just a file without a directory
}

# Use Split-Path to get the parent directory
return (Split-Path $path -Parent)
}

# Get picked data to get name and icon
$paths_py = python -c "import pickle; m = pickle.load(open('extracted/data.pkl', 'rb')); print([a.package_path for a in m])"
$paths_py_doublequotes = $paths_py -replace "'", '"'
$paths_json = $paths_py_doublequotes | ConvertFrom-Json
$main_app_path = $paths_json[0]
$addDataArgs = $paths_json | ForEach-Object { "--add-data `'$($_):.`'" }
$addDataArgs = $paths_json | ForEach-Object {
$parent_path = Get-ParentPath $_
"--add-data `'$($_):$parent_path`'"
}
$addDataString = $addDataArgs -replace "`r?`n", ""

$basename = [System.IO.Path]::GetFileNameWithoutExtension($main_app_path)
Expand All @@ -13,4 +28,5 @@ $icon = python -c "import pickle; print(pickle.load(open('extracted/data.pkl', '
# Build command
# This only works when first stored as a string - some powershell string issue for the add-data commands
$command_str = "pyinstaller .\src\msix_global_installer\app.py --add-data 'extracted:extracted' $addDataString --onefile --name $pathexe --icon $icon --noconsole"
Write-Host "Running command: $command_str"
Invoke-Expression $command_str
2 changes: 2 additions & 0 deletions extract_msix_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,6 @@ def get_metadata(paths: list[str]) -> list[msix.MsixMetadata]:
image.save_image(scaled_image, scaled_image_path)
metadata.scaled_icon_path = scaled_image_path

print(f"\nExtracted: {all_metadata}")

pickler.save_metadata(data_file_path=data_file, metadata_list=all_metadata)
4 changes: 1 addition & 3 deletions src/msix_global_installer/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ def process_event(event: events.Event):
if event.name == events.EventType.REQUEST_MSIX_METADATA:
meta = pickler.load_metadata(config.EXTRACTED_DATA_PATH)
logger.info("Got metadata %s", meta)
metadata_event = events.Event(
name=events.EventType.MSIX_METADATA_RECEIVED, data=meta
)
metadata_event = events.Event(name=events.EventType.MSIX_METADATA_RECEIVED, data=meta)
events.post_event_sync(event=metadata_event, event_queue=events.gui_event_queue)
elif event.name == events.EventType.INSTALL_MSIX:
install_globally = event.data["global"]
Expand Down
5 changes: 2 additions & 3 deletions src/msix_global_installer/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import pathlib
from msix_global_installer import pyinstaller_helper

EXTRACTED_DATA_PATH: pathlib.Path = pyinstaller_helper.resource_path(
"extracted/data.pkl"
)
EXTRACTED_DATA_PATH: pathlib.Path = pyinstaller_helper.resource_path("extracted/data.pkl")
ALLOW_DEPENDENCIES_TO_FAIL_DUE_TO_NEWER_VERSION_INSTALLED = True
4 changes: 1 addition & 3 deletions src/msix_global_installer/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,7 @@ async def wait_for_queue(timeout_s: int, event_queue: asyncio.Queue) -> None:
current_time = time.monotonic_ns()
await asyncio.sleep(0)
if current_time - initial_time > timeout_ns:
raise TimeoutError(
f"Timed out waiting for event queue to clear. Events: {str(event_queue)}"
)
raise TimeoutError(f"Timed out waiting for event queue to clear. Events: {str(event_queue)}")
elif event_queue.empty():
break

Expand Down
6 changes: 1 addition & 5 deletions src/msix_global_installer/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,7 @@ class InfoScreen(ttk.Frame, events.EventHandler):
def __init__(self, parent: tkinter.Tk, *args, **kwargs):
ttk.Frame.__init__(self, parent, *args, **kwargs)
self.parent: tkinter.Tk = parent
post_backend_event(
events.Event(
events.EventType.REQUEST_MSIX_METADATA, data=events.EventData()
)
)
post_backend_event(events.Event(events.EventType.REQUEST_MSIX_METADATA, data=events.EventData()))

self.title = ttk.Label(self, text="Install MSIX Application")
self.title.grid(row=0, column=0, sticky="W")
Expand Down
Loading
Loading