diff --git a/AU.csproj b/AU.csproj
index 7207bd6..e87ee0c 100644
--- a/AU.csproj
+++ b/AU.csproj
@@ -26,9 +26,9 @@
http://150.165.205.137:8080/
VLIBRAS
LAVID-UFPB
- 1.0.0.67
+ 1.0.0.82
false
- 77
+ 94
1.0.0.%2a
true
true
@@ -86,6 +86,7 @@
+
@@ -96,6 +97,7 @@
+
Form
@@ -104,6 +106,7 @@
+
Form1.cs
diff --git a/BundlesManager.cs b/BundlesManager.cs
new file mode 100644
index 0000000..d2bc40b
--- /dev/null
+++ b/BundlesManager.cs
@@ -0,0 +1,148 @@
+using System;
+using System.Net;
+using System.IO;
+using System.IO.Compression;
+
+namespace VLIBRAS_II
+{
+ static class BundlesManager
+ {
+
+ public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite){
+ if (!overwrite){
+ archive.ExtractToDirectory(destinationDirectoryName);
+ 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);
+ }
+
+ if (file.Name != ""){
+ file.ExtractToFile(completeFileName, true);
+ }
+ }
+ }
+
+ private static bool RemoteFileExists(string url){
+ 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;
+ }
+ }
+
+ //File.Exists(path);
+
+ private static bool RemoteIsNewerThanLocal(string url, string path){
+ FileInfo sourceFile = new FileInfo(path);
+ 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;
+ }
+ }
+
+ private static void DownloadFileToPath(string site, string path){
+ try{
+ WebClient webClient = new WebClient();
+ webClient.DownloadFile(site, path);
+ }catch(Exception e){
+ Console.WriteLine("Erro: {0}", e);
+ }
+ }
+
+ public static int DownloadBundlesPackages(string url, string rootPath, string extractPath){
+ //rootPath é o path dos arquivos .zip locais
+ //url é o path dos arquivos .zip remotos
+ //extractPath é o path da pasta Bundles
+ string ext = @".zip";
+ int i = 1;
+ string remote;
+ string local;
+ while(true){
+ remote = url+i.ToString()+ext;
+ local = rootPath+i.ToString()+ext;
+ if(!RemoteFileExists(remote)){
+ //NECESSÁRIO PARA EVITAR IndexOutOfRange
+ i--;
+ break;
+ }else{
+ if(!File.Exists(local)){
+ DownloadFileToPath(remote, local);
+ }else{
+ if(RemoteIsNewerThanLocal(remote, local)){
+ DownloadFileToPath(remote, local);
+ //DELETA ARQUIVO DE VERIFICAÇÃO PARA QUE HAJA NOVA EXTRAÇÃO
+ File.Delete(extractPath + i);
+ }
+ }
+ }
+ i++;
+ }
+ return i;
+ }
+
+ public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){
+ string ext = @".zip";
+ bool exists = System.IO.Directory.Exists(extractPath);
+ if(!exists){
+ System.IO.Directory.CreateDirectory(extractPath);
+ }
+
+ while(qtd > 0){
+ if(!File.Exists(extractPath+qtd.ToString())){
+ string zip = rootPath+qtd.ToString()+ext;
+ Console.WriteLine("Extraindo o arquivo: "+zip);
+ ZipFile.ExtractToDirectory(zip, extractPath);
+ //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--;
+ }
+ }
+ //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){
+ string ext = @".zip";
+ bool exists = System.IO.Directory.Exists(extractPath);
+ if(!exists){
+ System.IO.Directory.CreateDirectory(extractPath);
+ }
+
+ 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();
+ }
+ qtd--;
+ }
+ }
+ }
+}
diff --git a/Program.cs b/Program.cs
index ca0886a..9b00838 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,61 +1,14 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows.Forms;
using System.Diagnostics;
-using System.Security.Permissions;
-using Microsoft.Win32;
using System.Net;
-using System.Collections;
+using Microsoft.Win32;
using System.IO;
using System.IO.Compression;
-namespace AU
+namespace VLIBRAS_II
{
static class Program
{
- public static bool RemoteFileExists(string url){
- try{
- //Creating the HttpWebRequest
- HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
- //Setting the Request method HEAD
- request.Method = "HEAD";
- //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;
- }
- }
-
- //File.Exists(path);
-
- public static bool RemoteIsNewerThanLocal(string url, string path){
- FileInfo sourceFile = new FileInfo(path);
- 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;
- }
- }
-
- public static void DownloadFileToPath(string site, string path){
- try{
- WebClient webClient = new WebClient();
- webClient.DownloadFile(site, path);
- }catch(Exception e){
- Console.WriteLine("Erro: {0}", e);
- }
- }
static void ResetEnvVar(){
string vLibrasAtual = Environment.GetEnvironmentVariable("PATH_VLIBRAS",EnvironmentVariableTarget.Machine);
string vLibrasNovo = Directory.GetCurrentDirectory();
@@ -69,139 +22,113 @@ namespace AU
System.Diagnostics.ProcessStartInfo resetProcInfo = new System.Diagnostics.ProcessStartInfo();
resetProcInfo.FileName = resetPath;
resetProcInfo.Verb = "runas"; //ADM
+ resetProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//resetProcInfo.Arguments = comandoUnins;
System.Diagnostics.Process resetProc = new System.Diagnostics.Process();
resetProc.StartInfo = resetProcInfo;
resetProc.Start();
- resetProc.WaitForExit();
- }
- }
-
- static void desinstalarVLibras(RegistryKey reg){
- //Variáveis para desinstalação
- System.Diagnostics.Process uninsProc = new System.Diagnostics.Process();
- System.Diagnostics.ProcessStartInfo uninsProcInfo = new System.Diagnostics.ProcessStartInfo();
- //uninsProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
- uninsProcInfo.FileName = "cmd.exe";
- string comandoUnins;
- comandoUnins = "/C" + reg.GetValue("QuietUninstallString").ToString().Replace("\"", "");
- uninsProcInfo.Arguments = comandoUnins;
- uninsProc.StartInfo = uninsProcInfo;
- uninsProc.Start();
- uninsProc.WaitForExit();
- }
-
- static void instalarPython(int opSys){
- //Console.WriteLine("Por favor, confirme a instalação do Python 2.7.9");
- string[] buscaPython;
- if(opSys == 64){
- buscaPython = Directory.GetFiles(Directory.GetCurrentDirectory(), "python-2.7.9.amd64.msi", SearchOption.AllDirectories);
- }else{
- buscaPython = Directory.GetFiles(Directory.GetCurrentDirectory(), "python-2.7.9.msi", SearchOption.AllDirectories);
+ //resetProc.WaitForExit();
}
- string pythonPath = buscaPython[0];
- string comandoIns = "/C" + pythonPath;
-
- System.Diagnostics.ProcessStartInfo insProcInfo = new System.Diagnostics.ProcessStartInfo();
- System.Diagnostics.Process insProc = new System.Diagnostics.Process();
-
- insProcInfo.FileName = "cmd.exe";
- insProcInfo.Arguments = comandoIns;
- //insProcInfo.Verb = "runas"; //ADM
-
- insProc.StartInfo = insProcInfo;
- insProc.Start();
- insProc.WaitForExit();
-
}
[STAThread]
static void Main()
{
-
- //VERFICAÇÃO E DESINSTALAÇÃO DO VLIBRAS DESCONTINUADO
- //Variáveis para verificar se há instalação no registro
+ //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 dirAtual = Directory.GetCurrentDirectory();
+ string[] buscaDeArquivo;
+ //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);
- RegistryKey reg;
- RegistryKey reg2;
- RegistryKey reg3;
- RegistryKey reg4;
- bool tentouX64 = false;
- Console.WriteLine("Verificação se há versões descontinuadas do VLibras.");
- //x64
- try{
- reg = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
- if(reg == null){
- Console.WriteLine("Chave do 64 é nula.");
- Console.WriteLine("UninstallString 64: nenhum.");
- Console.WriteLine("QuietUninstallString 64: nenhum.");
- }else{
- tentouX64 = true;
- Console.WriteLine("Chave: "+reg.ToString());
- Console.WriteLine("UninstallString 64: "+reg.GetValue("UninstallString").ToString().Replace("\"", ""));
- Console.WriteLine("QuietUninstallString 64: "+reg.GetValue("QuietUninstallString").ToString().Replace("\"", ""));
- //desinstalação da versão x64
- Console.WriteLine("Desinstalando a versão descontinuada do VLibras x64. Por favor, aguarde.");
- desinstalarVLibras(reg);
- //Console.WriteLine("Desinstalou a versão descontinuada do VLibras x64.");
- }
- }catch(Exception e){
- Console.WriteLine("Erro x64: {0}",e);
+
+ //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("");
- //x86
- if(!tentouX64){
- try{
- reg = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
- if(reg == null){
- Console.WriteLine("Chave do 32 é nula.");
- Console.WriteLine("UninstallString 32: nenhum.");
- Console.WriteLine("QuietUninstallString 32: nenhum.");
- }else{
- Console.WriteLine("Chave: "+reg.ToString());
- Console.WriteLine("UninstallString 32: "+reg.GetValue("UninstallString").ToString().Replace("\"", ""));
- Console.WriteLine("QuietUninstallString 32: "+reg.GetValue("QuietUninstallString").ToString().Replace("\"", ""));
- //desinstalação da versão x86
- Console.WriteLine("Desinstalando a versão descontinuada do VLibras x86. Por favor, aguarde.");
- desinstalarVLibras(reg);
- //Console.WriteLine("Desinstalou a versão descontinuada do VLibras x86.");
- }
- }catch(Exception e){
- Console.WriteLine("Erro x86: {0}",e);
- }
+ //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("");
- Console.WriteLine("Verificando se o Python 2.7.9 está instalado");
- //VERIFICAÇÃO DO INTERPRETADOR PYTHON
+
+ //VERIFICAÇÃO E DESINSTALAÇÃO DO VLIBRAS DESCONTINUADO
+ Console.WriteLine("Verificação se há versões descontinuadas do VLibras.");
//x64
- try{
- reg = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
- reg2 = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
- reg3 = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
- reg4 = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
- if(reg == null && reg2 == null && reg3 == null && reg4 == null){
- Console.WriteLine("O python 2.7.9 não se encontra instalado. Por confirme a instalação.");
- if(Environment.Is64BitOperatingSystem){
- instalarPython(64);
- }else{
- instalarPython(86);
- }
- }
- }catch(Exception e){
- Console.WriteLine("Erro python: {0}",e);
+ 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);
+
+
+ //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}");
+ //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);
+ }
+
+
+ //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.");
+ RegistryKey[] regPywin32 = new RegistryKey[2];
+ regPywin32[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\pywin32-py2.7");
+ regPywin32[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\pywin32-py2.7");
+ //string pywin32File = @"..\Bundles\pywin32";
+ if(Requirements.IsInstalled(regPython) && !Requirements.IsInstalled(regPywin32)){//File.Exists(pywin32File)){
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "pywin32-220.win-amd64-py2.7.exe", SearchOption.AllDirectories);
+ string pywin32Pathx64 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0] : @"";
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "pywin32-220.win32-py2.7.exe", SearchOption.AllDirectories);
+ string pywin32Pathx86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0] : @"";
+ 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];
+ regNVDA[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NVDA");
+ regNVDA[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\NVDA");
+ //PATH DO INSTALADOR DO NVDA
+ if(!Requirements.IsInstalled(regNVDA)){
+ buscaDeArquivo = Directory.GetFiles(dirAtual, "nvda_snapshot_source-master-4d792f0.exe", SearchOption.AllDirectories);
+ string NVDApath = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0] : @"";
+ Requirements.Install(NVDApath, NVDApath);
}
- Console.WriteLine("");
- Console.WriteLine("Checando as variáveis de ambiente.");
//CONFIGURAÇÃO DAS VARIÁVEIS DE AMBIENTE
+ Console.WriteLine("Checando as variáveis de ambiente.");
try{
ResetEnvVar();
}catch(Exception e){
@@ -209,157 +136,38 @@ namespace AU
}
- Console.WriteLine("");
//DOWNLOAD DOS SINAIS
- //BAIXA OS ZIPS DOS SINAIS
- string url = @"http://127.0.0.1:8080/";
- string path = @"..\";
+ //BAIXA OS ZIPS DOS SINAIS (1.ZIP, 2.ZIP E ETC...)
+ string rootPath = @"..\";
string extractPath = @"..\Bundles\";
- string ext = @".zip";
- int i = 1;
- string remote;
- string local;
- //baixa apenas se for mais recente ou se usuário não possuir cópia
- while(true){
- remote = url+i.ToString()+ext;
- local = path+i.ToString()+ext;
- if(!RemoteFileExists(remote)){
- //NECESSÁRIO PARA EVITAR IndexOutOfRange
- i--;
- break;
- }else{
- if(!File.Exists(local)){
- DownloadFileToPath(remote, local);
- }else{
- if(RemoteIsNewerThanLocal(remote, local)){
- DownloadFileToPath(remote, local);
- //DELETA ARQUIVO DE VERIFICAÇÃO PARA QUE HAJA NOVA EXTRAÇÃO
- File.Delete(extractPath + i);
- }
- }
- }
- i++;
+ int qtdDeBundles = 0;
+ Console.WriteLine("Baixando pacote de sinais.");
+ try{
+ qtdDeBundles = BundlesManager.DownloadBundlesPackages(url, rootPath, extractPath);
+ }catch(Exception e){
+ Console.WriteLine("Erro no download do pacote de sinais.");
}
//EXTRAÇÃO:
//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
- bool exists = System.IO.Directory.Exists(extractPath);
- if(!exists){
- System.IO.Directory.CreateDirectory(extractPath);
- }
-
- while(i > 0){
- if(!File.Exists(extractPath+i.ToString())){
- string zip = path+i.ToString()+ext;
- using (ZipArchive archive = ZipFile.Open(zip, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage))){
- foreach (ZipArchiveEntry entry in archive.Entries){
- //POSSO FILTRAR E EXTRAIR APENAS ARQUIVOS QUE TERMINEM COM O VALOR DA STRING
- if (entry.FullName.EndsWith("", StringComparison.OrdinalIgnoreCase))
- {
- entry.ExtractToFile(Path.Combine(extractPath, entry.FullName), 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
- File.Create(extractPath+i).Close();
- }
- i--;
- }
-
- //EXTRAI OS BUNDLES
- /*//VERSÃO QUE EXTRAIA TODOS ZIPS NA PASTA SINAIS
+ Console.WriteLine("Extraindo pacote de sinais.");
try{
- //ARRAY COM PATHS DOS ZIPS: "C:\...\blabla.zip"
- string[] zipPaths = Directory.GetFiles(Directory.GetCurrentDirectory()+@"\Sinais\", "*.zip", SearchOption.AllDirectories);
-
- //ARRAY COM NOMES DOS ZIPS: "blabla"
- string[] nomeZips = new string[zipPaths.Length];
- for(int i = 0; i < zipPaths.Length; i++){
- int slashIdx = zipPaths[i].LastIndexOf(@"\");
- int extIdx = zipPaths[i].LastIndexOf(@".");
- //Console.WriteLine("path>> "+zipPath);
- //Console.WriteLine("removido a extensão>> "+zipPath.Remove(extIdx, 4));
- //Console.WriteLine("nome do arquivo com extensão>> "+zipPath.Remove(0, slashIdx + 1));
- Console.WriteLine("nome do arquivo sem extensão>> "+zipPaths[i].Remove(extIdx, 4).Remove(0, slashIdx + 1));
- nomeZips[i] = zipPaths[i].Remove(extIdx, 4).Remove(0, slashIdx + 1);
- //Console.WriteLine("nomeZips["+i+"]>> "+ nomeZips[i]);
- }
-
- //EXTRAI UM ARQUIVO: "C:\...\pastaComZip\zipado.zip"
- //EM: "C:\...\pastaComZip\zipado\arquivoQueEstavaEmZipado"
- for(int i = 0; i < nomeZips.Length; i++){
- string extractPath = zipPaths[i]+@"\..\..\..\Bundles\"; //volta duas e cria lá
-
- //SE O CAMINHO DE EXTRAÇÃO NÃO EXISTE, ELE SERÁ CRIADO
- bool exists = System.IO.Directory.Exists(extractPath);
- if(!exists){
- System.IO.Directory.CreateDirectory(extractPath);
- }
- //EXTRAÇÃO DOS ARQUIVOS
- using (ZipArchive archive = ZipFile.Open(zipPaths[i], ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage)))
- {
- foreach (ZipArchiveEntry entry in archive.Entries)
- {
- //POSSO FILTRAR E EXTRAIR APENAS ARQUIVOS QUE TERMINEM COM O VALOR DA STRING
- if (entry.FullName.EndsWith("", StringComparison.OrdinalIgnoreCase))
- {
- entry.ExtractToFile(Path.Combine(extractPath, entry.FullName), true);
- }
- }
- }
- }
- //DELETA O ZIP NO FINAL
- for(int i = 0; i < zipPaths.Length; i++){
- if(File.Exists(zipPaths[i])){
- File.Delete(zipPaths[i]);
- }
- }
+ BundlesManager.ExtractBundlesPackagesOverWrite(rootPath, extractPath, qtdDeBundles);
}catch(Exception e){
- Console.WriteLine("ERRO ZipFile: {0}", e);
+ Console.WriteLine("Erro na extração");
}
- */
- /*//VERSÃO QUE CHECAVA UM ARQUIVO DICTIONARY_VERSION.TXT
- try{
- //string dictVer = System.IO.File.ReadAllText(@"dictionary_version.txt");
- string[] dictVer = Directory.GetFiles(Directory.GetCurrentDirectory(), "dictVer.txt", SearchOption.AllDirectories);
- if(dictVer.Length == 0){
- Console.WriteLine("Path de DictVer.txt: null path");
- }else{
- Console.WriteLine("Path de DictVer.txt: " + dictVer[0]);
- }
- if(dictVer.Length == 0){
- string[] buscaBundles = Directory.GetFiles(Directory.GetCurrentDirectory(), "Bundles.zip", SearchOption.AllDirectories);
- string zipPath = buscaBundles[0];
- string extractPath = buscaBundles[0] + @"\..\Bundles\";
- using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage)))
- {
- foreach (ZipArchiveEntry entry in archive.Entries)
- {
- if (entry.FullName.EndsWith("", StringComparison.OrdinalIgnoreCase))
- {
- entry.ExtractToFile(Path.Combine(extractPath, entry.FullName), true);
- }
- }
- }
- }
- }catch(Exception e){
- Console.WriteLine("ERRO ZipFile: {0}", e);
- }
- */
+ //CONCLUSÃO
Console.WriteLine("Pré-requisitos verificados.");
- //Console.ReadKey();
-
//RODA O VLIBRAS
try{
Process playerProc = new Process();
- string[] buscaPlayer = Directory.GetFiles(Directory.GetCurrentDirectory(), "vlibrasPlayer.exe", SearchOption.AllDirectories);
+ string[] buscaPlayer = Directory.GetFiles(dirAtual, "vlibrasPlayer.exe", SearchOption.AllDirectories);
string player = buscaPlayer[0];
playerProc.StartInfo.FileName = player;
playerProc.EnableRaisingEvents = true;
@@ -374,6 +182,7 @@ namespace AU
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
*/
+
}
}
}
diff --git a/Requirements.cs b/Requirements.cs
new file mode 100644
index 0000000..f8df13e
--- /dev/null
+++ b/Requirements.cs
@@ -0,0 +1,97 @@
+using System;
+using Microsoft.Win32;
+
+namespace VLIBRAS_II
+{
+ class Requirements
+ {
+ public static bool IsInstalled(RegistryKey[] regs){
+ foreach(RegistryKey reg in regs){
+ if(reg != null){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static bool IsInstalled(RegistryKey reg){
+ if(reg != null){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ public static void Uninstall(RegistryKey[] regs){
+ 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;
+ uninsProcInfo.FileName = "cmd.exe";
+ string comandoUnins;
+ comandoUnins = "/C" + reg.GetValue("QuietUninstallString").ToString().Replace("\"", "");
+ uninsProcInfo.Arguments = comandoUnins;
+ uninsProc.StartInfo = uninsProcInfo;
+ uninsProc.Start();
+ //uninsProc.WaitForExit();
+ }catch(Exception e){
+ //NOTHING
+ }
+ }
+ }
+ }
+
+ public static void Install(string pathInstaller64, string pathInstaller86){
+ string pathInstaller;
+ if(Environment.Is64BitOperatingSystem){
+ pathInstaller = pathInstaller64;
+ }else{
+ pathInstaller = pathInstaller86;
+ }
+ if(pathInstaller == ""){
+ return;
+ }
+ string comandoIns = "/C" + pathInstaller;
+ //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();
+
+ 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;
+ //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();
+
+ insProcInfo.FileName = "cmd.exe";
+ insProcInfo.Arguments = comandoIns;
+ //insProcInfo.Verb = "runas"; //ADM
+
+ insProc.StartInfo = insProcInfo;
+ insProc.Start();
+ insProc.WaitForExit();
+ }
+
+ }
+}
--
libgit2 0.21.2