Advertisement
Guest User

Untitled

a guest
Jun 5th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.50 KB | None | 0 0
  1. import os
  2. import sys
  3. import getopt
  4. import subprocess
  5. import stat
  6. import shutil
  7. import check
  8. import commands
  9. from PyQt4 import *
  10. from PyQt4.QtCore import *
  11. from connection import Connection
  12. import color_console as cons
  13. import copy
  14.  
  15.  
  16.  
  17. class Inst(QtCore.QObject):
  18.     def __init__(self):
  19.         QtCore.QObject.__init__(self)
  20.         self.confInstaller()
  21.        
  22.         self.connect(self,QtCore.SIGNAL("testSignal"),self.update)
  23.  
  24.        
  25.     def confInstaller(self):
  26.         '''global tmpPathConfFile,tmpPath,inputConfFileName,outputInstallerFile,inputData,default_colors,default_bg'''
  27.         self.tmpPathConfFile = open("installerConf.dat", "r")
  28.         self.tmpPath=os.path.expandvars(self.tmpPathConfFile.readline().split("=")[-1].split(";")[0])
  29.         self.inputConfFileName=os.path.normcase(self.tmpPath+'\\conf.dat')
  30.         self.inputData = {"inputInstallScript":None,"inputUninstallScript":None,"dirApp":None,"dirMysql":None,"newRootPass":None,"defaultDatabase":None,"applicationDatabase":None,"userRoot":None,"oldRootPass":None}
  31.         self.default_colors = cons.get_text_attr()
  32.         self.default_bg = self.default_colors & 0x0070
  33.         self.readConf()
  34.    
  35.  
  36.     def setInstColor(self):
  37.         cons.set_text_attr(cons.FOREGROUND_GREEN | self.default_bg |
  38.                         cons.FOREGROUND_INTENSITY)
  39.    
  40.     def mysqlDirectoryExists(self):
  41.         res=0
  42.         if(os.path.isdir(self.inputData["dirMysql"])):
  43.             res=1
  44.         return res
  45.    
  46.     def printHeader(self,str):
  47.         cons.set_text_attr(cons.FOREGROUND_RED | self.default_bg |
  48.                         cons.FOREGROUND_INTENSITY)
  49.         print str
  50.         cons.set_text_attr(self.default_colors)
  51.    
  52.     def printWarning(self,str):
  53.         cons.set_text_attr(cons.FOREGROUND_YELLOW  | self.default_bg |
  54.                         cons.FOREGROUND_INTENSITY)
  55.         print str
  56.         cons.set_text_attr(self.default_colors)
  57.    
  58.    
  59.     def installMysql(self):
  60.         self.printHeader("Instalando MySQL...")
  61.         self.setInstColor()
  62.         if(self.mysqlDirectoryExists()==1):
  63.                 self.printWarning('Atencion: se borraran los archivos de este directorio.')
  64.                 self.removeMysql()
  65.         os.system('mkdir "'+ self.inputData["dirMysql"]+'"')
  66.         os.system('xcopy "mysql\*.*" "'+ self.inputData["dirMysql"]+'" /e')
  67.  
  68.  
  69.     def installApp(self):
  70.         self.printHeader("Instalando Aplicacion...")
  71.                      
  72.         if(self.appDirectoryExists()==1):
  73.                 self.printWarning("EL directorio no esta vacio. Se borrara el contenido.")
  74.                 self.removeApp()
  75.         self.setInstColor()
  76.         os.system('mkdir "' + self.inputData["dirApp"]+'"')
  77.         os.system('xcopy "app\*.*" "'+ self.inputData["dirApp"]+'" /e')
  78.         cons.set_text_attr(self.default_colors)
  79.    
  80.  
  81.    
  82.     def appDirectoryExists(self):
  83.         res=0
  84.         if(os.path.isdir(self.inputData["dirApp"])):
  85.             res=1
  86.         return res
  87.    
  88.     def installService(self):
  89.         self.printHeader("Instalando Servicio MySQL...")
  90.         self.setInstColor()
  91.         os.system('"'+self.inputData["dirMysql"]+'\\bin\\mysqld" --install')
  92.         cons.set_text_attr(self.default_colors)
  93.  
  94.    
  95.     def runService(self):
  96.         self.printHeader("Iniciando Servicio MySQL...")
  97.         self.setInstColor()
  98.         os.system('NET START MySql')
  99.         cons.set_text_attr(self.default_colors)
  100.  
  101.  
  102.     def stopService(self):
  103.         self.printHeader("Deteniendo Servicio MySQL...")
  104.         self.setInstColor()
  105.         os.system('NET STOP MySQL')
  106.         cons.set_text_attr(self.default_colors)
  107.  
  108.            
  109.    
  110.     def removeMysql(self):
  111.         self.printHeader("Eliminando archivos de MySQL...")
  112.         shutil.rmtree(self.inputData["dirMysql"])
  113.  
  114.    
  115.  
  116.     def removeApp(self):
  117.         self.printHeader("Desinstalando Aplicacion...")
  118.         shutil.rmtree(self.inputData["dirApp"])
  119.  
  120.    
  121.     def removeMysqlService(self):
  122.         self.printHeader("Desinstalando Servicio MySQL...")
  123.         os.system('"'+check.findMysqlPath() +'\\mysqld" --remove')
  124.  
  125.    
  126.     def removeAppDB(self):
  127.         self.printHeader("Eliminando Base de Datos...")
  128.         self.setInstColor()
  129.         os.system('"'+check.findMysqlPath()+'\\mysql.exe" -u '+self.inputData["userRoot"]+' --password='+self.inputData["newRootPass"]+' '+self.inputData["applicationDatabase"]+ '< '+self.inputData["inputUninstallScript"])
  130.         os.system('NET STOP MySql')
  131.         os.system('NET START MySql')
  132.         cons.set_text_attr(default_colors)
  133.  
  134.    
  135.     def createShortCut(self):
  136.         self.printHeader("Creando acceso directo en el Escritorio...")
  137.         self.setInstColor()
  138.         if(os.path.isdir(os.path.expandvars("%USERPROFILE%")+"\\Escritorio")):
  139.             print 'SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Escritorio\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"'
  140.             os.system('SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Escritorio\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"' )
  141.         else:
  142.             os.system('SHORTCUT /f:"'+os.path.expandvars("%USERPROFILE%")+'\\Desktop\Conotels.lnk" /a:c /t:"'+self.inputData["dirApp"]+'\main.exe" /W:"'+self.inputData["dirApp"]+'\\" /I:"'+self.inputData["dirApp"]+'\\icon.ico"'  )
  143.         cons.set_text_attr(self.default_colors)
  144.    
  145.     def confRoot(self):
  146.         self.printHeader("Configurando usuario root...")
  147.         self.setInstColor()
  148.         conn=Connection(dbName=self.inputData["defaultDatabase"], dbUser=self.inputData["userRoot"], dbPass=self.inputData["oldRootPass"])
  149.         conn.open()
  150.         conn.update("UPDATE "+self.inputData["defaultDatabase"]+".user SET Password=PASSWORD("+self.mysqlString(self.inputData["newRootPass"])+") WHERE User='"+self.inputData["userRoot"]+"';")
  151.         conn.close()
  152.         os.system('NET STOP MySql')
  153.         os.system('NET START MySql')
  154.         cons.set_text_attr(self.default_colors)
  155.  
  156.            
  157.     def confDB(self):
  158.         self.printHeader("Configurando base de datos de la aplicacion...")
  159.         self.setInstColor()
  160.         '''
  161.         conn=Connection(dbName=inputData["defaultDatabase"], dbUser=inputData["userRoot"], dbPass=inputData["newRootPass"])
  162.         '''
  163.         os.system('"'+check.findMysqlPath()+'\\mysql.exe" -u '+self.inputData["userRoot"]+' --password='+self.inputData["newRootPass"]+' '+self.inputData["applicationDatabase"]+ '< ..\\bd\\'+self.inputData["inputInstallScript"])
  164.         os.system('NET STOP MySql')
  165.         os.system('NET START MySql')
  166.         cons.set_text_attr(self.default_colors)
  167.    
  168.  
  169.  
  170.    
  171.     def readConf(self):
  172.  
  173.         self.inputConfFile = open(self.inputConfFileName,"r")
  174.  
  175.         for line in self.inputConfFile.readlines():
  176.             if(line.find("dirMysql")==0):
  177.                 self.inputData["dirMysql"]=line.split("=")[-1].split(";")[0]   
  178.             if(line.find("newRootPass")==0):
  179.                 self.inputData["newRootPass"]=line.split("=")[-1].split(";")[0]
  180.             if(line.find("defaultDatabase")==0):
  181.                 self.inputData["defaultDatabase"]=line.split("=")[-1].split(";")[0]
  182.             if(line.find("applicationDatabase")==0):
  183.                 self.inputData["applicationDatabase"]=line.split("=")[-1].split(";")[0]
  184.             if(line.find("userRoot")==0):
  185.                 self.inputData["userRoot"]=line.split("=")[-1].split(";")[0]   
  186.             if(line.find("oldRootPass")==0):
  187.                 self.inputData["oldRootPass"]=line.split("=")[-1].split(";")[0]
  188.             if(line.find("inputUninstallScript")==0):
  189.                 self.inputData["inputUninstallScript"]=line.split("=")[-1].split(";")[0]   
  190.             if(line.find("dirApp")==0):
  191.                 self.inputData["dirApp"]=line.split("=")[-1].split(";")[0] 
  192.             if(line.find("inputInstallScript")==0):
  193.                 self.inputData["inputInstallScript"]=line.split("=")[-1].split(";")[0] 
  194.            
  195.            
  196.         '''for key in self.inputData.keys():
  197.             if(self.inputData[key]==None):
  198.                 print "Parametros de archivo de configuracion incorrectos"
  199.                 sys.exit()'''
  200.  
  201.  
  202.     def mysqlString(self,str):
  203.         return "'"+str+"'"
  204.            
  205.     @QtCore.pyqtSlot()
  206.     def update(self):
  207.         print "Llego la senal"
  208.        
  209.    
  210.  
  211.     def install(self):
  212.         self.emit(QtCore.SIGNAL("testSignal()"))
  213.  
  214.         print "Aca llega"
  215.         '''
  216.    
  217.         if(not check.isBDServiceInstalled()):
  218.             self.installMysql()
  219.             self.installService()
  220.             self.runService()
  221.             self.confRoot()
  222.  
  223.         else:
  224.             if(not check.isBDServiceRunning()):
  225.                 self.runService()
  226.  
  227.    
  228.         self.installApp()
  229.         self.createShortCut()
  230.         self.confDB()'''
  231.    
  232.  
  233.  
  234.     def uninstall(self):   
  235.         self.removeAppDB()
  236.         self.removeApp()
  237.         self.stopService()
  238.         self.removeMysqlService()
  239.         self.removeMysql()
  240.         '''sys.exit();'''
  241.    
  242. '''
  243. def printHelp():
  244.         print "Modo de uso:"
  245.         print "\t -i o --install: instalar aplicacion."
  246.         print "\t -u o --uninstall: desinstalar aplicacion "
  247. '''
  248.  
  249. '''if __name__ == "__main__":
  250.     import sys
  251.     app = QtGui.QApplication(sys.argv)
  252.     try:              
  253.         opts,args = getopt.getopt(sys.argv[1:], "iu", ["install", "uninstall"])
  254.  
  255.         confInstaller()
  256.         inst=0
  257.         uninst=0
  258.         for o,a in opts:
  259.             if( o in ("-i", "--install")):
  260.                 install()
  261.             else:
  262.                 uninstall()
  263.         printHelp()
  264.         sys.exit()
  265.    
  266.                
  267.     except getopt.GetoptError:
  268.         printHelp()
  269.         sys.exit()
  270.  
  271.     sys.exit(app.exec_())
  272. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement