Skip to content

Commit

Permalink
pythongh-93824: Reenable installation of shell extension on Windows A…
Browse files Browse the repository at this point in the history
…RM64 (pythonGH-93825)
  • Loading branch information
zooba authored Jun 15, 2022
1 parent b415c5f commit 99be1cb
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Drag and drop of files onto Python files in Windows Explorer has been
enabled for Windows ARM64.
12 changes: 10 additions & 2 deletions Tools/msi/bundle/packagegroups/launcher.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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>
13 changes: 9 additions & 4 deletions Tools/msi/launcher/launcher.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,33 @@
<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>
<Feature Id="AssociateFiles" AllowAdvertise="no" Title="!(loc.Title)" Description="!(loc.Description)">
<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>
Expand Down
13 changes: 5 additions & 8 deletions Tools/msi/launcher/launcher_files.wxs
Original file line number Diff line number Diff line change
Expand Up @@ -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>

0 comments on commit 99be1cb

Please sign in to comment.