[Python-checkins] bpo-37778: Fixes the icons used for file associations to the Microsoft Store package (GH-15150)

Steve Dower webhook-mailer at python.org
Wed Aug 7 13:50:21 EDT 2019


https://github.com/python/cpython/commit/87ce9588ceb4b4dd625913344844390f0b991b0c
commit: 87ce9588ceb4b4dd625913344844390f0b991b0c
branch: master
author: Steve Dower <steve.dower at python.org>
committer: GitHub <noreply at github.com>
date: 2019-08-07T10:50:17-07:00
summary:

bpo-37778: Fixes the icons used for file associations to the Microsoft Store package (GH-15150)

files:
A Misc/NEWS.d/next/Windows/2019-08-06-13-54-12.bpo-37778.AY1XhH.rst
A PC/icons/py.png
M PC/layout/support/appxmanifest.py

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 000000000000..14d81c05ee84
--- /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
new file mode 100644
index 000000000000..5c184e6a745f
Binary files /dev/null and b/PC/icons/py.png differ
diff --git a/PC/layout/support/appxmanifest.py b/PC/layout/support/appxmanifest.py
index 0a0f1fc8181c..4273b427e903 100644
--- a/PC/layout/support/appxmanifest.py
+++ b/PC/layout/support/appxmanifest.py
@@ -65,6 +65,8 @@
     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.



More information about the Python-checkins mailing list