Signed-off-by: Ivan Maslov <Ivan.Maslov@UnicodeLabs.ru>dev-linux
parent
ac13d6044a
commit
3b122b07ad
@ -0,0 +1,81 @@
|
|||||||
|
import pywinauto #Is needed to detect OS bitness
|
||||||
|
import struct # Need to detect Current process bitness
|
||||||
|
import subprocess #Need to create subprocess
|
||||||
|
import os # Is needed to check file/folder path
|
||||||
|
############################################
|
||||||
|
####Module, which control the Bitness between 32 and 64 python (needed for pywinauto framework to work correctly)
|
||||||
|
############################################
|
||||||
|
global mSettingsDict
|
||||||
|
mSettingsDict = {
|
||||||
|
"BitnessProcessCurrent": "64", # "64" or "32"
|
||||||
|
"BitnessOS": "64", # "64" or "32"
|
||||||
|
"Python32FullPath": None, #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
|
||||||
|
"Python64FullPath": None, #Set from user
|
||||||
|
"Python32ProcessName": "OpenRPAUIDesktopX32.exe", #Config set once
|
||||||
|
"Python64ProcessName": "OpenRPAUIDesktopX64.exe", #Config set once
|
||||||
|
"Python32Process":None,
|
||||||
|
"Python64Process":None,
|
||||||
|
"PythonArgs":["-m","pyOpenRPA"] #Start other bitness openRPA process with PIPE channel
|
||||||
|
}
|
||||||
|
#Init the global configuration
|
||||||
|
def SettingsInit(inSettingsDict):
|
||||||
|
global mSettingsDict
|
||||||
|
#Update values in settings from input
|
||||||
|
mSettingsDict.update(inSettingsDict)
|
||||||
|
#mSettingsDict = inSettingsDict
|
||||||
|
####################
|
||||||
|
#Detect OS bitness
|
||||||
|
####BitnessOS#######
|
||||||
|
lBitnessOS="32";
|
||||||
|
if pywinauto.sysinfo.is_x64_OS():
|
||||||
|
lBitnessOS="64";
|
||||||
|
inSettingsDict["BitnessOS"]=lBitnessOS
|
||||||
|
####################
|
||||||
|
#Detect current process bitness
|
||||||
|
####BitnessProcessCurrent#######
|
||||||
|
lBitnessProcessCurrent = str(struct.calcsize("P") * 8)
|
||||||
|
inSettingsDict["BitnessProcessCurrent"]=lBitnessProcessCurrent
|
||||||
|
#####################################
|
||||||
|
#Create the other bitness process if OS is 64 and we have another Python path
|
||||||
|
##########################################################################
|
||||||
|
#Check if OS is x64, else no 64 is applicable
|
||||||
|
if mSettingsDict["BitnessOS"]=="64":
|
||||||
|
#Check if current bitness is 64
|
||||||
|
if mSettingsDict["BitnessProcessCurrent"]=="64":
|
||||||
|
#create x32 if Python 32 path is exists
|
||||||
|
if mSettingsDict["Python32FullPath"] and mSettingsDict["Python32ProcessName"]:
|
||||||
|
#Calculate python.exe folder path
|
||||||
|
lPython32FolderPath= "\\".join(mSettingsDict["Python32FullPath"].split("\\")[:-1])
|
||||||
|
lPython32NewNamePath = f"{lPython32FolderPath}\\{mSettingsDict["Python32ProcessName"]}"
|
||||||
|
if not os.path.isfile(lPython32NewNamePath):
|
||||||
|
shutil.copyfile(mSettingsDict["Python32FullPath"],lPython32NewNamePath)
|
||||||
|
mSettingsDict["Python32Process"] = subprocess.Popen([lPython32NewNamePath] + mSettingsDict["Python32FullPath"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
|
||||||
|
else:
|
||||||
|
#bitness current process is 32
|
||||||
|
#return x64 if it is exists
|
||||||
|
if mSettingsDict["Python64Process"]:
|
||||||
|
#Calculate python.exe folder path
|
||||||
|
lPython64FolderPath= "\\".join(mSettingsDict["Python64FullPath"].split("\\")[:-1])
|
||||||
|
lPython64NewNamePath = f"{lPython64FolderPath}\\{mSettingsDict["Python64ProcessName"]}"
|
||||||
|
if not os.path.isfile(lPython64NewNamePath):
|
||||||
|
shutil.copyfile(mSettingsDict["Python32FullPath"],lPython64NewNamePath)
|
||||||
|
mSettingsDict["Python64Process"] = subprocess.Popen([lPython64NewNamePath] + mSettingsDict["Python64FullPath"],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
|
||||||
|
#Return the other module bitnes
|
||||||
|
def OtherBitnessGet():
|
||||||
|
#Result template
|
||||||
|
lResult = None
|
||||||
|
global mSettingsDict
|
||||||
|
#Check if OS is x64, else no 64 is applicable
|
||||||
|
if mSettingsDict["BitnessOS"]=="64":
|
||||||
|
#Check if current bitness is 64
|
||||||
|
if mSettingsDict["BitnessProcessCurrent"]=="64":
|
||||||
|
#return x32 if it is exists
|
||||||
|
if mSettingsDict["Python32Process"]:
|
||||||
|
lResult = mSettingsDict["Python32Process"]
|
||||||
|
else:
|
||||||
|
#bitness current process is 32
|
||||||
|
#return x64 if it is exists
|
||||||
|
if mSettingsDict["Python64Process"]:
|
||||||
|
lResult = mSettingsDict["Python64Process"]
|
||||||
|
#Exit
|
||||||
|
return lResult
|
Loading…
Reference in new issue