Commit 2fc2bf6591f1fd78453d4459dc6888c3aca08b15

Authored by MoraesCaio
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
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";
@@ -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;
estruturaDePastas.txt 0 → 100644
@@ -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