From 3fa89f41b9cd15a91f733fdc9690500d4a406d00 Mon Sep 17 00:00:00 2001 From: Steve Dower <steve.dower@python.org> Date: Wed, 15 Jun 2022 01:04:18 +0100 Subject: [PATCH] gh-93824: Reenable installation of shell extension on Windows ARM64 --- .../2022-06-15-01-03-52.gh-issue-93824.mR4mxu.rst | 2 ++ Tools/msi/bundle/packagegroups/launcher.wxs | 12 ++++++++++-- Tools/msi/launcher/launcher.wxs | 13 +++++++++---- Tools/msi/launcher/launcher_files.wxs | 13 +++++-------- 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 Misc/NEWS.d/next/Windows/2022-06-15-01-03-52.gh-issue-93824.mR4mxu.rst diff --git a/Misc/NEWS.d/next/Windows/2022-06-15-01-03-52.gh-issue-93824.mR4mxu.rst b/Misc/NEWS.d/next/Windows/2022-06-15-01-03-52.gh-issue-93824.mR4mxu.rst new file mode 100644 index 00000000000000..cabe983847c891 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2022-06-15-01-03-52.gh-issue-93824.mR4mxu.rst @@ -0,0 +1,2 @@ +Drag and drop of files onto Python files in Windows Explorer has been +enabled for Windows ARM64. diff --git a/Tools/msi/bundle/packagegroups/launcher.wxs b/Tools/msi/bundle/packagegroups/launcher.wxs index 7dae8ca7a68c18..a6922758f31f14 100644 --- a/Tools/msi/bundle/packagegroups/launcher.wxs +++ b/Tools/msi/bundle/packagegroups/launcher.wxs @@ -11,7 +11,11 @@ EnableFeatureSelection="yes" Permanent="yes" Visible="yes" - InstallCondition="(InstallAllUsers or InstallLauncherAllUsers) and Include_launcher and not DetectedLauncher" /> + InstallCondition="(InstallAllUsers or InstallLauncherAllUsers) and Include_launcher and not DetectedLauncher"> + <?if $(var.Platform)~="ARM64" ?> + <MsiProperty Name="ARM64_SHELLEXT" Value="1" /> + <?endif ?> + </MsiPackage> <MsiPackage Id="launcher_JustForMe" SourceFile="!(bindpath.build32)en-us\launcher.msi" @@ -21,7 +25,11 @@ EnableFeatureSelection="yes" Permanent="yes" Visible="yes" - InstallCondition="not (InstallAllUsers or InstallLauncherAllUsers) and Include_launcher and not DetectedLauncher" /> + InstallCondition="not (InstallAllUsers or InstallLauncherAllUsers) and Include_launcher and not DetectedLauncher"> + <?if $(var.Platform)~="ARM64" ?> + <MsiProperty Name="ARM64_SHELLEXT" Value="1" /> + <?endif ?> + </MsiPackage> </PackageGroup> </Fragment> </Wix> \ No newline at end of file diff --git a/Tools/msi/launcher/launcher.wxs b/Tools/msi/launcher/launcher.wxs index d001fe53ea3811..b83058c63bf6d9 100644 --- a/Tools/msi/launcher/launcher.wxs +++ b/Tools/msi/launcher/launcher.wxs @@ -3,13 +3,18 @@ <Product Id="*" Language="!(loc.LCID)" Name="!(loc.Title)" Version="$(var.Version)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Package InstallerVersion="500" Compressed="yes" InstallScope="perUser" /> <MediaTemplate EmbedCab="yes" CompressionLevel="high" /> - + <Property Id="Suppress_TARGETDIR_Check" Value="1" /> <Icon Id="ARPIcon" SourceFile="!(bindpath.src)PC\icons\launcher.ico" /> <Property Id="ARPPRODUCTICON" Value="ARPIcon" /> <Property Id="ARPNOMODIFY" Value="1" /> <Property Id="DISABLEADVTSHORTCUTS" Value="1" /> + <Property Id="ARM64_SHELLEXT"> + <ComponentSearch Id="RegistrySearch_ARM64_SHELLEXT_Detected" + Guid="{C591963D-7FC6-4FCE-8642-5E01E6B8848F}" /> + </Property> + <Feature Id="DefaultFeature" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)"> <ComponentGroupRef Id="launcher_exe" Primary="yes" /> </Feature> @@ -17,14 +22,14 @@ <ComponentGroupRef Id="launcher_exe" /> <ComponentGroupRef Id="launcher_reg" /> </Feature> - + <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="LauncherInstallDirectory" /> </Directory> - + <CustomAction Id="SetLauncherInstallDirectoryLM" Property="LauncherInstallDirectory" Value="[WindowsFolder]" /> <CustomAction Id="SetLauncherInstallDirectoryCU" Property="LauncherInstallDirectory" Value="[LocalAppDataFolder]Programs\Python\Launcher" /> - + <InstallExecuteSequence> <Custom Before="SetLauncherInstallDirectoryLM" Action="SetLauncherInstallDirectoryCU">NOT Installed AND NOT ALLUSERS=1</Custom> <Custom Before="CostFinalize" Action="SetLauncherInstallDirectoryLM">NOT Installed AND ALLUSERS=1</Custom> diff --git a/Tools/msi/launcher/launcher_files.wxs b/Tools/msi/launcher/launcher_files.wxs index 2c6c808137a6ff..d9a230e2d35ace 100644 --- a/Tools/msi/launcher/launcher_files.wxs +++ b/Tools/msi/launcher/launcher_files.wxs @@ -22,26 +22,23 @@ </Component> <Component Id="pyshellext_amd64.dll" Directory="LauncherInstallDirectory" Guid="{E7411EFD-F1DD-40EB-B0C7-4BA02BF3E75F}" Win64="yes"> - <Condition>VersionNT64</Condition> + <Condition>VersionNT64 AND NOT ARM64_SHELLEXT</Condition> <File Id="pyshellext_amd64.dll" Name="pyshellext.amd64.dll" Source="!(bindpath.Build64)\pyshellext.dll"> <Class Id="{BEA218D2-6950-497B-9434-61683EC065FE}" Advertise="no" Context="InprocServer32" ThreadingModel="apartment" /> </File> </Component> <Component Id="pyshellext_win32.dll" Directory="LauncherInstallDirectory" Guid="{C5936696-9A5A-45A0-A830-D172C3329282}"> - <Condition>NOT VersionNT64</Condition> + <Condition>NOT VersionNT64 AND NOT ARM64_SHELLEXT</Condition> <File Id="pyshellext_win32.dll" Name="pyshellext.win32.dll" Source="!(bindpath.Build32)\pyshellext.dll"> <Class Id="{BEA218D2-6950-497B-9434-61683EC065FE}" Advertise="no" Context="InprocServer32" ThreadingModel="apartment" /> </File> </Component> - <!-- - Currently unclear how to detect ARM64 device at this point. - In any case, the shell extension doesn't appear to work, so installing a non-functional - pyshellext_amd64.dll for a different platform isn't any worse. - <Component Id="pyshellext_arm64.dll" Directory="LauncherInstallDirectory" Guid="{C591963D-7FC6-4FCE-8642-5E01E6B8848F}"> + <Component Id="pyshellext_arm64.dll" Directory="LauncherInstallDirectory" Guid="{C591963D-7FC6-4FCE-8642-5E01E6B8848F}" Win64="yes"> + <Condition>ARM64_SHELLEXT</Condition> <File Id="pyshellext_arm64.dll" Name="pyshellext.arm64.dll" Source="!(bindpath.BuildARM64)\pyshellext.dll"> <Class Id="{BEA218D2-6950-497B-9434-61683EC065FE}" Advertise="no" Context="InprocServer32" ThreadingModel="apartment" /> </File> - </Component>--> + </Component> </ComponentGroup> </Fragment> </Wix>