summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikita Nemkin <nikita@nemkin.ru>2020-06-23 23:32:23 (GMT)
committerGitHub <noreply@github.com>2020-06-23 23:32:23 (GMT)
commitbbf36e8903f8e86dcad8131c818e122537c30f9e (patch)
tree5035803018a68426c52c73a21f2a2abea41659f4
parent90ed8a6d71b2d6e0853c14e8e6f85fe730a4329a (diff)
downloadcpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.zip
cpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.tar.gz
cpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.tar.bz2
bpo-41070: Simplify pyshellext.dll build (GH-21037)
Replace MIDL-generated file with manual GUID definition. Use the same .def file for release and debug builds. Update setup build to support latest toolset
-rw-r--r--PC/pyshellext.cpp10
-rw-r--r--PC/pyshellext.def1
-rw-r--r--PC/pyshellext.idl12
-rw-r--r--PC/pyshellext_d.def6
-rw-r--r--PCbuild/pyshellext.vcxproj4
-rw-r--r--PCbuild/pyshellext.vcxproj.filters8
-rw-r--r--Tools/msi/bundle/bootstrap/pythonba.vcxproj5
7 files changed, 10 insertions, 36 deletions
diff --git a/PC/pyshellext.cpp b/PC/pyshellext.cpp
index 0198802..ffca169 100644
--- a/PC/pyshellext.cpp
+++ b/PC/pyshellext.cpp
@@ -12,15 +12,14 @@
#include <olectl.h>
#include <strsafe.h>
-#include "pyshellext_h.h"
-
#define DDWM_UPDATEWINDOW (WM_USER+3)
static HINSTANCE hModule;
static CLIPFORMAT cfDropDescription;
static CLIPFORMAT cfDragWindow;
-static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\{BEA218D2-6950-497B-9434-61683EC065FE}";
+#define CLASS_GUID "{BEA218D2-6950-497B-9434-61683EC065FE}"
+static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\" CLASS_GUID;
static const LPCWSTR DRAG_MESSAGE = L"Open with %1";
using namespace Microsoft::WRL;
@@ -121,8 +120,7 @@ HRESULT FilenameListCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, LPCWSTR psz
return hr;
}
-
-class PyShellExt : public RuntimeClass<
+class DECLSPEC_UUID(CLASS_GUID) PyShellExt : public RuntimeClass<
RuntimeClassFlags<ClassicCom>,
IDropTarget,
IPersistFile
@@ -483,7 +481,7 @@ public:
}
STDMETHODIMP GetClassID(CLSID *pClassID) {
- *pClassID = CLSID_PyShellExt;
+ *pClassID = __uuidof(PyShellExt);
return S_OK;
}
};
diff --git a/PC/pyshellext.def b/PC/pyshellext.def
index 5424bd1..288a9ad 100644
--- a/PC/pyshellext.def
+++ b/PC/pyshellext.def
@@ -1,4 +1,3 @@
-LIBRARY "pyshellext"
EXPORTS
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
diff --git a/PC/pyshellext.idl b/PC/pyshellext.idl
deleted file mode 100644
index c0a1838..0000000
--- a/PC/pyshellext.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-import "ocidl.idl";
-
-[uuid(44039A76-3BDD-41C1-A31B-71C00202CE81), version(1.0)]
-library PyShellExtLib
-{
- [uuid(BEA218D2-6950-497B-9434-61683EC065FE), version(1.0)]
- coclass PyShellExt
- {
- [default] interface IDropTarget;
- interface IPersistFile;
- }
-}; \ No newline at end of file
diff --git a/PC/pyshellext_d.def b/PC/pyshellext_d.def
deleted file mode 100644
index 7d2148b..0000000
--- a/PC/pyshellext_d.def
+++ /dev/null
@@ -1,6 +0,0 @@
-LIBRARY "pyshellext_d"
-EXPORTS
- DllRegisterServer PRIVATE
- DllUnregisterServer PRIVATE
- DllGetClassObject PRIVATE
- DllCanUnloadNow PRIVATE
diff --git a/PCbuild/pyshellext.vcxproj b/PCbuild/pyshellext.vcxproj
index 655054e..ea432d6 100644
--- a/PCbuild/pyshellext.vcxproj
+++ b/PCbuild/pyshellext.vcxproj
@@ -96,7 +96,7 @@
<Link>
<AdditionalDependencies>version.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
- <ModuleDefinitionFile>..\PC\pyshellext$(PyDebugExt).def</ModuleDefinitionFile>
+ <ModuleDefinitionFile>..\PC\pyshellext.def</ModuleDefinitionFile>
</Link>
<Midl>
<CompileInterface>true</CompileInterface>
@@ -104,11 +104,9 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\PC\pyshellext.cpp" />
- <Midl Include="..\PC\pyshellext.idl" />
</ItemGroup>
<ItemGroup>
<None Include="..\PC\pyshellext.def" />
- <None Include="..\PC\pyshellext_d.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\PC\pyshellext.rc" />
diff --git a/PCbuild/pyshellext.vcxproj.filters b/PCbuild/pyshellext.vcxproj.filters
index 36d1d16..77cd306 100644
--- a/PCbuild/pyshellext.vcxproj.filters
+++ b/PCbuild/pyshellext.vcxproj.filters
@@ -16,11 +16,6 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
- <Midl Include="..\PC\pyshellext.idl">
- <Filter>Source Files</Filter>
- </Midl>
- </ItemGroup>
- <ItemGroup>
<ResourceCompile Include="..\PC\pyshellext.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
@@ -29,8 +24,5 @@
<None Include="..\PC\pyshellext.def">
<Filter>Source Files</Filter>
</None>
- <None Include="..\PC\pyshellext_d.def">
- <Filter>Source Files</Filter>
- </None>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/Tools/msi/bundle/bootstrap/pythonba.vcxproj b/Tools/msi/bundle/bootstrap/pythonba.vcxproj
index 75aad44..ef71fe7 100644
--- a/Tools/msi/bundle/bootstrap/pythonba.vcxproj
+++ b/Tools/msi/bundle/bootstrap/pythonba.vcxproj
@@ -21,6 +21,9 @@
<PropertyGroup Label="Globals">
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '16.0' or '$(VisualStudioVersion)' == '16.0')">v142</PlatformToolset>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '15.0' or '$(VisualStudioVersion)' == '15.0')">v141</PlatformToolset>
+ <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset>
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</PlatformToolset>
<ProjectGuid>{7A09B132-B3EE-499B-A700-A4B2157FEA3D}</ProjectGuid>
@@ -47,6 +50,8 @@
</ClCompile>
<Link>
<AdditionalDependencies>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;dutil.lib;balutil.lib;version.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v142'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v141'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v140'">$(WixInstallPath)sdk\vs2015\lib\x86</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v120'">$(WixInstallPath)sdk\vs2013\lib\x86</AdditionalLibraryDirectories>
<ModuleDefinitionFile>pythonba.def</ModuleDefinitionFile>