(self)
Adds code to the installer to compute the location of Python.

        Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the
        registry for each version of Python.

        Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined,
        else from PYTHON.MACHINE.X.Y.

        Properties PYTHONX.Y will be set to TARGETDIRX.Y\\python.exe
Adds code to the installer to compute the location of Python.
Adds code to the installer to compute the location of Python .
def add_find_python(self):
        """Adds code to the installer to compute the location of Python.

        Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the
        registry for each version of Python.

        Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined,
        else from PYTHON.MACHINE.X.Y.

        Properties PYTHONX.Y will be set to TARGETDIRX.Y\\python.exe"""

        start = 402
        for ver in self.versions:
            install_path = r"SOFTWARE\Python\PythonCore\%s\InstallPath" % ver
            machine_reg = "python.machine." + ver
            user_reg = "python.user." + ver
            machine_prop = "PYTHON.MACHINE." + ver
            user_prop = "PYTHON.USER." + ver
            machine_action = "PythonFromMachine" + ver
            user_action = "PythonFromUser" + ver
            exe_action = "PythonExe" + ver
            target_dir_prop = "TARGETDIR" + ver
            exe_prop = "PYTHON" + ver
            if msilib.Win64:
                # type: msidbLocatorTypeRawValue + msidbLocatorType64bit
                Type = 2+16
            else:
                Type = 2
            add_data(self.db, "RegLocator",
                    [(machine_reg, 2, install_path, None, Type),
                     (user_reg, 1, install_path, None, Type)])
            add_data(self.db, "AppSearch",
                    [(machine_prop, machine_reg),
                     (user_prop, user_reg)])
            add_data(self.db, "CustomAction",
                    [(machine_action, 51+256, target_dir_prop, "[" + machine_prop + "]"),
                     (user_action, 51+256, target_dir_prop, "[" + user_prop + "]"),
                     (exe_action, 51+256, exe_prop, "[" + target_dir_prop + "]\\python.exe"),
                    ])
            add_data(self.db, "InstallExecuteSequence",
                    [(machine_action, machine_prop, start),
                     (user_action, user_prop, start + 1),
                     (exe_action, None, start + 2),
                    ])
            add_data(self.db, "InstallUISequence",
                    [(machine_action, machine_prop, start),
                     (user_action, user_prop, start + 1),
                     (exe_action, None, start + 2),
                    ])
            add_data(self.db, "Condition",
                    [("Python" + ver, 0, "NOT TARGETDIR" + ver)])
            start += 4
            assert start < 500
def add_find_python ( self ) : start = 402 for ver in self . versions : install_path = r"SOFTWARE\Python\PythonCore\%s\InstallPath" % ver machine_reg = "python.machine." + ver user_reg = "python.user." + ver machine_prop = "PYTHON.MACHINE." + ver user_prop = "PYTHON.USER." + ver machine_action = "PythonFromMachine" + ver user_action = "PythonFromUser" + ver exe_action = "PythonExe" + ver target_dir_prop = "TARGETDIR" + ver exe_prop = "PYTHON" + ver if msilib . Win64 : # type: msidbLocatorTypeRawValue + msidbLocatorType64bit Type = 2 + 16 else : Type = 2 add_data ( self . db , "RegLocator" , [ ( machine_reg , 2 , install_path , None , Type ) , ( user_reg , 1 , install_path , None , Type ) ] ) add_data ( self . db , "AppSearch" , [ ( machine_prop , machine_reg ) , ( user_prop , user_reg ) ] ) add_data ( self . db , "CustomAction" , [ ( machine_action , 51 + 256 , target_dir_prop , "[" + machine_prop + "]" ) , ( user_action , 51 + 256 , target_dir_prop , "[" + user_prop + "]" ) , ( exe_action , 51 + 256 , exe_prop , "[" + target_dir_prop + "]\\python.exe" ) , ] ) add_data ( self . db , "InstallExecuteSequence" , [ ( machine_action , machine_prop , start ) , ( user_action , user_prop , start + 1 ) , ( exe_action , None , start + 2 ) , ] ) add_data ( self . db , "InstallUISequence" , [ ( machine_action , machine_prop , start ) , ( user_action , user_prop , start + 1 ) , ( exe_action , None , start + 2 ) , ] ) add_data ( self . db , "Condition" , [ ( "Python" + ver , 0 , "NOT TARGETDIR" + ver ) ] ) start += 4 assert start < 500