diff --git a/AU.csproj b/AU.csproj
index e87ee0c..994e173 100644
--- a/AU.csproj
+++ b/AU.csproj
@@ -7,8 +7,8 @@
{6EB1FB18-7A1B-46E0-9991-A18B3AA32E5C}
Exe
Properties
- VLIBRAS_II
- VLIBRAS_II
+ AtualizadorVLibras
+ AtualizadorVLibras
v4.5
512
true
@@ -22,14 +22,15 @@
false
true
false
- http://150.165.205.137:8080/
- http://150.165.205.137:8080/
- VLIBRAS
+ http://atualizacao.vlibras.lavid.ufpb.br/windows/
+ http://atualizacao.vlibras.lavid.ufpb.br/windows/
+ Atualizador VLibras
LAVID-UFPB
- 1.0.0.82
+ 5.0.0.0
false
- 94
- 1.0.0.%2a
+ true
+ 2
+ 5.0.0.%2a
true
true
true
@@ -44,6 +45,7 @@
DEBUG;TRACE
prompt
4
+ false
AnyCPU
@@ -64,7 +66,7 @@
Properties\app.manifest
- true
+ false
2811720AF50392C2792C67C4DEBCB1D40662604A
@@ -97,7 +99,9 @@
-
+
+ Component
+
Form
diff --git a/BundlesManager.cs b/BundlesManager.cs
index d2bc40b..7f0fc47 100644
--- a/BundlesManager.cs
+++ b/BundlesManager.cs
@@ -3,10 +3,21 @@ using System.Net;
using System.IO;
using System.IO.Compression;
-namespace VLIBRAS_II
+namespace AtualizadorVLibras
{
+
+ public class TimeoutWebClient : WebClient{
+ protected override WebRequest GetWebRequest(Uri address){
+ HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
+ request.Timeout = 3600000; //1 hour timeout
+ return request;
+ }
+ }
+
static class BundlesManager
{
+ //timeout para verificação de existência e data de última verificação dos pacotes
+ static int timeout = 2000;
public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite){
if (!overwrite){
@@ -14,59 +25,73 @@ namespace VLIBRAS_II
return;
}
foreach (ZipArchiveEntry file in archive.Entries){
- string completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
- string directory = Path.GetDirectoryName(completeFileName);
- Console.WriteLine("Extraindo "+file.FullName+".");
- if (!Directory.Exists(directory)){
- Directory.CreateDirectory(directory);
- }
+ try{
+ string completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
+ string directory = Path.GetDirectoryName(completeFileName);
+ Console.WriteLine("Extraindo "+file.FullName+".");
+ if (!Directory.Exists(directory)){
+ Directory.CreateDirectory(directory);
+ }
- if (file.Name != ""){
- file.ExtractToFile(completeFileName, true);
+ if (file.Name != ""){
+ file.ExtractToFile(completeFileName, true);
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro na extração: {0}",e);
+ continue;
}
}
}
- private static bool RemoteFileExists(string url){
+ //File.Exists(path);
+
+ private static bool RemoteFileExists(string url){
+ bool result = false;
+ var request = (HttpWebRequest)WebRequest.Create(url);
+ request.Method = "HEAD";
+ request.Timeout = timeout;
+ HttpWebResponse response = null;
try{
- //Creating the HttpWebRequest
- HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
- //Setting the Request method HEAD
- request.Method = "HEAD";
- request.Timeout = 2000;
- //Getting the Web Response.
- HttpWebResponse response = request.GetResponse() as HttpWebResponse;
- //Returns TURE if the Status code == 200
- return (response.StatusCode == HttpStatusCode.OK);
- }
- catch{
- //Any exception will returns false.
- return false;
+ response = (HttpWebResponse)request.GetResponse();
+ result = (response.StatusCode == HttpStatusCode.OK);
+ }catch(Exception e){
+ //Console.WriteLine("Arquivo não existe no servidor: {0}",e);
+ }finally{
+ if(response != null){
+ response.Close();
+ }
}
+ return result;
}
- //File.Exists(path);
-
private static bool RemoteIsNewerThanLocal(string url, string path){
+ bool result = false;//resultado padrão
+ //informações do arquivo
FileInfo sourceFile = new FileInfo(path);
+ //solicitação do arquivo remoto
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "HEAD";
- var response = (HttpWebResponse)request.GetResponse();
- //Console.WriteLine("response.LastModified: "+response.LastModified);
- //Console.WriteLine("sourceFile.LastWriteTime: "+sourceFile.LastWriteTime);
- if(response.LastModified > sourceFile.LastWriteTime){
- return true;
- }else{
- return false;
+ request.Timeout = timeout;
+ HttpWebResponse response = null;
+ try{
+ response = (HttpWebResponse)request.GetResponse();
+ result = (response.LastModified > sourceFile.LastWriteTime);
+ }catch(Exception e){
+ //Console.WriteLine("Erro: {0}",e);
+ }finally{
+ if(response != null){
+ response.Close();
+ }
}
+ return result;
}
private static void DownloadFileToPath(string site, string path){
try{
- WebClient webClient = new WebClient();
+ TimeoutWebClient webClient = new TimeoutWebClient();
webClient.DownloadFile(site, path);
}catch(Exception e){
- Console.WriteLine("Erro: {0}", e);
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
}
}
@@ -79,6 +104,7 @@ namespace VLIBRAS_II
string remote;
string local;
while(true){
+ Console.WriteLine("Verificando arquivo "+i+"zip dos pacotes de sinais.");
remote = url+i.ToString()+ext;
local = rootPath+i.ToString()+ext;
if(!RemoteFileExists(remote)){
@@ -87,9 +113,11 @@ namespace VLIBRAS_II
break;
}else{
if(!File.Exists(local)){
+ Console.WriteLine("Baixando o "+i+"o pacote de sinais.");
DownloadFileToPath(remote, local);
}else{
if(RemoteIsNewerThanLocal(remote, local)){
+ Console.WriteLine("Houve um patch nesse pacote: baixando o "+i+"o pacote de sinais.");
DownloadFileToPath(remote, local);
//DELETA ARQUIVO DE VERIFICAÇÃO PARA QUE HAJA NOVA EXTRAÇÃO
File.Delete(extractPath + i);
@@ -101,7 +129,7 @@ namespace VLIBRAS_II
return i;
}
- public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){
+ /*public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){
string ext = @".zip";
bool exists = System.IO.Directory.Exists(extractPath);
if(!exists){
@@ -120,9 +148,10 @@ namespace VLIBRAS_II
}
qtd--;
}
- }
+ }*/
+
//ZipArchive archive = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
- public static void ExtractBundlesPackagesOverWrite(string rootPath, string extractPath, int qtd){
+ public static void ExtractBundlesPackagesOverWrite(string rootPath, string extractPath, int qtd, string url){
string ext = @".zip";
bool exists = System.IO.Directory.Exists(extractPath);
if(!exists){
@@ -130,18 +159,25 @@ namespace VLIBRAS_II
}
while(qtd > 0){
- if(!File.Exists(extractPath+qtd.ToString())){
- string fileAbsolute = rootPath+qtd.ToString()+ext;
- ZipArchive zip = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
- Console.WriteLine("Extraindo o arquivo: "+zip);
- //ZipFile.ExtractToDirectory(zip, extractPath);
- ExtractToDirectory(zip, extractPath, true);
- //CRIA UM ARQUIVO 1(SEM EXTENSÃO), 2, 3... NA PASTA BUNDLES PARA VERIFICAÇÃO DE EXTRAÇÃO PRÉVIA
- //SÓ É CRIADO APÓS EXTRAÇÃO DE TODOS OS ARQUIVOS DE CADA ZIP
- Console.WriteLine("Extração do arquivo "+zip+" concluída.");
- File.Create(extractPath+qtd).Close();
- }
+ try{
+ if(!File.Exists(extractPath+qtd.ToString())){
+ string fileAbsolute = rootPath+qtd.ToString()+ext;
+ ZipArchive zip = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
+ Console.WriteLine("Extraindo o arquivo: "+zip);
+ //ZipFile.ExtractToDirectory(zip, extractPath);
+ ExtractToDirectory(zip, extractPath, true);
+ //CRIA UM ARQUIVO 1(SEM EXTENSÃO), 2, 3... NA PASTA BUNDLES PARA VERIFICAÇÃO DE EXTRAÇÃO PRÉVIA
+ //SÓ É CRIADO APÓS EXTRAÇÃO DE TODOS OS ARQUIVOS DE CADA ZIP
+ Console.WriteLine("Extração do arquivo "+zip+" concluída.");
+ File.Create(extractPath+qtd).Close();
+ }
qtd--;
+ }catch(Exception e){
+ Console.WriteLine("Erro na extração do "+qtd.ToString()+ext+"\nErro: {0}",e);
+ Console.WriteLine("Tentando baixar novamente o arquivo: "+qtd.ToString()+ext);
+ DownloadFileToPath(url+qtd.ToString()+ext, rootPath+qtd.ToString()+ext);
+ continue;
+ }
}
}
}
diff --git a/Program.cs b/Program.cs
index 9b00838..83794ee 100644
--- a/Program.cs
+++ b/Program.cs
@@ -5,12 +5,12 @@ using Microsoft.Win32;
using System.IO;
using System.IO.Compression;
-namespace VLIBRAS_II
+namespace AtualizadorVLibras
{
static class Program
{
static void ResetEnvVar(){
- string vLibrasAtual = Environment.GetEnvironmentVariable("PATH_VLIBRAS",EnvironmentVariableTarget.Machine);
+ string vLibrasAtual = Environment.GetEnvironmentVariable("PATH_VLIBRAS",EnvironmentVariableTarget.User);
string vLibrasNovo = Directory.GetCurrentDirectory();
if(!vLibrasNovo.Equals(vLibrasAtual)){
@@ -36,66 +36,111 @@ namespace VLIBRAS_II
static void Main()
{
//ENDEREÇO DE ONDE SERÃO BAIXADOS OS PACOTES (.ZIP) DE SINAIS (1.ZIP, 2.ZIP E ETC...)
- string url = @"http://150.165.205.137:8080/";
+ string url = @"http://atualizacao.vlibras.lavid.ufpb.br/windows/";
+ //string url = @"http://179.185.184.75:8080/";
+
string dirAtual = Directory.GetCurrentDirectory();
string[] buscaDeArquivo;
+ bool instalouPython = false;
//Variáveis para verificar se há instalação no registro em lm64 e 32 (local machine x64 e x86)
var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
+ var cu64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
+ var cu32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
//EXTRAÇÃO DO VLIBRAS
- string vlibrasZip = @"VLIBRAS.zip";
- string vlibrasZipAbsolute = dirAtual+@"\"+vlibrasZip;
- ZipArchive archive = ZipFile.Open(vlibrasZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
- if(!File.Exists(dirAtual+@"\"+@"extraido")){
- Console.WriteLine("Extraindo do arquivo: "+vlibrasZip);
- BundlesManager.ExtractToDirectory(archive, dirAtual, true);
- Console.WriteLine("Extração do arquivo "+vlibrasZip+" concluída.");
- File.Create(dirAtual+@"\"+@"extraido").Close();
+ Console.WriteLine("Extração do vlibras");
+ try{
+ string vlibrasZip = @"VLIBRAS.zip";
+ string vlibrasZipAbsolute = dirAtual+@"\"+vlibrasZip;
+ ZipArchive archive = ZipFile.Open(vlibrasZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
+ if(!File.Exists(dirAtual+@"\"+@"extraido")){
+ Console.WriteLine("Extraindo do arquivo: "+vlibrasZip);
+ BundlesManager.ExtractToDirectory(archive, dirAtual, true);
+ Console.WriteLine("Extração do arquivo "+vlibrasZip+" concluída.");
+ File.Create(dirAtual+@"\"+@"extraido").Close();
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
}
//EXTRAÇÃO DOS REQUISITOS
- string reqZip = @"requisitos.zip";
- string reqZipAbsolute = dirAtual+@"\"+reqZip;
- archive = ZipFile.Open(reqZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
- if(!File.Exists(dirAtual+@"\"+@"extraidoReq")){
- Console.WriteLine("Extraindo do arquivo: "+reqZip);
- BundlesManager.ExtractToDirectory(archive, dirAtual, true);
- Console.WriteLine("Extração do arquivo "+reqZip+" concluída.");
- File.Create(dirAtual+@"\"+@"extraidoReq").Close();
+ Console.WriteLine("Extração de Requisitos");
+ try{
+ string reqZip = @"requisitos.zip";
+ string reqZipAbsolute = dirAtual+@"\"+reqZip;
+ ZipArchive archive = ZipFile.Open(reqZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
+ if(!File.Exists(dirAtual+@"\"+@"extraidoReq")){
+ Console.WriteLine("Extraindo do arquivo: "+reqZip);
+ BundlesManager.ExtractToDirectory(archive, dirAtual, true);
+ Console.WriteLine("Extração do arquivo "+reqZip+" concluída.");
+ File.Create(dirAtual+@"\"+@"extraidoReq").Close();
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
}
-
//VERIFICAÇÃO E DESINSTALAÇÃO DO VLIBRAS DESCONTINUADO
Console.WriteLine("Verificação se há versões descontinuadas do VLibras.");
- //x64
- RegistryKey[] regVLibrasOld = new RegistryKey[2];
- regVLibrasOld[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
- regVLibrasOld[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
- Requirements.Uninstall(regVLibrasOld);
+ try{
+ RegistryKey[] regVLibrasOld = new RegistryKey[2];
+ regVLibrasOld[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
+ regVLibrasOld[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
+ Requirements.Uninstall(regVLibrasOld);
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
+ }
- //REGISTROS DO PYTHON
- RegistryKey[] regPython = new RegistryKey[4];
- regPython[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
- regPython[1] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
- regPython[2] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
- regPython[3] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
+ //INSTALAÇÃO DO LAUNCHER DO PYTHON
+ //é para ser instalado antes mesmo!!!!!!!
+ /*Console.WriteLine("Verificação do launcher");
+ try{
+ RegistryKey[] regPyLauncher = new RegistryKey[2];
+ regPyLauncher[0] = cu64.OpenSubKey(@"Software\Microsoft\Installer\Products\B24C6BC17885FC74FA128928650F54B5");
+ regPyLauncher[1] = cu64.OpenSubKey(@"Software\Microsoft\Installer\Products\26D5B8927821F7248B9D4BD406F5F8B6");
+ if(!Requirements.IsInstalled(regPyLauncher)){
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "launchwin-1.0.1.6.amd64.msi", SearchOption.AllDirectories);
+ string pyLauncherPath64 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @"";
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "launchwin-1.0.1.6.msi", SearchOption.AllDirectories);
+ string pyLauncherPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
+ Requirements.InstallAndWait(pyLauncherPath64, pyLauncherPath86);//, @"/passive"); //instalação passiva
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
+ }*/
+
//VERIFICAÇÃO E INSTALAÇÃO DO PYTHON
- Console.WriteLine("Verificando se o Python 2.7.9 está instalado");
- if(!Requirements.IsInstalled(regPython)){
- //PATHS DE INSTALAÇÃO DO PYTHON
- buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.9.amd64.msi", SearchOption.AllDirectories);
- string pythonPath64 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @"";
- buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.9.msi", SearchOption.AllDirectories);
- string pythonPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
- Requirements.InstallAndWait(pythonPath64, pythonPath86);
+ //REGISTROS DO PYTHON
+ try{
+ RegistryKey[] regPython = new RegistryKey[4];
+ regPython[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
+ regPython[1] = lm32.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
+ regPython[2] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
+ regPython[3] = lm64.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
+
+ Console.WriteLine("Verificando se o Python 2.7.12(32) está instalado");
+ if(!Requirements.IsInstalled(regPython)){//ChecarVersaoPython()){
+ //PATHS DE INSTALAÇÃO DO PYTHON
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.12.msi", SearchOption.AllDirectories);
+ string pythonPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
+ Requirements.InstallAndWait(pythonPath86, pythonPath86);//, @"/qn"); //instalação silenciosa
+ instalouPython = true;
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
}
+ /*
//VERIFICAÇÃO E INSTALAÇÃO DE PYWIN32
//usa esse arquivo para verificação de instalação do pywin32
Console.WriteLine("Verificando instalação do Pywin32.");
@@ -111,9 +156,11 @@ namespace VLIBRAS_II
Requirements.Install(pywin32Pathx64, pywin32Pathx86);
//File.Create(pywin32File).Close();
}
+ */
//VERIFICAÇÃO DA INSTALAÇÃO DO NVDA
+ /*
Console.WriteLine("Verificando instalação do NVDA.");
//REGISTROS DO NDVA
RegistryKey[] regNVDA = new RegistryKey[3];
@@ -125,6 +172,7 @@ namespace VLIBRAS_II
string NVDApath = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0] : @"";
Requirements.Install(NVDApath, NVDApath);
}
+ */
//CONFIGURAÇÃO DAS VARIÁVEIS DE AMBIENTE
@@ -132,7 +180,34 @@ namespace VLIBRAS_II
try{
ResetEnvVar();
}catch(Exception e){
- Console.WriteLine("Erro Var Env: {0}", e);
+ Console.WriteLine("Erro Var Env: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
+ }
+
+
+
+ //INSTALAÇÃO DOS MÓDULOS DO PYTHON
+ //Tem que ser depois da configuração das variáveis de ambiente
+ Console.WriteLine("Instalando os módulos de python.");
+ try{
+ if(instalouPython){
+ //instalação forçada de módulos
+ Requirements.InstallWheels(true);
+ }else{
+ Requirements.InstallWheels(false);
+ }
+ }catch(Exception e){
+ Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
+ }
+
+ //CRIAÇÃO DO ATALHO DO VLIBRAS
+ Console.WriteLine("Criação do atalho do vlibras.");
+ try{
+ Requirements.criaAtalho();
+ }catch(Exception e){
+ Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
}
@@ -145,7 +220,8 @@ namespace VLIBRAS_II
try{
qtdDeBundles = BundlesManager.DownloadBundlesPackages(url, rootPath, extractPath);
}catch(Exception e){
- Console.WriteLine("Erro no download do pacote de sinais.");
+ Console.WriteLine("Erro no download do pacote de sinais.\n{0}\nAperte alguma tecla para continuar.",e);
+ Console.ReadKey();
}
@@ -153,11 +229,12 @@ namespace VLIBRAS_II
//EXTRAI APENAS SE NÃO TIVER O ARQUIVO HOMÔNIMO SEM EXTENSÃO NA PASTA SINAIS
//SE O CAMINHO DE EXTRAÇÃO NÃO EXISTE, ELE SERÁ CRIADO
Console.WriteLine("Extraindo pacote de sinais.");
- try{
- BundlesManager.ExtractBundlesPackagesOverWrite(rootPath, extractPath, qtdDeBundles);
- }catch(Exception e){
- Console.WriteLine("Erro na extração");
- }
+ //try{
+ BundlesManager.ExtractBundlesPackagesOverWrite(rootPath, extractPath, qtdDeBundles, url);
+ /*}catch(Exception e){
+ Console.WriteLine("Erro na extração: {0}", e);
+ Console.ReadKey();
+ }*/
//CONCLUSÃO
@@ -165,6 +242,8 @@ namespace VLIBRAS_II
//RODA O VLIBRAS
+
+ /*Console.WriteLine("Abrindo player.");
try{
Process playerProc = new Process();
string[] buscaPlayer = Directory.GetFiles(dirAtual, "vlibrasPlayer.exe", SearchOption.AllDirectories);
@@ -174,8 +253,9 @@ namespace VLIBRAS_II
playerProc.Start();
//playerProc.WaitForExit();
}catch(Exception e){
- Console.WriteLine("Erro: {0}", e);
- }
+ Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
+ Console.ReadKey();
+ }*/
/*
Application.EnableVisualStyles();
diff --git a/Requirements.cs b/Requirements.cs
index f8df13e..38f5f80 100644
--- a/Requirements.cs
+++ b/Requirements.cs
@@ -1,7 +1,9 @@
using System;
+using System.IO;
+using System.Diagnostics;
using Microsoft.Win32;
-namespace VLIBRAS_II
+namespace AtualizadorVLibras
{
class Requirements
{
@@ -26,9 +28,9 @@ namespace VLIBRAS_II
foreach(RegistryKey reg in regs){
if(IsInstalled(reg)){
try{
- System.Diagnostics.Process uninsProc = new System.Diagnostics.Process();
- System.Diagnostics.ProcessStartInfo uninsProcInfo = new System.Diagnostics.ProcessStartInfo();
- uninsProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
+ Process uninsProc = new Process();
+ ProcessStartInfo uninsProcInfo = new ProcessStartInfo();
+ uninsProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
uninsProcInfo.FileName = "cmd.exe";
string comandoUnins;
comandoUnins = "/C" + reg.GetValue("QuietUninstallString").ToString().Replace("\"", "");
@@ -36,13 +38,208 @@ namespace VLIBRAS_II
uninsProc.StartInfo = uninsProcInfo;
uninsProc.Start();
//uninsProc.WaitForExit();
- }catch(Exception e){
+ }catch(Exception){
//NOTHING
}
}
}
}
+ //CRIA ATALHO
+ public static void criaAtalho(){
+ //string driveAtual = @"%HOMEPATH%\..\..";
+ //string pathPython2 = driveAtual+@"Python27\python.exe";
+ //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine);
+ string pathPython2 = GetRegistroPythonPath();
+ int idx = pathPython2.IndexOf(@";");
+ //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx);
+ //pathPython2 = "\""+pathPython2 + "\\python.exe\"";
+
+ //Console.WriteLine("VERIFICAÇÃO DA LINHA criaAtalho: "+pathPython2);
+ //Console.ReadKey();
+
+ ProcessStartInfo procInfo = new ProcessStartInfo();
+ procInfo.FileName = pathPython2;//"cmd.exe";
+ //procInfo.Arguments = "/C py -2 "+Directory.GetCurrentDirectory()+@"\criaLnk.py";
+ //procInfo.Arguments = "/C "+pathPython2+" -m "+Directory.GetCurrentDirectory()+@"\criaLnk.py";
+ //procInfo.Arguments = "/C "+pathPython2+" \""+Directory.GetCurrentDirectory()+"\\criaLnk.py\"";
+ procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\criaLnk.py";
+ procInfo.UseShellExecute = false;
+ procInfo.RedirectStandardOutput = true;
+ procInfo.WindowStyle = ProcessWindowStyle.Hidden;
+
+ //Process process = new Process();
+ //process.StartInfo = procInfo;
+ //process.Start();
+ using(Process process = Process.Start(procInfo)){
+ using(StreamReader reader = process.StandardOutput){
+ string result = reader.ReadToEnd();
+ Console.Write(result);
+ }
+ process.WaitForExit();
+ }
+ //Console.WriteLine("pausa: {0}",procInfo.Arguments);
+ //Console.ReadKey();
+ }
+
+ public static string GetRegistroPythonPath(){
+ var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
+ var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
+ var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64);
+ var cr32 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32);
+ var cu64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
+ var cu32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
+
+ RegistryKey pythonReg = null;
+ if(lm64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = lm64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
+ }
+ if(lm32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = lm32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
+ }
+ if(cu64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = cu64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
+ }
+ if(cu32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = cu32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
+ }
+ if(lm64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = lm64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
+ }
+ if(lm32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = lm32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
+ }
+ if(cu64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = cu64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
+ }
+ if(cu32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
+ pythonReg = cu32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
+ }
+ if(pythonReg != null){
+ //CONIFGURAÇÃO DA VARIÁVEL PYTHONPATH
+ string python = pythonReg.GetValue(null).ToString();
+ //python = python.Remove(python.Length - 1).ToString();
+ return "\""+python+@"python.exe"+"\"";
+ }else{
+ return "";
+ }
+ }
+
+ //INSTALA, SE NECESSÁRIO, OS MÓDULOS DO PYTHON
+ public static void InstallWheels(bool force){
+ /*var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64);
+ var cr32 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32);
+ RegistryKey pythonShell = cr64.OpenSubKey(@"Python.File\Shell\open\command");
+ if(pythonShell == null){
+ pythonShell = cr32.OpenSubKey(@"Python.File\Shell\open\command");
+ }
+ path do python na máquina
+ string pythonCMD = pythonShell.GetValue(null).ToString();
+ pythonCMD = pythonCMD.Remove(pythonCMD.Length - 9).Replace("\"", "");
+ procInfo.FileName = pythonCMD;*/
+
+ //INFORMAÇÕES SOBRE O PROCESSO QUE VAI SER INICIADO
+ //string driveAtual = @"%HOMEPATH%\..\..";
+ //string pathPython2 = driveAtual+@"Python27\python.exe";
+
+ //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine);
+ string pathPython2 = GetRegistroPythonPath();
+ int idx = pathPython2.IndexOf(@";");
+ //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx);
+ //pathPython2 = "\""+pathPython2 + "\\python.exe\"";
+
+ //Console.WriteLine("VERIFICAÇÃO DA LINHA insWhls: "+pathPython2);
+ //Console.ReadKey();
+ //ATUALIZAÇÃO DO PIP
+ ProcessStartInfo procInfo = new ProcessStartInfo();
+ //procInfo.FileName = "py";
+ //procInfo.Arguments = "-2 -m pip install --upgrade pip";
+ procInfo.FileName = pathPython2;
+ procInfo.Arguments = "-m pip install --upgrade pip";
+ procInfo.UseShellExecute = false;
+ procInfo.RedirectStandardOutput = true;
+ procInfo.WindowStyle = ProcessWindowStyle.Hidden;
+
+ //Process process = new Process();
+ //process.StartInfo = procInfo;
+ //process.Start();
+ //process.WaitForExit();
+ using(Process process = Process.Start(procInfo)){
+ using(StreamReader reader = process.StandardOutput){
+ string result = reader.ReadToEnd();
+ Console.Write(result);
+ }
+ process.WaitForExit();
+ }
+ Console.WriteLine("Pip atualizado.");
+ Console.WriteLine("Instalando os módulos. Isso pode levar alguns minutos. Por favor, aguarde.");
+ //INSTALAÇÃO DOS MÓDULOS
+ if(force){
+ //instalação forçada
+ //procInfo.Arguments = "-2 "+Directory.GetCurrentDirectory()+@"\checkwheels.py --force";
+ //procInfo.Arguments = "-m "+Directory.GetCurrentDirectory()+@"\checkwheels.py --force";
+ procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\checkwheels.py"+"\""+" --force";
+ }else{
+ //procInfo.Arguments = "-2 "+Directory.GetCurrentDirectory()+@"\checkwheels.py";
+ //procInfo.Arguments = "-m "+Directory.GetCurrentDirectory()+@"\checkwheels.py";
+ procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\checkwheels.py"+"\"";
+ }
+ //Console.WriteLine("VERIFICAÇÃO DA LINHA insWhls2: "+procInfo.Arguments);
+ //Console.ReadKey();
+ //process = new Process();
+ //process.StartInfo = procInfo;
+ //process.Start();
+ //process.WaitForExit();
+ using(Process process = Process.Start(procInfo)){
+ using(StreamReader reader = process.StandardOutput){
+ string result = reader.ReadToEnd();
+ Console.Write(result);
+ }
+ process.WaitForExit();
+ }
+ }
+
+
+ //SE FOR USAR BOTAR PYTHONPATH2 ENTRE ASPAS!!!!!!!!!!
+ /*public static bool ChecarVersaoPython(){
+ string driveAtual = @"%HOMEPATH%\..\..";
+ string pathPython2 = driveAtual+@"Python27\python.exe";
+
+ //string comandoIns = "/C py -2 --version";
+ string comandoIns = @"/C "+"\""pathPython2+"\""+" --version";
+ //Process e Process Information
+ ProcessStartInfo insProcInfo = new ProcessStartInfo();
+ Process insProc = new Process();
+
+ insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ insProcInfo.FileName = "cmd.exe";
+ insProcInfo.Arguments = comandoIns;
+ insProcInfo.UseShellExecute = false;
+ insProcInfo.CreateNoWindow = true;
+ insProcInfo.RedirectStandardError = true;
+ //insProcInfo.Verb = "runas"; //ADM
+
+ insProc.StartInfo = insProcInfo;
+ insProc.Start();
+ string output = insProc.StandardError.ReadToEnd();
+ insProc.WaitForExit();
+ if(output == null || output == ""){
+ return false;
+ }
+ output = output.Remove(output.Length-2);
+ string version = output.Replace("Python ", "");
+ string majorMinorVersion = version.Remove(3);
+ if(majorMinorVersion.Equals("2.7")){
+ string patchVersion = version.Replace("2.7.","");
+ int x = -1;
+ int.TryParse(patchVersion, out x);
+ if(x >= 9){
+ return true;
+ }
+ }
+ return false;
+ }*/
+
public static void Install(string pathInstaller64, string pathInstaller86){
string pathInstaller;
if(Environment.Is64BitOperatingSystem){
@@ -53,12 +250,13 @@ namespace VLIBRAS_II
if(pathInstaller == ""){
return;
}
- string comandoIns = "/C" + pathInstaller;
+ //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
+ string comandoIns = @"msiexec /i "+"\""+pathInstaller+"\""+@" /quiet /qn /norestart";
//Process e Process Information
- System.Diagnostics.ProcessStartInfo insProcInfo = new System.Diagnostics.ProcessStartInfo();
- insProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
- System.Diagnostics.Process insProc = new System.Diagnostics.Process();
+ ProcessStartInfo insProcInfo = new ProcessStartInfo();
+ Process insProc = new Process();
+ insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
insProcInfo.FileName = "cmd.exe";
insProcInfo.Arguments = comandoIns;
//insProcInfo.Verb = "runas"; //ADM
@@ -68,7 +266,7 @@ namespace VLIBRAS_II
//insProc.WaitForExit();
}
- public static void InstallAndWait(string pathInstaller64, string pathInstaller86){
+ public static void Install(string pathInstaller64, string pathInstaller86, string args){
string pathInstaller;
if(Environment.Is64BitOperatingSystem){
pathInstaller = pathInstaller64;
@@ -78,18 +276,72 @@ namespace VLIBRAS_II
if(pathInstaller == ""){
return;
}
- string comandoIns = "/C" + pathInstaller;
+ //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
+ string comandoIns = @"msiexec /i "+"\""+pathInstaller+"\" "+args;
//Process e Process Information
- System.Diagnostics.ProcessStartInfo insProcInfo = new System.Diagnostics.ProcessStartInfo();
- insProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
- System.Diagnostics.Process insProc = new System.Diagnostics.Process();
+ ProcessStartInfo insProcInfo = new ProcessStartInfo();
+ Process insProc = new Process();
+ insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
insProcInfo.FileName = "cmd.exe";
insProcInfo.Arguments = comandoIns;
//insProcInfo.Verb = "runas"; //ADM
insProc.StartInfo = insProcInfo;
insProc.Start();
+ //insProc.WaitForExit();
+ }
+
+ public static void InstallAndWait(string pathInstaller64, string pathInstaller86){
+ string pathInstaller;
+ if(Environment.Is64BitOperatingSystem){
+ pathInstaller = pathInstaller64;
+ }else{
+ pathInstaller = pathInstaller86;
+ }
+ if(pathInstaller == ""){
+ return;
+ }
+ //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
+ string comandoIns = @"/i "+"\""+pathInstaller+"\"";
+ //Process e Process Information
+ ProcessStartInfo insProcInfo = new ProcessStartInfo();
+ //insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ Process insProc = new Process();
+
+ insProcInfo.FileName = "msiexec";
+ insProcInfo.Arguments = comandoIns;
+ //insProcInfo.Verb = "runas"; //ADM
+ //Console.WriteLine("VERIFICAÇÃO DE LINHA insWait: "+ insProcInfo.Arguments);
+ //Console.ReadKey();
+ insProc.StartInfo = insProcInfo;
+ insProc.Start();
+ insProc.WaitForExit();
+ }
+ //qn - instalação sem interface, passive instalação passiva
+ public static void InstallAndWait(string pathInstaller64, string pathInstaller86, string args){
+ string pathInstaller;
+ if(Environment.Is64BitOperatingSystem){
+ pathInstaller = pathInstaller64;
+ }else{
+ pathInstaller = pathInstaller86;
+ }
+ if(pathInstaller == ""){
+ return;
+ }
+ //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
+ string comandoIns = @"/i "+"\""+pathInstaller+"\" "+args;
+ //Process e Process Information
+ ProcessStartInfo insProcInfo = new ProcessStartInfo();
+ //insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ Process insProc = new Process();
+
+ insProcInfo.FileName = "msiexec";
+ insProcInfo.Arguments = comandoIns;
+ //insProcInfo.Verb = "runas"; //ADM
+
+ insProc.StartInfo = insProcInfo;
+ insProc.Start();
insProc.WaitForExit();
}
--
libgit2 0.21.2