diff options
-rw-r--r-- | Misc/NEWS.d/next/Windows/2019-08-06-13-54-12.bpo-37778.AY1XhH.rst | 1 | ||||
-rw-r--r-- | PC/icons/py.png | bin | 0 -> 14151 bytes | |||
-rw-r--r-- | PC/layout/support/appxmanifest.py | 33 |
3 files changed, 20 insertions, 14 deletions
diff --git a/Misc/NEWS.d/next/Windows/2019-08-06-13-54-12.bpo-37778.AY1XhH.rst b/Misc/NEWS.d/next/Windows/2019-08-06-13-54-12.bpo-37778.AY1XhH.rst new file mode 100644 index 0000000..14d81c0 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2019-08-06-13-54-12.bpo-37778.AY1XhH.rst @@ -0,0 +1 @@ +Fixes the icons used for file associations to the Microsoft Store package. diff --git a/PC/icons/py.png b/PC/icons/py.png Binary files differnew file mode 100644 index 0000000..5c184e6 --- /dev/null +++ b/PC/icons/py.png diff --git a/PC/layout/support/appxmanifest.py b/PC/layout/support/appxmanifest.py index 0a0f1fc..4273b42 100644 --- a/PC/layout/support/appxmanifest.py +++ b/PC/layout/support/appxmanifest.py @@ -65,6 +65,8 @@ IDLE_VE_DATA = dict( BackgroundColor="transparent", ) +PY_PNG = '_resources/py.png' + APPXMANIFEST_NS = { "": "http://schemas.microsoft.com/appx/manifest/foundation/windows10", "m": "http://schemas.microsoft.com/appx/manifest/foundation/windows10", @@ -278,12 +280,16 @@ def add_alias(xml, appid, alias, subsystem="windows"): e = find_or_add(e, "uap5:ExecutionAlias", ("Alias", alias)) -def add_file_type(xml, appid, name, suffix, parameters='"%1"'): +def add_file_type(xml, appid, name, suffix, parameters='"%1"', info=None, logo=None): app = _get_app(xml, appid) e = find_or_add(app, "m:Extensions") e = find_or_add(e, "uap3:Extension", ("Category", "windows.fileTypeAssociation")) e = find_or_add(e, "uap3:FileTypeAssociation", ("Name", name)) e.set("Parameters", parameters) + if info: + find_or_add(e, "uap:DisplayName").text = info + if logo: + find_or_add(e, "uap:Logo").text = logo e = find_or_add(e, "uap:SupportedFileTypes") if isinstance(suffix, str): suffix = [suffix] @@ -399,7 +405,7 @@ def get_appxmanifest(ns): ["python", "python{}".format(VER_MAJOR), "python{}".format(VER_DOT)], PYTHON_VE_DATA, "console", - ("python.file", [".py"]), + ("python.file", [".py"], '"%1"', 'Python File', PY_PNG), ) add_application( @@ -410,7 +416,7 @@ def get_appxmanifest(ns): ["pythonw", "pythonw{}".format(VER_MAJOR), "pythonw{}".format(VER_DOT)], PYTHONW_VE_DATA, "windows", - ("python.windowedfile", [".pyw"]), + ("python.windowedfile", [".pyw"], '"%1"', 'Python File (no console)', PY_PNG), ) if ns.include_pip and ns.include_launchers: @@ -422,7 +428,7 @@ def get_appxmanifest(ns): ["pip", "pip{}".format(VER_MAJOR), "pip{}".format(VER_DOT)], PIP_VE_DATA, "console", - ("python.wheel", [".whl"], 'install "%1"'), + ("python.wheel", [".whl"], 'install "%1"', 'Python Wheel'), ) if ns.include_idle and ns.include_launchers: @@ -459,16 +465,15 @@ def get_appx_layout(ns): yield "AppxManifest.xml", ("AppxManifest.xml", get_appxmanifest(ns)) yield "_resources.xml", ("_resources.xml", get_resources_xml(ns)) icons = ns.source / "PC" / "icons" - yield "_resources/pythonx44.png", icons / "pythonx44.png" - yield "_resources/pythonx44$targetsize-44_altform-unplated.png", icons / "pythonx44.png" - yield "_resources/pythonx50.png", icons / "pythonx50.png" - yield "_resources/pythonx50$targetsize-50_altform-unplated.png", icons / "pythonx50.png" - yield "_resources/pythonx150.png", icons / "pythonx150.png" - yield "_resources/pythonx150$targetsize-150_altform-unplated.png", icons / "pythonx150.png" - yield "_resources/pythonwx44.png", icons / "pythonwx44.png" - yield "_resources/pythonwx44$targetsize-44_altform-unplated.png", icons / "pythonwx44.png" - yield "_resources/pythonwx150.png", icons / "pythonwx150.png" - yield "_resources/pythonwx150$targetsize-150_altform-unplated.png", icons / "pythonwx150.png" + for px in [44, 50, 150]: + src = icons / "pythonx{}.png".format(px) + yield f"_resources/pythonx{px}.png", src + yield f"_resources/pythonx{px}$targetsize-{px}_altform-unplated.png", src + for px in [44, 150]: + src = icons / "pythonwx{}.png".format(px) + yield f"_resources/pythonwx{px}.png", src + yield f"_resources/pythonwx{px}$targetsize-{px}_altform-unplated.png", src + yield f"_resources/py.png", icons / "py.png" sccd = ns.source / SCCD_FILENAME if sccd.is_file(): # This should only be set for side-loading purposes. |