Commit 2fc2bf6591f1fd78453d4459dc6888c3aca08b15
1 parent
ae7acdd5
Exists in
Au-ghub/master
python portatil e fixes
adicao do python, fix de loop no download/extracao do python, download da lista de sinais
Showing
4 changed files
with
87 additions
and
25 deletions
Show diff stats
BundlesManager.cs
| @@ -3,8 +3,7 @@ using System.Net; | @@ -3,8 +3,7 @@ using System.Net; | ||
| 3 | using System.IO; | 3 | using System.IO; |
| 4 | using System.IO.Compression; | 4 | using System.IO.Compression; |
| 5 | 5 | ||
| 6 | -namespace AtualizadorVLibras | ||
| 7 | -{ | 6 | +namespace AtualizadorVLibras{ |
| 8 | 7 | ||
| 9 | public class TimeoutWebClient : WebClient{ | 8 | public class TimeoutWebClient : WebClient{ |
| 10 | protected override WebRequest GetWebRequest(Uri address){ | 9 | protected override WebRequest GetWebRequest(Uri address){ |
| @@ -14,8 +13,7 @@ namespace AtualizadorVLibras | @@ -14,8 +13,7 @@ namespace AtualizadorVLibras | ||
| 14 | } | 13 | } |
| 15 | } | 14 | } |
| 16 | 15 | ||
| 17 | - static class BundlesManager | ||
| 18 | - { | 16 | + static class BundlesManager{ |
| 19 | //timeout para verificação de existência e data de última verificação dos pacotes | 17 | //timeout para verificação de existência e data de última verificação dos pacotes |
| 20 | static int timeout = 2000; | 18 | static int timeout = 2000; |
| 21 | 19 | ||
| @@ -96,13 +94,13 @@ namespace AtualizadorVLibras | @@ -96,13 +94,13 @@ namespace AtualizadorVLibras | ||
| 96 | } | 94 | } |
| 97 | 95 | ||
| 98 | public static int DownloadBundlesPackages(string url, string rootPath, string extractPath){ | 96 | public static int DownloadBundlesPackages(string url, string rootPath, string extractPath){ |
| 99 | - //rootPath é o path dos arquivos .zip locais | ||
| 100 | - //url é o path dos arquivos .zip remotos | ||
| 101 | - //extractPath é o path da pasta Bundles | ||
| 102 | - string ext = @".zip"; | ||
| 103 | - int i = 1; | ||
| 104 | - string remote; | ||
| 105 | - string local; | 97 | + //rootPath é o path dos arquivos .zip locais |
| 98 | + //url é o path dos arquivos .zip remotos | ||
| 99 | + //extractPath é o path da pasta Bundles | ||
| 100 | + string ext = @".zip"; | ||
| 101 | + int i = 1; | ||
| 102 | + string remote; | ||
| 103 | + string local; | ||
| 106 | while(true){ | 104 | while(true){ |
| 107 | Console.WriteLine("Verificando arquivo "+i+" zip dos pacotes de sinais."); | 105 | Console.WriteLine("Verificando arquivo "+i+" zip dos pacotes de sinais."); |
| 108 | remote = url+i.ToString()+ext; | 106 | remote = url+i.ToString()+ext; |
| @@ -132,7 +130,7 @@ namespace AtualizadorVLibras | @@ -132,7 +130,7 @@ namespace AtualizadorVLibras | ||
| 132 | public static void DownloadListaSinais(string url){ | 130 | public static void DownloadListaSinais(string url){ |
| 133 | string sinais = "sinais.txt"; | 131 | string sinais = "sinais.txt"; |
| 134 | string remote = url+sinais; | 132 | string remote = url+sinais; |
| 135 | - string local = @"Player\vlibrasPlayer_Data\Resources\"+sinais; | 133 | + string local = @"..\Bundles\"+sinais; |
| 136 | if(RemoteFileExists(remote)){ | 134 | if(RemoteFileExists(remote)){ |
| 137 | if(!File.Exists(local) || RemoteIsNewerThanLocal(remote, local)){ | 135 | if(!File.Exists(local) || RemoteIsNewerThanLocal(remote, local)){ |
| 138 | DownloadFileToPath(remote, local); | 136 | DownloadFileToPath(remote, local); |
| @@ -140,8 +138,8 @@ namespace AtualizadorVLibras | @@ -140,8 +138,8 @@ namespace AtualizadorVLibras | ||
| 140 | } | 138 | } |
| 141 | } | 139 | } |
| 142 | /*public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){ | 140 | /*public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){ |
| 143 | - string ext = @".zip"; | ||
| 144 | - bool exists = System.IO.Directory.Exists(extractPath); | 141 | + string ext = @".zip"; |
| 142 | + bool exists = System.IO.Directory.Exists(extractPath); | ||
| 145 | if(!exists){ | 143 | if(!exists){ |
| 146 | System.IO.Directory.CreateDirectory(extractPath); | 144 | System.IO.Directory.CreateDirectory(extractPath); |
| 147 | } | 145 | } |
| @@ -160,6 +158,35 @@ namespace AtualizadorVLibras | @@ -160,6 +158,35 @@ namespace AtualizadorVLibras | ||
| 160 | } | 158 | } |
| 161 | }*/ | 159 | }*/ |
| 162 | 160 | ||
| 161 | + public static void DownloadFileIfNewer(string remote, string local, string fileName){ | ||
| 162 | + if(RemoteFileExists(remote+fileName) && (!File.Exists(local+fileName) || RemoteIsNewerThanLocal(remote+fileName, local+fileName))){ | ||
| 163 | + DownloadFileToPath(remote+fileName, local+fileName); | ||
| 164 | + if(File.Exists(local+fileName.Remove(fileName.Length-4))){ | ||
| 165 | + File.Delete(local+fileName.Remove(fileName.Length-4)); | ||
| 166 | + } | ||
| 167 | + } | ||
| 168 | + } | ||
| 169 | + public static void ExtractZip(string remote, string local, string extractPath, string fileName){ | ||
| 170 | + if(!File.Exists(local+fileName.Remove(fileName.Length-4))){ | ||
| 171 | + bool dirExists = System.IO.Directory.Exists(extractPath); | ||
| 172 | + if(!dirExists){ | ||
| 173 | + System.IO.Directory.CreateDirectory(extractPath); | ||
| 174 | + } | ||
| 175 | + try{ | ||
| 176 | + if(!File.Exists(extractPath+fileName.Remove(fileName.Length-4))){ | ||
| 177 | + ZipArchive zip = ZipFile.Open(local+fileName, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage)); | ||
| 178 | + ExtractToDirectory(zip, extractPath, true); | ||
| 179 | + File.Create(extractPath+fileName.Remove(fileName.Length-4)).Close(); | ||
| 180 | + } | ||
| 181 | + }catch(Exception e){ | ||
| 182 | + Console.WriteLine("Ocorreu um erro durante a extraçao: {0}\nPressione uma tecla para continuar.",e); | ||
| 183 | + Console.ReadKey(); | ||
| 184 | + DownloadFileIfNewer(remote, local, fileName); | ||
| 185 | + ExtractZip(remote, local, extractPath, fileName); | ||
| 186 | + } | ||
| 187 | + } | ||
| 188 | + } | ||
| 189 | + | ||
| 163 | //ZipArchive archive = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage)); | 190 | //ZipArchive archive = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage)); |
| 164 | public static void ExtractBundlesPackagesOverWrite(string url, string rootPath, string extractPath, int qtd){ | 191 | public static void ExtractBundlesPackagesOverWrite(string url, string rootPath, string extractPath, int qtd){ |
| 165 | string ext = @".zip"; | 192 | string ext = @".zip"; |
Program.cs
| @@ -36,7 +36,9 @@ namespace AtualizadorVLibras | @@ -36,7 +36,9 @@ namespace AtualizadorVLibras | ||
| 36 | static void Main() | 36 | static void Main() |
| 37 | { | 37 | { |
| 38 | //ENDEREÇO DE ONDE SERÃO BAIXADOS OS PACOTES (.ZIP) DE SINAIS (1.ZIP, 2.ZIP E ETC...) | 38 | //ENDEREÇO DE ONDE SERÃO BAIXADOS OS PACOTES (.ZIP) DE SINAIS (1.ZIP, 2.ZIP E ETC...) |
| 39 | - string url = @"http://atualizacao.vlibras.lavid.ufpb.br/windows/"; | 39 | + //string url = @"http://atualizacao.vlibras.lavid.ufpb.br/windows/"; |
| 40 | + //string url = @"http://127.0.0.1:8000/"; | ||
| 41 | + string url = @"http://192.168.25.121:8089/"; | ||
| 40 | //string url = @"http://179.185.184.75:8080/"; | 42 | //string url = @"http://179.185.184.75:8080/"; |
| 41 | 43 | ||
| 42 | string dirAtual = Directory.GetCurrentDirectory(); | 44 | string dirAtual = Directory.GetCurrentDirectory(); |
| @@ -119,7 +121,7 @@ namespace AtualizadorVLibras | @@ -119,7 +121,7 @@ namespace AtualizadorVLibras | ||
| 119 | 121 | ||
| 120 | //VERIFICAÇÃO E INSTALAÇÃO DO PYTHON | 122 | //VERIFICAÇÃO E INSTALAÇÃO DO PYTHON |
| 121 | //REGISTROS DO PYTHON | 123 | //REGISTROS DO PYTHON |
| 122 | - try{ | 124 | + /*try{ |
| 123 | RegistryKey[] regPython = new RegistryKey[4]; | 125 | RegistryKey[] regPython = new RegistryKey[4]; |
| 124 | regPython[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}"); | 126 | regPython[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}"); |
| 125 | regPython[1] = lm32.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}"); | 127 | regPython[1] = lm32.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}"); |
| @@ -137,7 +139,7 @@ namespace AtualizadorVLibras | @@ -137,7 +139,7 @@ namespace AtualizadorVLibras | ||
| 137 | }catch(Exception e){ | 139 | }catch(Exception e){ |
| 138 | Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e); | 140 | Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e); |
| 139 | Console.ReadKey(); | 141 | Console.ReadKey(); |
| 140 | - } | 142 | + }*/ |
| 141 | 143 | ||
| 142 | 144 | ||
| 143 | /* | 145 | /* |
| @@ -188,7 +190,7 @@ namespace AtualizadorVLibras | @@ -188,7 +190,7 @@ namespace AtualizadorVLibras | ||
| 188 | 190 | ||
| 189 | //INSTALAÇÃO DOS MÓDULOS DO PYTHON | 191 | //INSTALAÇÃO DOS MÓDULOS DO PYTHON |
| 190 | //Tem que ser depois da configuração das variáveis de ambiente | 192 | //Tem que ser depois da configuração das variáveis de ambiente |
| 191 | - Console.WriteLine("Instalando os módulos de python."); | 193 | + /*Console.WriteLine("Instalando os módulos de python."); |
| 192 | try{ | 194 | try{ |
| 193 | if(instalouPython){ | 195 | if(instalouPython){ |
| 194 | //instalação forçada de módulos | 196 | //instalação forçada de módulos |
| @@ -197,14 +199,34 @@ namespace AtualizadorVLibras | @@ -197,14 +199,34 @@ namespace AtualizadorVLibras | ||
| 197 | Requirements.InstallWheels(false); | 199 | Requirements.InstallWheels(false); |
| 198 | } | 200 | } |
| 199 | }catch(Exception e){ | 201 | }catch(Exception e){ |
| 200 | - Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e); | 202 | + Console.WriteLine("Erro na instalação de módulos do python {0}.\nAperte alguma tecla para continuar.", e); |
| 203 | + Console.ReadKey(); | ||
| 204 | + }*/ | ||
| 205 | + | ||
| 206 | + string rootPath = @"..\"; | ||
| 207 | + string extractPath = @"..\Python\"; | ||
| 208 | + //PYTHON PORTÁTIL | ||
| 209 | + //Download | ||
| 210 | + Console.WriteLine("Baixando cópia portátil do python."); | ||
| 211 | + try{ | ||
| 212 | + BundlesManager.DownloadFileIfNewer(url, rootPath, "python.zip"); | ||
| 213 | + }catch{ | ||
| 214 | + Console.WriteLine("Erro no download do python. Aperte alguma tecla para continuar."); | ||
| 215 | + Console.ReadKey(); | ||
| 216 | + } | ||
| 217 | + //Extração | ||
| 218 | + Console.WriteLine("Extraindo cópia portátil do python."); | ||
| 219 | + try{ | ||
| 220 | + BundlesManager.ExtractZip(url, rootPath, extractPath, "python.zip"); | ||
| 221 | + }catch{ | ||
| 222 | + Console.WriteLine("Erro no extração do python. Aperte alguma tecla para continuar."); | ||
| 201 | Console.ReadKey(); | 223 | Console.ReadKey(); |
| 202 | } | 224 | } |
| 203 | 225 | ||
| 204 | //CRIAÇÃO DO ATALHO DO VLIBRAS | 226 | //CRIAÇÃO DO ATALHO DO VLIBRAS |
| 205 | Console.WriteLine("Criação do atalho do vlibras."); | 227 | Console.WriteLine("Criação do atalho do vlibras."); |
| 206 | try{ | 228 | try{ |
| 207 | - Requirements.criaAtalho(); | 229 | + Requirements.criaAtalho(@"..\Python\python.exe"); |
| 208 | }catch(Exception e){ | 230 | }catch(Exception e){ |
| 209 | Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e); | 231 | Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e); |
| 210 | Console.ReadKey(); | 232 | Console.ReadKey(); |
| @@ -213,8 +235,7 @@ namespace AtualizadorVLibras | @@ -213,8 +235,7 @@ namespace AtualizadorVLibras | ||
| 213 | 235 | ||
| 214 | //DOWNLOAD DOS SINAIS | 236 | //DOWNLOAD DOS SINAIS |
| 215 | //BAIXA OS ZIPS DOS SINAIS (1.ZIP, 2.ZIP E ETC...) | 237 | //BAIXA OS ZIPS DOS SINAIS (1.ZIP, 2.ZIP E ETC...) |
| 216 | - string rootPath = @"..\"; | ||
| 217 | - string extractPath = @"..\Bundles\"; | 238 | + extractPath = @"..\Bundles\"; |
| 218 | int qtdDeBundles = 0; | 239 | int qtdDeBundles = 0; |
| 219 | Console.WriteLine("Baixando pacote de sinais."); | 240 | Console.WriteLine("Baixando pacote de sinais."); |
| 220 | try{ | 241 | try{ |
| @@ -224,13 +245,13 @@ namespace AtualizadorVLibras | @@ -224,13 +245,13 @@ namespace AtualizadorVLibras | ||
| 224 | Console.ReadKey(); | 245 | Console.ReadKey(); |
| 225 | } | 246 | } |
| 226 | 247 | ||
| 227 | - | ||
| 228 | //EXTRAÇÃO: | 248 | //EXTRAÇÃO: |
| 229 | //EXTRAI APENAS SE NÃO TIVER O ARQUIVO HOMÔNIMO SEM EXTENSÃO NA PASTA SINAIS | 249 | //EXTRAI APENAS SE NÃO TIVER O ARQUIVO HOMÔNIMO SEM EXTENSÃO NA PASTA SINAIS |
| 230 | //SE O CAMINHO DE EXTRAÇÃO NÃO EXISTE, ELE SERÁ CRIADO | 250 | //SE O CAMINHO DE EXTRAÇÃO NÃO EXISTE, ELE SERÁ CRIADO |
| 231 | Console.WriteLine("Extraindo pacote de sinais."); | 251 | Console.WriteLine("Extraindo pacote de sinais."); |
| 232 | //try{ | 252 | //try{ |
| 233 | BundlesManager.ExtractBundlesPackagesOverWrite(url, rootPath, extractPath, qtdDeBundles); | 253 | BundlesManager.ExtractBundlesPackagesOverWrite(url, rootPath, extractPath, qtdDeBundles); |
| 254 | + BundlesManager.DownloadListaSinais(url); | ||
| 234 | /*}catch(Exception e){ | 255 | /*}catch(Exception e){ |
| 235 | Console.WriteLine("Erro na extração: {0}", e); | 256 | Console.WriteLine("Erro na extração: {0}", e); |
| 236 | Console.ReadKey(); | 257 | Console.ReadKey(); |
Requirements.cs
| @@ -46,11 +46,12 @@ namespace AtualizadorVLibras | @@ -46,11 +46,12 @@ namespace AtualizadorVLibras | ||
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | //CRIA ATALHO | 48 | //CRIA ATALHO |
| 49 | - public static void criaAtalho(){ | 49 | + public static void criaAtalho(string pathPython2){ |
| 50 | //string driveAtual = @"%HOMEPATH%\..\.."; | 50 | //string driveAtual = @"%HOMEPATH%\..\.."; |
| 51 | //string pathPython2 = driveAtual+@"Python27\python.exe"; | 51 | //string pathPython2 = driveAtual+@"Python27\python.exe"; |
| 52 | //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine); | 52 | //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine); |
| 53 | - string pathPython2 = GetRegistroPythonPath(); | 53 | + |
| 54 | + //string pathPython2 = GetRegistroPythonPath(); | ||
| 54 | int idx = pathPython2.IndexOf(@";"); | 55 | int idx = pathPython2.IndexOf(@";"); |
| 55 | //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx); | 56 | //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx); |
| 56 | //pathPython2 = "\""+pathPython2 + "\\python.exe\""; | 57 | //pathPython2 = "\""+pathPython2 + "\\python.exe\""; |
| @@ -82,6 +83,7 @@ namespace AtualizadorVLibras | @@ -82,6 +83,7 @@ namespace AtualizadorVLibras | ||
| 82 | //Console.ReadKey(); | 83 | //Console.ReadKey(); |
| 83 | } | 84 | } |
| 84 | 85 | ||
| 86 | + //NÃO VAI SER MAIS UTILIZADO DEVIDO AO PYTHON PORTÁTIL | ||
| 85 | public static string GetRegistroPythonPath(){ | 87 | public static string GetRegistroPythonPath(){ |
| 86 | var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); | 88 | var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); |
| 87 | var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); | 89 | var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); |
| @@ -125,6 +127,7 @@ namespace AtualizadorVLibras | @@ -125,6 +127,7 @@ namespace AtualizadorVLibras | ||
| 125 | } | 127 | } |
| 126 | } | 128 | } |
| 127 | 129 | ||
| 130 | + //NÃO VAI SER MAIS UTILIZADO DEVIDO AO PYTHON PORTÁTIL | ||
| 128 | //INSTALA, SE NECESSÁRIO, OS MÓDULOS DO PYTHON | 131 | //INSTALA, SE NECESSÁRIO, OS MÓDULOS DO PYTHON |
| 129 | public static void InstallWheels(bool force){ | 132 | public static void InstallWheels(bool force){ |
| 130 | /*var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64); | 133 | /*var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64); |
| @@ -324,6 +327,7 @@ namespace AtualizadorVLibras | @@ -324,6 +327,7 @@ namespace AtualizadorVLibras | ||
| 324 | insProc.Start(); | 327 | insProc.Start(); |
| 325 | insProc.WaitForExit(); | 328 | insProc.WaitForExit(); |
| 326 | } | 329 | } |
| 330 | + | ||
| 327 | //qn - instalação sem interface, passive instalação passiva | 331 | //qn - instalação sem interface, passive instalação passiva |
| 328 | public static void InstallAndWait(string pathInstaller64, string pathInstaller86, string args){ | 332 | public static void InstallAndWait(string pathInstaller64, string pathInstaller86, string args){ |
| 329 | string pathInstaller; | 333 | string pathInstaller; |
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +enviar: | ||
| 2 | + VLIBRAS.zip | ||
| 3 | + requisitos.zip | ||
| 4 | +servidor: | ||
| 5 | + #.zip (bundles) | ||
| 6 | + python.zip (portátil) | ||
| 7 | + sinais.txt | ||
| 8 | +últimas mudanças: | ||
| 9 | + Clipboarb\clipboard.py passou para Python\clipboard.py | ||
| 10 | + sinais.txt agora se encontra em Bundles\ | ||
| 0 | \ No newline at end of file | 11 | \ No newline at end of file |