feat: ensure toolbar icons are included in MSI bundle during build process
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
This commit is contained in:
parent
a261de3460
commit
856aec65de
1 changed files with 34 additions and 0 deletions
|
|
@ -243,6 +243,10 @@ class WindowsBuilder:
|
||||||
if not self._create_wix_source():
|
if not self._create_wix_source():
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Ensure toolbar icons are present in bundled resources before harvesting.
|
||||||
|
if not self._ensure_toolbar_icons_in_bundle():
|
||||||
|
return False
|
||||||
|
|
||||||
# Harvest application files using Heat
|
# Harvest application files using Heat
|
||||||
print(f" Harvesting application files...")
|
print(f" Harvesting application files...")
|
||||||
dist_folder = self.dist_dir / "WebDropBridge"
|
dist_folder = self.dist_dir / "WebDropBridge"
|
||||||
|
|
@ -352,6 +356,36 @@ class WindowsBuilder:
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def _ensure_toolbar_icons_in_bundle(self) -> bool:
|
||||||
|
"""Ensure toolbar icon files exist in the bundled app folder.
|
||||||
|
|
||||||
|
This guarantees WiX Heat harvest includes these icons in the MSI,
|
||||||
|
even if a previous PyInstaller run omitted them.
|
||||||
|
"""
|
||||||
|
src_icons_dir = self.project_root / "resources" / "icons"
|
||||||
|
bundle_icons_dir = self.dist_dir / "WebDropBridge" / "_internal" / "resources" / "icons"
|
||||||
|
required_icons = ["home.ico", "reload.ico", "open.ico", "openwith.ico"]
|
||||||
|
|
||||||
|
try:
|
||||||
|
bundle_icons_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
for icon_name in required_icons:
|
||||||
|
src = src_icons_dir / icon_name
|
||||||
|
dst = bundle_icons_dir / icon_name
|
||||||
|
|
||||||
|
if not src.exists():
|
||||||
|
print(f"❌ Required icon not found: {src}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
if not dst.exists() or src.stat().st_mtime > dst.stat().st_mtime:
|
||||||
|
shutil.copy2(src, dst)
|
||||||
|
print(f" ✓ Ensured toolbar icon in bundle: {icon_name}")
|
||||||
|
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ Failed to ensure toolbar icons in bundle: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def _create_wix_source(self) -> bool:
|
def _create_wix_source(self) -> bool:
|
||||||
"""Create WiX source file for MSI generation.
|
"""Create WiX source file for MSI generation.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue