Commit b8e528c15176102b012e8fff7bc63bf68ea1773f

Authored by CaioMoraes
1 parent 15994223
Exists in Au-ghub/master

Versão lançada 18102016

AU.csproj
... ... @@ -7,8 +7,8 @@
7 7 <ProjectGuid>{6EB1FB18-7A1B-46E0-9991-A18B3AA32E5C}</ProjectGuid>
8 8 <OutputType>Exe</OutputType>
9 9 <AppDesignerFolder>Properties</AppDesignerFolder>
10   - <RootNamespace>VLIBRAS_II</RootNamespace>
11   - <AssemblyName>VLIBRAS_II</AssemblyName>
  10 + <RootNamespace>AtualizadorVLibras</RootNamespace>
  11 + <AssemblyName>AtualizadorVLibras</AssemblyName>
12 12 <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13 13 <FileAlignment>512</FileAlignment>
14 14 <IsWebBootstrapper>true</IsWebBootstrapper>
... ... @@ -22,14 +22,15 @@
22 22 <UpdatePeriodically>false</UpdatePeriodically>
23 23 <UpdateRequired>true</UpdateRequired>
24 24 <MapFileExtensions>false</MapFileExtensions>
25   - <InstallUrl>http://150.165.205.137:8080/</InstallUrl>
26   - <UpdateUrl>http://150.165.205.137:8080/</UpdateUrl>
27   - <ProductName>VLIBRAS</ProductName>
  25 + <InstallUrl>http://atualizacao.vlibras.lavid.ufpb.br/windows/</InstallUrl>
  26 + <UpdateUrl>http://atualizacao.vlibras.lavid.ufpb.br/windows/</UpdateUrl>
  27 + <ProductName>Atualizador VLibras</ProductName>
28 28 <PublisherName>LAVID-UFPB</PublisherName>
29   - <MinimumRequiredVersion>1.0.0.82</MinimumRequiredVersion>
  29 + <MinimumRequiredVersion>5.0.0.0</MinimumRequiredVersion>
30 30 <OpenBrowserOnPublish>false</OpenBrowserOnPublish>
31   - <ApplicationRevision>94</ApplicationRevision>
32   - <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
  31 + <TrustUrlParameters>true</TrustUrlParameters>
  32 + <ApplicationRevision>2</ApplicationRevision>
  33 + <ApplicationVersion>5.0.0.%2a</ApplicationVersion>
33 34 <UseApplicationTrust>true</UseApplicationTrust>
34 35 <CreateDesktopShortcut>true</CreateDesktopShortcut>
35 36 <PublishWizardCompleted>true</PublishWizardCompleted>
... ... @@ -44,6 +45,7 @@
44 45 <DefineConstants>DEBUG;TRACE</DefineConstants>
45 46 <ErrorReport>prompt</ErrorReport>
46 47 <WarningLevel>4</WarningLevel>
  48 + <Prefer32Bit>false</Prefer32Bit>
47 49 </PropertyGroup>
48 50 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
49 51 <PlatformTarget>AnyCPU</PlatformTarget>
... ... @@ -64,7 +66,7 @@
64 66 <ApplicationManifest>Properties\app.manifest</ApplicationManifest>
65 67 </PropertyGroup>
66 68 <PropertyGroup>
67   - <SignManifests>true</SignManifests>
  69 + <SignManifests>false</SignManifests>
68 70 </PropertyGroup>
69 71 <PropertyGroup>
70 72 <ManifestCertificateThumbprint>2811720AF50392C2792C67C4DEBCB1D40662604A</ManifestCertificateThumbprint>
... ... @@ -97,7 +99,9 @@
97 99 <Reference Include="System.Xml" />
98 100 </ItemGroup>
99 101 <ItemGroup>
100   - <Compile Include="BundlesManager.cs" />
  102 + <Compile Include="BundlesManager.cs">
  103 + <SubType>Component</SubType>
  104 + </Compile>
101 105 <Compile Include="Form1.cs">
102 106 <SubType>Form</SubType>
103 107 </Compile>
... ...
BundlesManager.cs
... ... @@ -3,10 +3,21 @@ using System.Net;
3 3 using System.IO;
4 4 using System.IO.Compression;
5 5  
6   -namespace VLIBRAS_II
  6 +namespace AtualizadorVLibras
