Ver Fonte

Fix the longstanding side-by-side assembly issue on WIndows (aka mysterious .NET 3.5 framework dependency)

rdb há 16 anos atrás
pai
commit
e3d7240d92
1 ficheiros alterados com 7 adições e 0 exclusões
  1. 7 0
      makepanda/makepandacore.py

+ 7 - 0
makepanda/makepandacore.py

@@ -757,10 +757,16 @@ def GetThirdpartyDir():
 ########################################################################
 ##
 ## Visual Studio Manifest Manipulation.
+## These functions exist to make sure we are referencing the same
+## version of the VC runtime in the manifests that we are shipping
+## with Panda3D, to avoid side-by-side configuration errors. Also,
+## it also removes any dependency the VC80 CRT (as we only want to
+## depend on the VC90 CRT).
 ##
 ########################################################################
 
 VC90CRTVERSIONRE=re.compile("name=['\"]Microsoft.VC90.CRT['\"]\\s+version=['\"]([0-9.]+)['\"]")
+VC80CRTASSEMBLYRE=re.compile("<dependency>[\t \n]*<dependentAssembly>[\t \n]*<assemblyIdentity[\t \na-zA-Z0-9.'\"=]*name=['\"]Microsoft[.]VC80[.]CRT['\"][\t \na-zA-Z0-9.'\"=/]*>[\t \n]*(</assemblyIdentity>)?[\t \n]*</dependentAssembly>[\t \n]*</dependency>[\t \n]*")
 VC90CRTVERSION=None
 
 def GetVC90CRTVersion(fn = None):
@@ -784,6 +790,7 @@ def SetVC90CRTVersion(fn, ver = None):
     manifest = ReadFile(fn)
     subst = " name='Microsoft.VC90.CRT' version='"+ver+"' "
     manifest = VC90CRTVERSIONRE.sub(subst, manifest)
+    manifest = VC80CRTASSEMBLYRE.sub("", manifest)
     WriteFile(fn, manifest)
 
 ########################################################################