7 7 {
  8 +
  9 + public class TimeoutWebClient : WebClient{
  10 + protected override WebRequest GetWebRequest(Uri address){
  11 + HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
  12 + request.Timeout = 3600000; //1 hour timeout
  13 + return request;
  14 + }
  15 + }
  16 +
8 17 static class BundlesManager
9 18 {
  19 + //timeout para verificação de existência e data de última verificação dos pacotes
  20 + static int timeout = 2000;
10 21  
11 22 public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite){
12 23 if (!overwrite){
... ... @@ -14,59 +25,73 @@ namespace VLIBRAS_II
14 25 return;
15 26 }
16 27 foreach (ZipArchiveEntry file in archive.Entries){
17   - string completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
18   - string directory = Path.GetDirectoryName(completeFileName);
19   - Console.WriteLine("Extraindo "+file.FullName+".");
20   - if (!Directory.Exists(directory)){
21   - Directory.CreateDirectory(directory);
22   - }
  28 + try{
  29 + string completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
  30 + string directory = Path.GetDirectoryName(completeFileName);
  31 + Console.WriteLine("Extraindo "+file.FullName+".");
  32 + if (!Directory.Exists(directory)){
  33 + Directory.CreateDirectory(directory);
  34 + }
23 35  
24   - if (file.Name != ""){
25   - file.ExtractToFile(completeFileName, true);
  36 + if (file.Name != ""){
  37 + file.ExtractToFile(completeFileName, true);
  38 + }
  39 + }catch(Exception e){
  40 + Console.WriteLine("Erro na extração: {0}",e);
  41 + continue;
26 42 }
27 43 }
28 44 }
29 45  
30   - private static bool RemoteFileExists(string url){
  46 + //File.Exists(path);
  47 +
  48 + private static bool RemoteFileExists(string url){
  49 + bool result = false;
  50 + var request = (HttpWebRequest)WebRequest.Create(url);
  51 + request.Method = "HEAD";
  52 + request.Timeout = timeout;
  53 + HttpWebResponse response = null;
31 54 try{
32   - //Creating the HttpWebRequest
33   - HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
34   - //Setting the Request method HEAD
35   - request.Method = "HEAD";
36   - request.Timeout = 2000;
37   - //Getting the Web Response.
38   - HttpWebResponse response = request.GetResponse() as HttpWebResponse;
39   - //Returns TURE if the Status code == 200
40   - return (response.StatusCode == HttpStatusCode.OK);
41   - }
42   - catch{
43   - //Any exception will returns false.
44   - return false;
  55 + response = (HttpWebResponse)request.GetResponse();
  56 + result = (response.StatusCode == HttpStatusCode.OK);
  57 + }catch(Exception e){
  58 + //Console.WriteLine("Arquivo não existe no servidor: {0}",e);
  59 + }finally{
  60 + if(response != null){
  61 + response.Close();
  62 + }
45 63 }
  64 + return result;
46 65 }
47 66  
48   - //File.Exists(path);
49   -
50 67 private static bool RemoteIsNewerThanLocal(string url, string path){
  68 + bool result = false;//resultado padrão
  69 + //informações do arquivo
51 70 FileInfo sourceFile = new FileInfo(path);
  71 + //solicitação do arquivo remoto
52 72 var request = (HttpWebRequest)WebRequest.Create(url);
53 73 request.Method = "HEAD";
54   - var response = (HttpWebResponse)request.GetResponse();
55   - //Console.WriteLine("response.LastModified: "+response.LastModified);
56   - //Console.WriteLine("sourceFile.LastWriteTime: "+sourceFile.LastWriteTime);
57   - if(response.LastModified > sourceFile.LastWriteTime){
58   - return true;
59   - }else{
60   - return false;
  74 + request.Timeout = timeout;
  75 + HttpWebResponse response = null;
  76 + try{
  77 + response = (HttpWebResponse)request.GetResponse();
  78 + result = (response.LastModified > sourceFile.LastWriteTime);
  79 + }catch(Exception e){
  80 + //Console.WriteLine("Erro: {0}",e);
  81 + }finally{
  82 + if(response != null){
  83 + response.Close();
  84 + }
61 85 }
  86 + return result;
62 87 }
63 88  
64 89 private static void DownloadFileToPath(string site, string path){
65 90 try{
66   - WebClient webClient = new WebClient();
  91 + TimeoutWebClient webClient = new TimeoutWebClient();
67 92 webClient.DownloadFile(site, path);
68 93 }catch(Exception e){
69   - Console.WriteLine("Erro: {0}", e);
  94 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
70 95 }
71 96 }
72 97  
... ... @@ -79,6 +104,7 @@ namespace VLIBRAS_II
79 104 string remote;
80 105 string local;
81 106 while(true){
  107 + Console.WriteLine("Verificando arquivo "+i+"zip dos pacotes de sinais.");
82 108 remote = url+i.ToString()+ext;
83 109 local = rootPath+i.ToString()+ext;
84 110 if(!RemoteFileExists(remote)){
... ... @@ -87,9 +113,11 @@ namespace VLIBRAS_II
87 113 break;
88 114 }else{
89 115 if(!File.Exists(local)){
  116 + Console.WriteLine("Baixando o "+i+"o pacote de sinais.");
90 117 DownloadFileToPath(remote, local);
91 118 }else{
92 119 if(RemoteIsNewerThanLocal(remote, local)){
  120 + Console.WriteLine("Houve um patch nesse pacote: baixando o "+i+"o pacote de sinais.");
93 121 DownloadFileToPath(remote, local);
94 122 //DELETA ARQUIVO DE VERIFICAÇÃO PARA QUE HAJA NOVA EXTRAÇÃO
95 123 File.Delete(extractPath + i);
... ... @@ -101,7 +129,7 @@ namespace VLIBRAS_II
101 129 return i;
102 130 }
103 131  
104   - public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){
  132 + /*public static void ExtractBundlesPackages(string rootPath, string extractPath, int qtd){
105 133 string ext = @".zip";
106 134 bool exists = System.IO.Directory.Exists(extractPath);
107 135 if(!exists){
... ... @@ -120,9 +148,10 @@ namespace VLIBRAS_II
120 148 }
121 149 qtd--;
122 150 }
123   - }
  151 + }*/
  152 +
124 153 //ZipArchive archive = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
125   - public static void ExtractBundlesPackagesOverWrite(string rootPath, string extractPath, int qtd){
  154 + public static void ExtractBundlesPackagesOverWrite(string rootPath, string extractPath, int qtd, string url){
126 155 string ext = @".zip";
127 156 bool exists = System.IO.Directory.Exists(extractPath);
128 157 if(!exists){
... ... @@ -130,18 +159,25 @@ namespace VLIBRAS_II
130 159 }
131 160  
132 161 while(qtd > 0){
133   - if(!File.Exists(extractPath+qtd.ToString())){
134   - string fileAbsolute = rootPath+qtd.ToString()+ext;
135   - ZipArchive zip = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
136   - Console.WriteLine("Extraindo o arquivo: "+zip);
137   - //ZipFile.ExtractToDirectory(zip, extractPath);
138   - ExtractToDirectory(zip, extractPath, true);
139   - //CRIA UM ARQUIVO 1(SEM EXTENSÃO), 2, 3... NA PASTA BUNDLES PARA VERIFICAÇÃO DE EXTRAÇÃO PRÉVIA
140   - //SÓ É CRIADO APÓS EXTRAÇÃO DE TODOS OS ARQUIVOS DE CADA ZIP
141   - Console.WriteLine("Extração do arquivo "+zip+" concluída.");
142   - File.Create(extractPath+qtd).Close();
143   - }
  162 + try{
  163 + if(!File.Exists(extractPath+qtd.ToString())){
  164 + string fileAbsolute = rootPath+qtd.ToString()+ext;
  165 + ZipArchive zip = ZipFile.Open(fileAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
  166 + Console.WriteLine("Extraindo o arquivo: "+zip);
  167 + //ZipFile.ExtractToDirectory(zip, extractPath);
  168 + ExtractToDirectory(zip, extractPath, true);
  169 + //CRIA UM ARQUIVO 1(SEM EXTENSÃO), 2, 3... NA PASTA BUNDLES PARA VERIFICAÇÃO DE EXTRAÇÃO PRÉVIA
  170 + //SÓ É CRIADO APÓS EXTRAÇÃO DE TODOS OS ARQUIVOS DE CADA ZIP
  171 + Console.WriteLine("Extração do arquivo "+zip+" concluída.");
  172 + File.Create(extractPath+qtd).Close();
  173 + }
144 174 qtd--;
  175 + }catch(Exception e){
  176 + Console.WriteLine("Erro na extração do "+qtd.ToString()+ext+"\nErro: {0}",e);
  177 + Console.WriteLine("Tentando baixar novamente o arquivo: "+qtd.ToString()+ext);
  178 + DownloadFileToPath(url+qtd.ToString()+ext, rootPath+qtd.ToString()+ext);
  179 + continue;
  180 + }
145 181 }
146 182 }
147 183 }
... ...
Program.cs
... ... @@ -5,12 +5,12 @@ using Microsoft.Win32;
5 5 using System.IO;
6 6 using System.IO.Compression;
7 7  
8   -namespace VLIBRAS_II
  8 +namespace AtualizadorVLibras
9 9 {
10 10 static class Program
11 11 {
12 12 static void ResetEnvVar(){
13   - string vLibrasAtual = Environment.GetEnvironmentVariable("PATH_VLIBRAS",EnvironmentVariableTarget.Machine);
  13 + string vLibrasAtual = Environment.GetEnvironmentVariable("PATH_VLIBRAS",EnvironmentVariableTarget.User);
14 14 string vLibrasNovo = Directory.GetCurrentDirectory();
15 15  
16 16 if(!vLibrasNovo.Equals(vLibrasAtual)){
... ... @@ -36,66 +36,111 @@ namespace VLIBRAS_II
36 36 static void Main()
37 37 {
38 38 //ENDEREÇO DE ONDE SERÃO BAIXADOS OS PACOTES (.ZIP) DE SINAIS (1.ZIP, 2.ZIP E ETC...)
39   - string url = @"http://150.165.205.137:8080/";
  39 + string url = @"http://atualizacao.vlibras.lavid.ufpb.br/windows/";
  40 + //string url = @"http://179.185.184.75:8080/";
  41 +
40 42 string dirAtual = Directory.GetCurrentDirectory();
41 43 string[] buscaDeArquivo;
  44 + bool instalouPython = false;
42 45 //Variáveis para verificar se há instalação no registro em lm64 e 32 (local machine x64 e x86)
43 46 var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
44 47 var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
  48 + var cu64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
  49 + var cu32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
45 50  
46 51  
47 52 //EXTRAÇÃO DO VLIBRAS
48   - string vlibrasZip = @"VLIBRAS.zip";
49   - string vlibrasZipAbsolute = dirAtual+@"\"+vlibrasZip;
50   - ZipArchive archive = ZipFile.Open(vlibrasZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
51   - if(!File.Exists(dirAtual+@"\"+@"extraido")){
52   - Console.WriteLine("Extraindo do arquivo: "+vlibrasZip);
53   - BundlesManager.ExtractToDirectory(archive, dirAtual, true);
54   - Console.WriteLine("Extração do arquivo "+vlibrasZip+" concluída.");
55   - File.Create(dirAtual+@"\"+@"extraido").Close();
  53 + Console.WriteLine("Extração do vlibras");
  54 + try{
  55 + string vlibrasZip = @"VLIBRAS.zip";
  56 + string vlibrasZipAbsolute = dirAtual+@"\"+vlibrasZip;
  57 + ZipArchive archive = ZipFile.Open(vlibrasZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
  58 + if(!File.Exists(dirAtual+@"\"+@"extraido")){
  59 + Console.WriteLine("Extraindo do arquivo: "+vlibrasZip);
  60 + BundlesManager.ExtractToDirectory(archive, dirAtual, true);
  61 + Console.WriteLine("Extração do arquivo "+vlibrasZip+" concluída.");
  62 + File.Create(dirAtual+@"\"+@"extraido").Close();
  63 + }
  64 + }catch(Exception e){
  65 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  66 + Console.ReadKey();
56 67 }
57 68  
58 69  
59 70 //EXTRAÇÃO DOS REQUISITOS
60   - string reqZip = @"requisitos.zip";
61   - string reqZipAbsolute = dirAtual+@"\"+reqZip;
62   - archive = ZipFile.Open(reqZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
63   - if(!File.Exists(dirAtual+@"\"+@"extraidoReq")){
64   - Console.WriteLine("Extraindo do arquivo: "+reqZip);
65   - BundlesManager.ExtractToDirectory(archive, dirAtual, true);
66   - Console.WriteLine("Extração do arquivo "+reqZip+" concluída.");
67   - File.Create(dirAtual+@"\"+@"extraidoReq").Close();
  71 + Console.WriteLine("Extração de Requisitos");
  72 + try{
  73 + string reqZip = @"requisitos.zip";
  74 + string reqZipAbsolute = dirAtual+@"\"+reqZip;
  75 + ZipArchive archive = ZipFile.Open(reqZipAbsolute, ZipArchiveMode.Read, System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage));
  76 + if(!File.Exists(dirAtual+@"\"+@"extraidoReq")){
  77 + Console.WriteLine("Extraindo do arquivo: "+reqZip);
  78 + BundlesManager.ExtractToDirectory(archive, dirAtual, true);
  79 + Console.WriteLine("Extração do arquivo "+reqZip+" concluída.");
  80 + File.Create(dirAtual+@"\"+@"extraidoReq").Close();
  81 + }
  82 + }catch(Exception e){
  83 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  84 + Console.ReadKey();
68 85 }
69 86  
70 87  
71   -
72 88 //VERIFICAÇÃO E DESINSTALAÇÃO DO VLIBRAS DESCONTINUADO
73 89 Console.WriteLine("Verificação se há versões descontinuadas do VLibras.");
74   - //x64
75   - RegistryKey[] regVLibrasOld = new RegistryKey[2];
76   - regVLibrasOld[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
77   - regVLibrasOld[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
78   - Requirements.Uninstall(regVLibrasOld);
  90 + try{
  91 + RegistryKey[] regVLibrasOld = new RegistryKey[2];
  92 + regVLibrasOld[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
  93 + regVLibrasOld[1] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{84B73167-EF7F-42BB-9CCD-E1A8E2C53659-vlibras}_is1");
  94 + Requirements.Uninstall(regVLibrasOld);
  95 + }catch(Exception e){
  96 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  97 + Console.ReadKey();
  98 + }
79 99  
80 100  
81   - //REGISTROS DO PYTHON
82   - RegistryKey[] regPython = new RegistryKey[4];
83   - regPython[0] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
84   - regPython[1] = lm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
85   - regPython[2] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813232}");
86   - regPython[3] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{79F081BF-7454-43DB-BD8F-9EE596813233}");
  101 + //INSTALAÇÃO DO LAUNCHER DO PYTHON
  102 + //é para ser instalado antes mesmo!!!!!!!
  103 + /*Console.WriteLine("Verificação do launcher");
  104 + try{
  105 + RegistryKey[] regPyLauncher = new RegistryKey[2];
  106 + regPyLauncher[0] = cu64.OpenSubKey(@"Software\Microsoft\Installer\Products\B24C6BC17885FC74FA128928650F54B5");
  107 + regPyLauncher[1] = cu64.OpenSubKey(@"Software\Microsoft\Installer\Products\26D5B8927821F7248B9D4BD406F5F8B6");
  108 + if(!Requirements.IsInstalled(regPyLauncher)){
  109 + buscaDeArquivo = Directory.GetFiles(dirAtual, "launchwin-1.0.1.6.amd64.msi", SearchOption.AllDirectories);
  110 + string pyLauncherPath64 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @"";
  111 + buscaDeArquivo = Directory.GetFiles(dirAtual, "launchwin-1.0.1.6.msi", SearchOption.AllDirectories);
  112 + string pyLauncherPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
  113 + Requirements.InstallAndWait(pyLauncherPath64, pyLauncherPath86);//, @"/passive"); //instalação passiva
  114 + }
  115 + }catch(Exception e){
  116 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  117 + Console.ReadKey();
  118 + }*/
  119 +
87 120 //VERIFICAÇÃO E INSTALAÇÃO DO PYTHON
88   - Console.WriteLine("Verificando se o Python 2.7.9 está instalado");
89   - if(!Requirements.IsInstalled(regPython)){
90   - //PATHS DE INSTALAÇÃO DO PYTHON
91   - buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.9.amd64.msi", SearchOption.AllDirectories);
92   - string pythonPath64 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @"";
93   - buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.9.msi", SearchOption.AllDirectories);
94   - string pythonPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
95   - Requirements.InstallAndWait(pythonPath64, pythonPath86);
  121 + //REGISTROS DO PYTHON
  122 + try{
  123 + RegistryKey[] regPython = new RegistryKey[4];
  124 + 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}");
  126 + regPython[2] = lm32.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
  127 + regPython[3] = lm64.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{9DA28CE5-0AA5-429E-86D8-686ED898C665}");
  128 +
  129 + Console.WriteLine("Verificando se o Python 2.7.12(32) está instalado");
  130 + if(!Requirements.IsInstalled(regPython)){//ChecarVersaoPython()){
  131 + //PATHS DE INSTALAÇÃO DO PYTHON
  132 + buscaDeArquivo = Directory.GetFiles(dirAtual, "python-2.7.12.msi", SearchOption.AllDirectories);
  133 + string pythonPath86 = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0]: @""; //O VALOR É 0 MESMO, POIS REALIZOU UMA NOVA BUSCA
  134 + Requirements.InstallAndWait(pythonPath86, pythonPath86);//, @"/qn"); //instalação silenciosa
  135 + instalouPython = true;
  136 + }
  137 + }catch(Exception e){
  138 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  139 + Console.ReadKey();
96 140 }
97 141  
98 142  
  143 + /*
99 144 //VERIFICAÇÃO E INSTALAÇÃO DE PYWIN32
100 145 //usa esse arquivo para verificação de instalação do pywin32
101 146 Console.WriteLine("Verificando instalação do Pywin32.");
... ... @@ -111,9 +156,11 @@ namespace VLIBRAS_II
111 156 Requirements.Install(pywin32Pathx64, pywin32Pathx86);
112 157 //File.Create(pywin32File).Close();
113 158 }
  159 + */
114 160  
115 161  
116 162 //VERIFICAÇÃO DA INSTALAÇÃO DO NVDA
  163 + /*
117 164 Console.WriteLine("Verificando instalação do NVDA.");
118 165 //REGISTROS DO NDVA
119 166 RegistryKey[] regNVDA = new RegistryKey[3];
... ... @@ -125,6 +172,7 @@ namespace VLIBRAS_II
125 172 string NVDApath = (buscaDeArquivo.Length > 0)? buscaDeArquivo[0] : @"";
126 173 Requirements.Install(NVDApath, NVDApath);
127 174 }
  175 + */
128 176  
129 177  
130 178 //CONFIGURAÇÃO DAS VARIÁVEIS DE AMBIENTE
... ... @@ -132,7 +180,34 @@ namespace VLIBRAS_II
132 180 try{
133 181 ResetEnvVar();
134 182 }catch(Exception e){
135   - Console.WriteLine("Erro Var Env: {0}", e);
  183 + Console.WriteLine("Erro Var Env: {0}\nAperte alguma tecla para continuar.", e);
  184 + Console.ReadKey();
  185 + }
  186 +
  187 +
  188 +
  189 + //INSTALAÇÃO DOS MÓDULOS DO PYTHON
  190 + //Tem que ser depois da configuração das variáveis de ambiente
  191 + Console.WriteLine("Instalando os módulos de python.");
  192 + try{
  193 + if(instalouPython){
  194 + //instalação forçada de módulos
  195 + Requirements.InstallWheels(true);
  196 + }else{
  197 + Requirements.InstallWheels(false);
  198 + }
  199 + }catch(Exception e){
  200 + Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e);
  201 + Console.ReadKey();
  202 + }
  203 +
  204 + //CRIAÇÃO DO ATALHO DO VLIBRAS
  205 + Console.WriteLine("Criação do atalho do vlibras.");
  206 + try{
  207 + Requirements.criaAtalho();
  208 + }catch(Exception e){
  209 + Console.WriteLine("Erro na instalação de módulos do python {0}\nAperte alguma tecla para continuar.", e);
  210 + Console.ReadKey();
136 211 }
137 212  
138 213  
... ... @@ -145,7 +220,8 @@ namespace VLIBRAS_II
145 220 try{
146 221 qtdDeBundles = BundlesManager.DownloadBundlesPackages(url, rootPath, extractPath);
147 222 }catch(Exception e){
148   - Console.WriteLine("Erro no download do pacote de sinais.");
  223 + Console.WriteLine("Erro no download do pacote de sinais.\n{0}\nAperte alguma tecla para continuar.",e);
  224 + Console.ReadKey();
149 225 }
150 226  
151 227  
... ... @@ -153,11 +229,12 @@ namespace VLIBRAS_II
153 229 //EXTRAI APENAS SE NÃO TIVER O ARQUIVO HOMÔNIMO SEM EXTENSÃO NA PASTA SINAIS
154 230 //SE O CAMINHO DE EXTRAÇÃO NÃO EXISTE, ELE SERÁ CRIADO
155 231 Console.WriteLine("Extraindo pacote de sinais.");
156   - try{
157   - BundlesManager.ExtractBundlesPackagesOverWrite(rootPath, extractPath, qtdDeBundles);
158   - }catch(Exception e){
159   - Console.WriteLine("Erro na extração");
160   - }
  232 + //try{
  233 + BundlesManager.ExtractBundlesPackagesOverWrite(rootPath, extractPath, qtdDeBundles, url);
  234 + /*}catch(Exception e){
  235 + Console.WriteLine("Erro na extração: {0}", e);
  236 + Console.ReadKey();
  237 + }*/
161 238  
162 239  
163 240 //CONCLUSÃO
... ... @@ -165,6 +242,8 @@ namespace VLIBRAS_II
165 242  
166 243  
167 244 //RODA O VLIBRAS
  245 +
  246 + /*Console.WriteLine("Abrindo player.");
168 247 try{
169 248 Process playerProc = new Process();
170 249 string[] buscaPlayer = Directory.GetFiles(dirAtual, "vlibrasPlayer.exe", SearchOption.AllDirectories);
... ... @@ -174,8 +253,9 @@ namespace VLIBRAS_II
174 253 playerProc.Start();
175 254 //playerProc.WaitForExit();
176 255 }catch(Exception e){
177   - Console.WriteLine("Erro: {0}", e);
178   - }
  256 + Console.WriteLine("Erro: {0}\nAperte alguma tecla para continuar.", e);
  257 + Console.ReadKey();
  258 + }*/
179 259  
180 260 /*
181 261 Application.EnableVisualStyles();
... ...
Requirements.cs
1 1 using System;
  2 +using System.IO;
  3 +using System.Diagnostics;
2 4 using Microsoft.Win32;
3 5  
4   -namespace VLIBRAS_II
  6 +namespace AtualizadorVLibras
5 7 {
6 8 class Requirements
7 9 {
... ... @@ -26,9 +28,9 @@ namespace VLIBRAS_II
26 28 foreach(RegistryKey reg in regs){
27 29 if(IsInstalled(reg)){
28 30 try{
29   - System.Diagnostics.Process uninsProc = new System.Diagnostics.Process();
30   - System.Diagnostics.ProcessStartInfo uninsProcInfo = new System.Diagnostics.ProcessStartInfo();
31   - uninsProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
  31 + Process uninsProc = new Process();
  32 + ProcessStartInfo uninsProcInfo = new ProcessStartInfo();
  33 + uninsProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
32 34 uninsProcInfo.FileName = "cmd.exe";
33 35 string comandoUnins;
34 36 comandoUnins = "/C" + reg.GetValue("QuietUninstallString").ToString().Replace("\"", "");
... ... @@ -36,13 +38,208 @@ namespace VLIBRAS_II
36 38 uninsProc.StartInfo = uninsProcInfo;
37 39 uninsProc.Start();
38 40 //uninsProc.WaitForExit();
39   - }catch(Exception e){
  41 + }catch(Exception){
40 42 //NOTHING
41 43 }
42 44 }
43 45 }
44 46 }
45 47  
  48 + //CRIA ATALHO
  49 + public static void criaAtalho(){
  50 + //string driveAtual = @"%HOMEPATH%\..\..";
  51 + //string pathPython2 = driveAtual+@"Python27\python.exe";
  52 + //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine);
  53 + string pathPython2 = GetRegistroPythonPath();
  54 + int idx = pathPython2.IndexOf(@";");
  55 + //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx);
  56 + //pathPython2 = "\""+pathPython2 + "\\python.exe\"";
  57 +
  58 + //Console.WriteLine("VERIFICAÇÃO DA LINHA criaAtalho: "+pathPython2);
  59 + //Console.ReadKey();
  60 +
  61 + ProcessStartInfo procInfo = new ProcessStartInfo();
  62 + procInfo.FileName = pathPython2;//"cmd.exe";
  63 + //procInfo.Arguments = "/C py -2 "+Directory.GetCurrentDirectory()+@"\criaLnk.py";
  64 + //procInfo.Arguments = "/C "+pathPython2+" -m "+Directory.GetCurrentDirectory()+@"\criaLnk.py";
  65 + //procInfo.Arguments = "/C "+pathPython2+" \""+Directory.GetCurrentDirectory()+"\\criaLnk.py\"";
  66 + procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\criaLnk.py";
  67 + procInfo.UseShellExecute = false;
  68 + procInfo.RedirectStandardOutput = true;
  69 + procInfo.WindowStyle = ProcessWindowStyle.Hidden;
  70 +
  71 + //Process process = new Process();
  72 + //process.StartInfo = procInfo;
  73 + //process.Start();
  74 + using(Process process = Process.Start(procInfo)){
  75 + using(StreamReader reader = process.StandardOutput){
  76 + string result = reader.ReadToEnd();
  77 + Console.Write(result);
  78 + }
  79 + process.WaitForExit();
  80 + }
  81 + //Console.WriteLine("pausa: {0}",procInfo.Arguments);
  82 + //Console.ReadKey();
  83 + }
  84 +
  85 + public static string GetRegistroPythonPath(){
  86 + var lm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
  87 + var lm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
  88 + var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64);
  89 + var cr32 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32);
  90 + var cu64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
  91 + var cu32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
  92 +
  93 + RegistryKey pythonReg = null;
  94 + if(lm64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
  95 + pythonReg = lm64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
  96 + }
  97 + if(lm32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
  98 + pythonReg = lm32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
  99 + }
  100 + if(cu64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
  101 + pythonReg = cu64.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
  102 + }
  103 + if(cu32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath") != null){
  104 + pythonReg = cu32.OpenSubKey(@"SOFTWARE\Python\PythonCore\2.7\InstallPath");
  105 + }
  106 + if(lm64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
  107 + pythonReg = lm64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
  108 + }
  109 + if(lm32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
  110 + pythonReg = lm32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
  111 + }
  112 + if(cu64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
  113 + pythonReg = cu64.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
  114 + }
  115 + if(cu32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath") != null){
  116 + pythonReg = cu32.OpenSubKey(@"SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath");
  117 + }
  118 + if(pythonReg != null){
  119 + //CONIFGURAÇÃO DA VARIÁVEL PYTHONPATH
  120 + string python = pythonReg.GetValue(null).ToString();
  121 + //python = python.Remove(python.Length - 1).ToString();
  122 + return "\""+python+@"python.exe"+"\"";
  123 + }else{
  124 + return "";
  125 + }
  126 + }
  127 +
  128 + //INSTALA, SE NECESSÁRIO, OS MÓDULOS DO PYTHON
  129 + public static void InstallWheels(bool force){
  130 + /*var cr64 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64);
  131 + var cr32 = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32);
  132 + RegistryKey pythonShell = cr64.OpenSubKey(@"Python.File\Shell\open\command");
  133 + if(pythonShell == null){
  134 + pythonShell = cr32.OpenSubKey(@"Python.File\Shell\open\command");
  135 + }
  136 + path do python na máquina
  137 + string pythonCMD = pythonShell.GetValue(null).ToString();
  138 + pythonCMD = pythonCMD.Remove(pythonCMD.Length - 9).Replace("\"", "");
  139 + procInfo.FileName = pythonCMD;*/
  140 +
  141 + //INFORMAÇÕES SOBRE O PROCESSO QUE VAI SER INICIADO
  142 + //string driveAtual = @"%HOMEPATH%\..\..";
  143 + //string pathPython2 = driveAtual+@"Python27\python.exe";
  144 +
  145 + //string pathPython2 = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Machine);
  146 + string pathPython2 = GetRegistroPythonPath();
  147 + int idx = pathPython2.IndexOf(@";");
  148 + //pathPython2 = pathPython2.Remove(idx, pathPython2.Length - idx);
  149 + //pathPython2 = "\""+pathPython2 + "\\python.exe\"";
  150 +
  151 + //Console.WriteLine("VERIFICAÇÃO DA LINHA insWhls: "+pathPython2);
  152 + //Console.ReadKey();
  153 + //ATUALIZAÇÃO DO PIP
  154 + ProcessStartInfo procInfo = new ProcessStartInfo();
  155 + //procInfo.FileName = "py";
  156 + //procInfo.Arguments = "-2 -m pip install --upgrade pip";
  157 + procInfo.FileName = pathPython2;
  158 + procInfo.Arguments = "-m pip install --upgrade pip";
  159 + procInfo.UseShellExecute = false;
  160 + procInfo.RedirectStandardOutput = true;
  161 + procInfo.WindowStyle = ProcessWindowStyle.Hidden;
  162 +
  163 + //Process process = new Process();
  164 + //process.StartInfo = procInfo;
  165 + //process.Start();
  166 + //process.WaitForExit();
  167 + using(Process process = Process.Start(procInfo)){
  168 + using(StreamReader reader = process.StandardOutput){
  169 + string result = reader.ReadToEnd();
  170 + Console.Write(result);
  171 + }
  172 + process.WaitForExit();
  173 + }
  174 + Console.WriteLine("Pip atualizado.");
  175 + Console.WriteLine("Instalando os módulos. Isso pode levar alguns minutos. Por favor, aguarde.");
  176 + //INSTALAÇÃO DOS MÓDULOS
  177 + if(force){
  178 + //instalação forçada
  179 + //procInfo.Arguments = "-2 "+Directory.GetCurrentDirectory()+@"\checkwheels.py --force";
  180 + //procInfo.Arguments = "-m "+Directory.GetCurrentDirectory()+@"\checkwheels.py --force";
  181 + procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\checkwheels.py"+"\""+" --force";
  182 + }else{
  183 + //procInfo.Arguments = "-2 "+Directory.GetCurrentDirectory()+@"\checkwheels.py";
  184 + //procInfo.Arguments = "-m "+Directory.GetCurrentDirectory()+@"\checkwheels.py";
  185 + procInfo.Arguments = "\""+Directory.GetCurrentDirectory()+@"\checkwheels.py"+"\"";
  186 + }
  187 + //Console.WriteLine("VERIFICAÇÃO DA LINHA insWhls2: "+procInfo.Arguments);
  188 + //Console.ReadKey();
  189 + //process = new Process();
  190 + //process.StartInfo = procInfo;
  191 + //process.Start();
  192 + //process.WaitForExit();
  193 + using(Process process = Process.Start(procInfo)){
  194 + using(StreamReader reader = process.StandardOutput){
  195 + string result = reader.ReadToEnd();
  196 + Console.Write(result);
  197 + }
  198 + process.WaitForExit();
  199 + }
  200 + }
  201 +
  202 +
  203 + //SE FOR USAR BOTAR PYTHONPATH2 ENTRE ASPAS!!!!!!!!!!
  204 + /*public static bool ChecarVersaoPython(){
  205 + string driveAtual = @"%HOMEPATH%\..\..";
  206 + string pathPython2 = driveAtual+@"Python27\python.exe";
  207 +
  208 + //string comandoIns = "/C py -2 --version";
  209 + string comandoIns = @"/C "+"\""pathPython2+"\""+" --version";
  210 + //Process e Process Information
  211 + ProcessStartInfo insProcInfo = new ProcessStartInfo();
  212 + Process insProc = new Process();
  213 +
  214 + insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
  215 + insProcInfo.FileName = "cmd.exe";
  216 + insProcInfo.Arguments = comandoIns;
  217 + insProcInfo.UseShellExecute = false;
  218 + insProcInfo.CreateNoWindow = true;
  219 + insProcInfo.RedirectStandardError = true;
  220 + //insProcInfo.Verb = "runas"; //ADM
  221 +
  222 + insProc.StartInfo = insProcInfo;
  223 + insProc.Start();
  224 + string output = insProc.StandardError.ReadToEnd();
  225 + insProc.WaitForExit();
  226 + if(output == null || output == ""){
  227 + return false;
  228 + }
  229 + output = output.Remove(output.Length-2);
  230 + string version = output.Replace("Python ", "");
  231 + string majorMinorVersion = version.Remove(3);
  232 + if(majorMinorVersion.Equals("2.7")){
  233 + string patchVersion = version.Replace("2.7.","");
  234 + int x = -1;
  235 + int.TryParse(patchVersion, out x);
  236 + if(x >= 9){
  237 + return true;
  238 + }
  239 + }
  240 + return false;
  241 + }*/
  242 +
46 243 public static void Install(string pathInstaller64, string pathInstaller86){
47 244 string pathInstaller;
48 245 if(Environment.Is64BitOperatingSystem){
... ... @@ -53,12 +250,13 @@ namespace VLIBRAS_II
53 250 if(pathInstaller == ""){
54 251 return;
55 252 }
56   - string comandoIns = "/C" + pathInstaller;
  253 + //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
  254 + string comandoIns = @"msiexec /i "+"\""+pathInstaller+"\""+@" /quiet /qn /norestart";
57 255 //Process e Process Information
58   - System.Diagnostics.ProcessStartInfo insProcInfo = new System.Diagnostics.ProcessStartInfo();
59   - insProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
60   - System.Diagnostics.Process insProc = new System.Diagnostics.Process();
  256 + ProcessStartInfo insProcInfo = new ProcessStartInfo();
  257 + Process insProc = new Process();
61 258  
  259 + insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
62 260 insProcInfo.FileName = "cmd.exe";
63 261 insProcInfo.Arguments = comandoIns;
64 262 //insProcInfo.Verb = "runas"; //ADM
... ... @@ -68,7 +266,7 @@ namespace VLIBRAS_II
68 266 //insProc.WaitForExit();
69 267 }
70 268  
71   - public static void InstallAndWait(string pathInstaller64, string pathInstaller86){
  269 + public static void Install(string pathInstaller64, string pathInstaller86, string args){
72 270 string pathInstaller;
73 271 if(Environment.Is64BitOperatingSystem){
74 272 pathInstaller = pathInstaller64;
... ... @@ -78,18 +276,72 @@ namespace VLIBRAS_II
78 276 if(pathInstaller == ""){
79 277 return;
80 278 }
81   - string comandoIns = "/C" + pathInstaller;
  279 + //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
  280 + string comandoIns = @"msiexec /i "+"\""+pathInstaller+"\" "+args;
82 281 //Process e Process Information
83   - System.Diagnostics.ProcessStartInfo insProcInfo = new System.Diagnostics.ProcessStartInfo();
84   - insProcInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
85   - System.Diagnostics.Process insProc = new System.Diagnostics.Process();
  282 + ProcessStartInfo insProcInfo = new ProcessStartInfo();
  283 + Process insProc = new Process();
86 284  
  285 + insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
87 286 insProcInfo.FileName = "cmd.exe";
88 287 insProcInfo.Arguments = comandoIns;
89 288 //insProcInfo.Verb = "runas"; //ADM
90 289  
91 290 insProc.StartInfo = insProcInfo;
92 291 insProc.Start();
  292 + //insProc.WaitForExit();
  293 + }
  294 +
  295 + public static void InstallAndWait(string pathInstaller64, string pathInstaller86){
  296 + string pathInstaller;
  297 + if(Environment.Is64BitOperatingSystem){
  298 + pathInstaller = pathInstaller64;
  299 + }else{
  300 + pathInstaller = pathInstaller86;
  301 + }
  302 + if(pathInstaller == ""){
  303 + return;
  304 + }
  305 + //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
  306 + string comandoIns = @"/i "+"\""+pathInstaller+"\"";
  307 + //Process e Process Information
  308 + ProcessStartInfo insProcInfo = new ProcessStartInfo();
  309 + //insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
  310 + Process insProc = new Process();
  311 +
  312 + insProcInfo.FileName = "msiexec";
  313 + insProcInfo.Arguments = comandoIns;
  314 + //insProcInfo.Verb = "runas"; //ADM
  315 + //Console.WriteLine("VERIFICAÇÃO DE LINHA insWait: "+ insProcInfo.Arguments);
  316 + //Console.ReadKey();
  317 + insProc.StartInfo = insProcInfo;
  318 + insProc.Start();
  319 + insProc.WaitForExit();
  320 + }
  321 + //qn - instalação sem interface, passive instalação passiva
  322 + public static void InstallAndWait(string pathInstaller64, string pathInstaller86, string args){
  323 + string pathInstaller;
  324 + if(Environment.Is64BitOperatingSystem){
  325 + pathInstaller = pathInstaller64;
  326 + }else{
  327 + pathInstaller = pathInstaller86;
  328 + }
  329 + if(pathInstaller == ""){
  330 + return;
  331 + }
  332 + //string comandoIns = "/C" + pathInstaller + " -s -v -qn";
  333 + string comandoIns = @"/i "+"\""+pathInstaller+"\" "+args;
  334 + //Process e Process Information
  335 + ProcessStartInfo insProcInfo = new ProcessStartInfo();
  336 + //insProcInfo.WindowStyle = ProcessWindowStyle.Hidden;
  337 + Process insProc = new Process();
  338 +
  339 + insProcInfo.FileName = "msiexec";
  340 + insProcInfo.Arguments = comandoIns;
  341 + //insProcInfo.Verb = "runas"; //ADM
  342 +
  343 + insProc.StartInfo = insProcInfo;
  344 + insProc.Start();
93 345 insProc.WaitForExit();
94 346 }
95 347  
... ...