Commit 95e4b2e649cc7ccbd3293621c3f2f024259ac760

Authored by ezequiel
1 parent 78850984
Exists in master

Adciona vlibras update e faz modificações

Makefile
1 1 ############################## MAKEFILE VLIBRAS ############################
2 2 # #
3 3 # Bruno Santos #
4   -# brunosantos@lavid.ufpb.br #
  4 +# brunosantos@lavid.ufpb.br #
  5 +# Ezequiel Silva #
  6 +# ezequielsilva@lavid.ufpb.br #
5 7 # #
6 8 ############################################################################
7 9  
8 10 # Includes
9   -CFLAGS = -I C:\Python27\include -I include
  11 +CFLAGS = -I C:\Python27\include -I include -I "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include"
10 12  
11 13 # Link com as libs utilizadas
12 14 LFLAGS = -link C:\Python27\libs\python27.lib
... ... @@ -17,11 +19,14 @@ CC = cl
17 19 # Nome do arquivo de saída
18 20 OUT = testLibras
19 21  
  22 +
  23 +
  24 +
20 25 # Arquivos de implementação
21   -FILES = src\pyTradutor.cpp src\pyClip.cpp
  26 +FILES = src\pyTradutor.cpp src\pyClip.cpp src\util.cpp
22 27  
23 28 #Headers
24   -INCLUDES = include\pyTradutor.h include\pyClip.h
  29 +INCLUDES = include\pyTradutor.h include\pyClip.h include\util.h
25 30  
26 31 CLEAN_OBJ = del -q *.obj
27 32  
... ... @@ -29,13 +34,13 @@ HOME = %homepath%
29 34  
30 35 #Gera executável testLibras
31 36 all: $(FILES) $(INCLUDES) src\testLibras.cpp
32   - $(CC) -Fe$(OUT) -EHsc src\testLibras.cpp $(FILES) $(CFLAGS) $(LFLAGS)
  37 + $(CC) -Fe$(OUT) -clr src\testLibras.cpp $(FILES) $(CFLAGS) $(LFLAGS)
33 38 $(CLEAN_OBJ)
34 39  
35 40 #Gera dll na arquitetura x86
36 41 plugin-x86: $(FILES) $(INCLUDES)
37 42 IF NOT EXIST plugin\Plugin-x86 mkdir plugin\Plugin-x86
38   - $(CC) -Feplugin\Plugin-x86\CorePlugin -EHsc -LD plugin\corePlugin.cpp $(FILES) -I plugin\corePlugin.h $(CFLAGS) $(LFLAGS)
  43 + $(CC) -Feplugin\Plugin-x86\CorePlugin -LD plugin\corePlugin.cpp $(FILES) -I plugin\corePlugin.h -clr $(CFLAGS) $(LFLAGS)
39 44 $(CLEAN_OBJ)
40 45  
41 46 #Gera dll na arquitetura x64
... ...
icon/icon_vlibras.ico
No preview for this file type
include/util.h 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +#using <System.dll>
  2 +#using <System.Xml.dll>
  3 +#using <System.IO.Compression.FileSystem.dll>
  4 +
  5 +#include <iostream>
  6 +#include <string>
  7 +#include <vector>
  8 +
  9 +
  10 +using namespace std;
  11 +using namespace System;
  12 +using namespace System::ComponentModel;
  13 +using namespace System::Net;
  14 +using namespace System::IO;
  15 +using namespace System::Xml;
  16 +using namespace System::Threading;
  17 +using namespace System::IO::Compression;
  18 +
  19 +
  20 +
  21 +
  22 +
  23 +
  24 +
  25 + public ref class Util {
  26 +
  27 + private:
  28 + static string clrStringTostring(String^ strIn);
  29 + static vector <string> localVersion(void);
  30 +
  31 + public:
  32 + static bool down;
  33 + static WebClient^ myWebClient;
  34 +
  35 + Util();
  36 +
  37 + bool downloading;
  38 + static bool saveNewXmlVersion(string playerVersion,string dictionaryVersion);
  39 + static string Download(DownloadProgressChangedEventHandler^ dpch ,string url, string fileName);
  40 + static bool checkNet(void);
  41 + static vector <string> checkVersion(bool atualize);
  42 + static bool extractZip(string zipFile, string outPath);
  43 + static bool backup(void);
  44 + static bool restore(void);
  45 +
  46 + };
  47 +
  48 +
  49 +
  50 +
  51 +
... ...
install/inno setup/user_install.iss
1 1 ;################### INSTALADOR VLIBRAS WINDOWS ######################
2 2 ;# Bruno Santos #
3   -;# brunosantos@lavid.ufpb.br #
  3 +;# brunosantos@lavid.ufpb.br #
  4 +;# Ezequiel Silva #
  5 +;# ezequielsilva@lavid.ufpb.br #
4 6 ;#####################################################################
5 7  
6 8 #define MyAppName "VLibras"
7 9 #define MyAppVersion "beta"
8 10 #define MyAppPublisher "LAViD"
9 11 #define MyAppURL "http://vlibrasplayer.lavid.ufpb.br"
10   -#define MyAppExeName "Playerx86.exe"
  12 +#define MyAppExeName "VlibrasPlayer.exe"
  13 +
  14 +
11 15  
12 16 [Setup]
13 17 AppId={{9AA2CD86-F136-47FA-9EFE-474057F0C45F}
... ... @@ -20,14 +24,16 @@ AppUpdatesURL={#MyAppURL}
20 24 DefaultDirName={sd}\vlibras-libs
21 25 DisableDirPage=yes
22 26 DefaultGroupName={#MyAppName}
  27 +OutputBaseFilename=vlibras_desktop_win_2.0.0
23 28 DisableProgramGroupPage=yes
24   -OutputDir="C:\Users\bruno\Desktop\output"
25   -OutputBaseFilename=VLibras Installer
26   -SetupIconFile="C:\Users\bruno\Desktop\user_install\icons\icon_vlibras.ico"
  29 +OutputDir="C:\Users\ezequiel\Desktop\vlibras_desktop_win_2.0.0"
  30 +SetupIconFile="C:\Users\ezequiel\Desktop\user_install\icons\icon_vlibras.ico"
27 31 Compression=lzma
28 32 SolidCompression=yes
29   -WizardImageFile = "C:\Users\bruno\Desktop\user_install\icons\avatar.bmp"
30   -WizardSmallImageFile = "C:\Users\bruno\Desktop\user_install\icons\small2.bmp"
  33 +WizardImageFile = "C:\Users\ezequiel\Desktop\user_install\icons\avatar.bmp"
  34 +WizardSmallImageFile = "C:\Users\ezequiel\Desktop\user_install\icons\player.bmp"
  35 +
  36 +
31 37  
32 38 [Languages]
33 39 Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
... ... @@ -37,7 +43,12 @@ Name: &quot;desktopicon&quot;; Description: &quot;{cm:CreateDesktopIcon}&quot;; GroupDescription: &quot;{
37 43 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; OnlyBelowVersion: 0,6.1
38 44  
39 45 [Files]
40   -Source: "C:\Users\bruno\Desktop\user_install\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
  46 +Source: "C:\Users\ezequiel\Desktop\vc_redist.x86.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall;
  47 +Source: "C:\Users\ezequiel\Desktop\dotNetFx40_Client_x86.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall;
  48 +Source: "C:\Users\ezequiel\Desktop\user_install\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
  49 +
  50 +
  51 +
41 52  
42 53 [Icons]
43 54 Name: "{group}\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; IconFilename: "{app}\icons\icon_vlibras.ico"
... ... @@ -47,5 +58,14 @@ Name: &quot;{commondesktop}\{#MyAppName}&quot;; Filename: &quot;{app}\Player\{#MyAppExeName}&quot;;
47 58 Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; Tasks: quicklaunchicon; IconFilename: "{app}\icons\icon_vlibras.ico"
48 59  
49 60 [Run]
50   -Filename: {sd}\vlibras-libs\required\user_install.bat; Flags: runhidden
  61 +Filename: {tmp}\dotNetFx40_Client_x86.exe; Flags: runhidden; Parameters: /q /norestart; StatusMsg: Instalando .NET Framework 4.5
  62 +Filename: {tmp}\vc_redist.x86.exe; Flags: runhidden; Parameters: /q /norestart; StatusMsg: Instalando Visual C++ ...
  63 +Filename: {sd}\vlibras-libs\required\user_install.bat; Flags: runhidden; StatusMsg: Instalando dependências...
  64 +Filename: {sd}\vlibras-libs\update\vlibras-up.exe; Parameters: silence; StatusMsg: Instalando atualização...
  65 +
  66 +
  67 +
  68 +
  69 +
  70 +
51 71  
... ...
install/inno setup/user_install2.iss 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +;################### INSTALADOR VLIBRAS WINDOWS ######################
  2 +;# Bruno Santos #
  3 +;# brunosantos@lavid.ufpb.br #
  4 +;#####################################################################
  5 +
  6 +#define MyAppName "VLibras"
  7 +#define MyAppVersion "beta"
  8 +#define MyAppPublisher "LAViD"
  9 +#define MyAppURL "http://vlibrasplayer.lavid.ufpb.br"
  10 +#define MyAppExeName "Playerx86.exe"
  11 +
  12 +[Setup]
  13 +AppId={{84B73167-EF7F-42BB-9CCD-E1A8E2C53659}
  14 +AppName={#MyAppName}
  15 +AppVersion={#MyAppVersion}
  16 +AppPublisher={#MyAppPublisher}
  17 +AppPublisherURL={#MyAppURL}
  18 +AppSupportURL={#MyAppURL}
  19 +AppUpdatesURL={#MyAppURL}
  20 +DefaultDirName={pf}\vlibras-libs
  21 +DisableDirPage=yes
  22 +DefaultGroupName={#MyAppName}
  23 +DisableProgramGroupPage=yes
  24 +OutputDir="C:\Users\ezequiel\Desktop\output"
  25 +OutputBaseFilename=VLibras Installer
  26 +SetupIconFile="C:\Users\ezequiel\vlibras-libs\icons\icon_vlibras.ico"
  27 +Compression=lzma
  28 +SolidCompression=yes
  29 +WizardImageFile = "C:\Users\ezequiel\vlibras-libs\icons\avatar.bmp"
  30 +WizardSmallImageFile = "C:\Users\ezequiel\vlibras-libs\icons\small2.bmp"
  31 +
  32 +[Languages]
  33 +Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
  34 +
  35 +[Tasks]
  36 +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
  37 +Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; OnlyBelowVersion: 0,6.1
  38 +
  39 +[Files]
  40 +Source: "C:\vlibras-libs\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
  41 +
  42 +[Icons]
  43 +Name: "{group}\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; IconFilename: "{app}\icons\icon_vlibras.ico"
  44 +Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
  45 +Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
  46 +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; Tasks: desktopicon; IconFilename: "{app}\icons\icon_vlibras.ico"
  47 +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; Tasks: quicklaunchicon; IconFilename: "{app}\icons\icon_vlibras.ico"
  48 +
  49 +[Run]
  50 +Filename: {app}\vlibras-libs\required\user_install.bat; Flags: runhidden
  51 +
... ...
plugin/corePlugin.cpp
... ... @@ -5,18 +5,27 @@
5 5 #define EXPORT_API __declspec(dllimport)
6 6 #endif
7 7  
  8 +
8 9 #include "corePlugin.h"
9 10  
  11 +
  12 +
10 13 extern "C"
11 14 {
  15 +
  16 +
  17 +
  18 +
  19 +
12 20 EXPORT_API int coreInitialize()
13 21 {
14 22 //Objeto usado para traduzir
15 23 tradutor = new PyTradutor();
  24 + check =0;
16 25  
17 26 //Objeto usado para copiar texto da área de transferência
18 27 clipboard.bdragOn();
19   -
  28 +
20 29 return 1;
21 30 }
22 31  
... ... @@ -24,11 +33,58 @@
24 33 {
25 34 //Copia área de transferência para input
26 35 char *input = clipboard.clip();
27   -
  36 +
28 37 //Retorna a tradução do texto para glosa
29 38 return tradutor->convertStringToGlosa(input);
30 39 }
31 40  
  41 +
  42 + EXPORT_API int coreUpdateInstall_player()
  43 + {
  44 + System::Diagnostics::Process::Start("C:\\vlibras-libs\\update\\vlibras-up.exe");
  45 + return 1;
  46 + }
  47 +
  48 +
  49 + EXPORT_API int coreUpdateInstall_dict()
  50 + {
  51 + System::Diagnostics::Process::Start("C:\\vlibras-libs\\update\\vlibras-up.exe");
  52 + return 1;
  53 + }
  54 +
  55 +
  56 +
  57 + EXPORT_API int coreUpdateCheck()
  58 + {
  59 +
  60 +
  61 + vector<string> updates = Util::checkVersion(false);
  62 + if(updates.size()>2)
  63 + {
  64 +
  65 + switch (updates.size())
  66 + {
  67 + case 3:
  68 + if(updates[0]=="playerVersion")
  69 + {
  70 + return 1;
  71 + }
  72 + else if(updates[0]=="dictionaryVersion")
  73 + {
  74 + return 2;
  75 + }
  76 + break;
  77 + case 6:
  78 + return 1;
  79 +
  80 + break;
  81 + }
  82 +
  83 + } else if(updates.size()==1)
  84 + return -1;
  85 + return 0;
  86 + }
  87 +
32 88 EXPORT_API int coreFinalize()
33 89 {
34 90 clipboard.bdragOff();
... ...
plugin/corePlugin.h
... ... @@ -16,10 +16,11 @@ VLibras-Core
16 16 #ifndef _COREPLUGIN_H
17 17 #define _COREPLUGIN_H
18 18  
19   -#include <iostream>
  19 +
20 20 #include "pyClip.h"
21 21 #include "pyTradutor.h"
22 22 #include <string.h>
  23 +#include "Util.h"
23 24  
24 25 using namespace std;
25 26  
... ... @@ -27,18 +28,28 @@ extern &quot;C&quot;
27 28 {
28 29 //Usado para traduzir português para glosa
29 30 PyTradutor *tradutor;
30   -
  31 + int check;
31 32 //Usado para copiar texto da área de transferência
32 33 PyClip clipboard;
  34 +
33 35  
34 36 //Inicializa Objetos
35 37 EXPORT_API int coreInitize(void);
36 38  
37 39 //Faz tradução de Português para glosa
38 40 EXPORT_API char* coreExecute(void);
39   -
  41 +
  42 + //faz atualização player
  43 + EXPORT_API int coreUpdateInstall_player(void);
  44 +
  45 + //faz atualização dicionário
  46 + EXPORT_API int coreUpdateInstall_dict(void);
  47 + //check atualização
  48 + EXPORT_API int coreUpdateCheck(void);
40 49 //Libera Objetos utilizados
41 50 EXPORT_API int coreFinalize(void);
  51 +
  52 +
42 53 }
43 54  
44 55 #endif
45 56 \ No newline at end of file
... ...
plugin/testPlugin.cpp
... ... @@ -12,6 +12,8 @@ metodo2 execute;
12 12  
13 13 typedef int (WINAPI*metodo3)();
14 14 metodo3 finalize;
  15 +typedef int (WINAPI*metodo4)();
  16 +metodo4 update;
15 17  
16 18 int main(int argc, char *argv[])
17 19 {
... ... @@ -27,19 +29,30 @@ int main(int argc, char *argv[])
27 29 initialize=(metodo1)GetProcAddress((HMODULE)hDLL, "coreInitialize");
28 30 execute=(metodo2)GetProcAddress((HMODULE)hDLL, "coreExecute");
29 31 finalize=(metodo3)GetProcAddress((HMODULE)hDLL, "coreFinalize");
  32 + update=(metodo4)GetProcAddress((HMODULE)hDLL, "coreUpdate");
30 33  
31 34 //Executa coreInitialize
32 35 int init = initialize();
33 36 cout <<"return initialize: " << init <<endl;
  37 +
  38 + int in = update();
  39 + cout <<"return update: " << in <<endl;
  40 +
  41 + //in = update();
  42 + //cout <<"return update2: " << in <<endl;
  43 +
  44 + //in=0;
  45 + //in = update();
  46 + //cout <<"return update3: " << in <<endl;
34 47  
35 48 //Executa coreExecute
36   - char* exec = execute();
37   - cout << "return execute: " << exec <<endl;
38   -
  49 + //char* exec = execute();
  50 + //cout << "return execute: " << exec <<endl;
  51 +while(1);
39 52 //Executa coreFinalize
40 53 int final = finalize();
41 54 cout << "return finalize: " << final <<endl;
42   -
  55 +
43 56 //Libera dll
44 57 FreeLibrary((HMODULE)hDLL);
45 58  
... ...
src/util.cpp 0 → 100644
... ... @@ -0,0 +1,287 @@
  1 +#include <windows.h>
  2 +#include "util.h"
  3 +
  4 +
  5 +
  6 +Util::Util(){
  7 + //downloading = true;
  8 + //downloading = down;
  9 +}
  10 +
  11 +string Util::clrStringTostring(String^ strIn)
  12 +{
  13 +
  14 + char cStr[256];
  15 +
  16 +
  17 + sprintf(cStr, "%s", strIn);
  18 + string stlString(cStr);
  19 +
  20 + return stlString;
  21 +}
  22 +
  23 + void DownloadProgressCallback(Object^ sender,
  24 + DownloadProgressChangedEventArgs^ e)
  25 + {
  26 + // Displays the operation identifier, and the transfer progress.
  27 + Console::WriteLine("{0} downloaded {1} of {2} bytes. {3} % complete...",
  28 + (String ^)e->UserState,
  29 + e->BytesReceived,
  30 + e->TotalBytesToReceive,
  31 + e->ProgressPercentage);
  32 + }
  33 +
  34 + void DownloadFileCallBack2(Object^ sender, AsyncCompletedEventArgs^ args)
  35 + {
  36 + cout<<"Terminou de baixar"<< endl;
  37 +
  38 + }
  39 +
  40 +
  41 +bool Util::checkNet()
  42 +{
  43 +
  44 + try
  45 + {
  46 +
  47 + WebRequest^ request = WebRequest::Create( "http://vlibras.lavid.ufpb.br" );
  48 +
  49 + // If required by the server, set the credentials.
  50 + //request->Credentials = CredentialCache::DefaultCredentials;
  51 +
  52 + // Get the response.
  53 + HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
  54 +
  55 + if (response->StatusDescription == "OK"){
  56 +
  57 + return true;
  58 + }
  59 + return false;
  60 + response->Close();
  61 + }
  62 + catch ( WebException^ e )
  63 + {
  64 + return false;
  65 + }
  66 +
  67 +}
  68 +
  69 +
  70 +vector<string> Util::checkVersion(bool atualize)
  71 +{
  72 + XmlDocument^ xmlDoc;
  73 + XmlNodeList^ files;
  74 + XmlDocument^ xmlDocLocal;
  75 + XmlNodeList^ filesLocal;
  76 + vector<string> updates;
  77 + vector<string> localversion = localVersion();
  78 + try
  79 + {
  80 + xmlDoc = (gcnew XmlDocument());
  81 + xmlDocLocal = (gcnew XmlDocument());
  82 +
  83 +
  84 + string url = "http://vlibras.lavid.ufpb.br/api/dicionario/"+localversion[3]+"?type=windows";
  85 + WebRequest^ request = WebRequest::Create( gcnew String(url.c_str()));
  86 + // If required by the server, set the credentials.
  87 + request->Credentials = CredentialCache::DefaultCredentials;
  88 + // Get the response.
  89 + HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
  90 + if (!(response->StatusDescription == "OK"))
  91 + goto erro;
  92 + // Get the stream containing content returned by the server.
  93 + Stream^ dataStream = response->GetResponseStream();
  94 + // Open the stream using a StreamReader for easy access.
  95 + StreamReader^ reader = gcnew StreamReader( dataStream );
  96 + // Read the content.
  97 + String^ responseFromServer = reader->ReadToEnd();
  98 + xmlDoc->LoadXml(responseFromServer);
  99 + files = xmlDoc->GetElementsByTagName("version");
  100 +
  101 + long numitems = files->Count;
  102 +
  103 +
  104 +
  105 + //for (int i=0;i<numitems;i++)
  106 + if(numitems>0)
  107 + {
  108 + String^ playerVersion = files[0]["playerVersion"]->InnerText;
  109 + String^ dictionaryVersion = files[0]["dictionaryVersion"]->InnerText;
  110 +
  111 + if(String::Compare( playerVersion, gcnew String(localversion[1].c_str())))
  112 + {
  113 + updates.push_back("playerVersion");
  114 + updates.push_back(clrStringTostring(playerVersion));
  115 + updates.push_back(clrStringTostring(files[0]["playerUrl"]->InnerText));
  116 + }
  117 + if(String::Compare(dictionaryVersion,gcnew String(localversion[3].c_str())))
  118 + {
  119 + updates.push_back("dictionaryVersion");
  120 + updates.push_back(clrStringTostring(dictionaryVersion));
  121 + updates.push_back(clrStringTostring(files[0]["dictionaryUrl"]->InnerText));
  122 + }
  123 +
  124 + //if(atualize)
  125 + //saveNewXmlVersion(playerVersion,dictionaryVersion);
  126 +
  127 + }
  128 +
  129 + erro:
  130 + // Cleanup the streams and the response.
  131 + reader->Close();
  132 + dataStream->Close();
  133 + }catch(Exception^ e)
  134 + {
  135 + updates.push_back("faill");
  136 + return updates;
  137 + }
  138 +
  139 + return updates;
  140 +}
  141 +
  142 +
  143 +vector<string> Util::localVersion()
  144 +{
  145 + XmlDocument^ xmlDocLocal;
  146 + XmlNodeList^ filesLocal;
  147 + vector<string> updates;
  148 + try
  149 + {
  150 + xmlDocLocal = (gcnew XmlDocument());
  151 + //xml version local
  152 + StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
  153 +
  154 + String^ responseLocal = readerLocal->ReadToEnd();
  155 +
  156 + xmlDocLocal->LoadXml(responseLocal);
  157 +
  158 + filesLocal = xmlDocLocal->GetElementsByTagName("version");
  159 +
  160 + updates.push_back("playerVersion");
  161 + String^ playerVersion = filesLocal[0]["playerVersion"]->InnerText;
  162 + updates.push_back(clrStringTostring(playerVersion));
  163 + updates.push_back("dictionaryVersion");
  164 + String^ dictionaryVersion = filesLocal[0]["dictionaryVersion"]->InnerText;
  165 + updates.push_back(clrStringTostring(dictionaryVersion));
  166 +
  167 + // Cleanup the streams and the response.
  168 + readerLocal->Close();
  169 + }catch(Exception^ e)
  170 + {
  171 + return updates;
  172 + }
  173 +
  174 + return updates;
  175 +}
  176 +
  177 +
  178 +string Util::Download(DownloadProgressChangedEventHandler^ dpch ,string url, string fileName)
  179 +{
  180 + try
  181 + {
  182 + myWebClient = gcnew WebClient();
  183 + Uri^ uri = gcnew Uri(gcnew String(url.c_str()));
  184 + myWebClient->DownloadProgressChanged += dpch;
  185 + myWebClient->DownloadFileCompleted += gcnew AsyncCompletedEventHandler( DownloadFileCallBack2 );
  186 + String^ outPath = gcnew String(("c:\\vlibras-libs\\update\\"+fileName).c_str());
  187 + myWebClient->DownloadFileAsync(uri, outPath);
  188 + }catch (Exception^ e)
  189 + {
  190 + return "FALHA";
  191 + }
  192 +
  193 + return "OK";
  194 + }
  195 +
  196 +
  197 +
  198 + bool Util::saveNewXmlVersion(string playerVersion,string dictionaryVersion)
  199 + {
  200 +
  201 + XmlDocument^ xmlDocLocal;
  202 + XmlNodeList^ filesLocal;
  203 + vector<string> updates;
  204 + try
  205 + {
  206 + xmlDocLocal = (gcnew XmlDocument());
  207 + //xml version local
  208 + StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
  209 +
  210 + String^ responseLocal = readerLocal->ReadToEnd();
  211 +
  212 + xmlDocLocal->LoadXml(responseLocal);
  213 +
  214 + filesLocal = xmlDocLocal->GetElementsByTagName("version");
  215 +
  216 + if(!playerVersion.empty())
  217 + filesLocal[0]["playerVersion"]->InnerText = gcnew String(playerVersion.c_str());
  218 +
  219 + if(!dictionaryVersion.empty())
  220 + filesLocal[0]["dictionaryVersion"]->InnerText = gcnew String(dictionaryVersion.c_str());
  221 +
  222 +
  223 + // Cleanup the streams and the response.
  224 + readerLocal->Close();
  225 +
  226 + xmlDocLocal->Save("c:\\vlibras-libs\\update\\updateVersion.xml");
  227 + }catch(Exception^ e)
  228 + {
  229 +
  230 + }
  231 +
  232 + return true;
  233 + }
  234 +
  235 +
  236 + bool Util::extractZip(string zipFile, string outPath)
  237 + {
  238 + try
  239 + {
  240 + String^ zipPath = gcnew String(zipFile.c_str());
  241 + String^ extractPath = gcnew String(outPath.c_str());
  242 + ZipFile::ExtractToDirectory(zipPath, extractPath);
  243 +
  244 + }catch(Exception^ e)
  245 + {
  246 + return false;
  247 + }
  248 +
  249 + return true;
  250 + }
  251 +
  252 +bool Util::backup()
  253 +{
  254 + CHAR nome_atual[] = "c:\\vlibras-libs";
  255 + // novo nome do diretório
  256 + CHAR nome_novo[] = "c:\\vlibras-libs-BK";
  257 +
  258 + // renomear o diretório
  259 + if(MoveFile(nome_atual, nome_novo)){
  260 +
  261 + }
  262 + else{
  263 + return false;
  264 + }
  265 + return true;
  266 +}
  267 +bool Util::restore()
  268 +{
  269 + CHAR nome_atual[] = "c:\\vlibras-libs-BK";
  270 + // novo nome do diretório
  271 + CHAR nome_novo[] = "c:\\vlibras-libs";
  272 +
  273 + // renomear o diretório
  274 + if(MoveFile(nome_atual, nome_novo)){
  275 + return true;
  276 + }
  277 + else{
  278 + return false;
  279 + //GetLastError() << endl;
  280 + }
  281 + return true;
  282 +}
  283 +
  284 +
  285 +
  286 +
  287 +
0 288 \ No newline at end of file
... ...
translate.log 0 → 100644
update/Makefile 0 → 100644
... ... @@ -0,0 +1,45 @@
  1 +############################## MAKEFILE VLIBRAS ############################
  2 +# #
  3 +# Bruno Santos #
  4 +# brunosantos@lavid.ufpb.br #
  5 +# Ezequiel Silva #
  6 +# ezequielsilva@lavid.ufpb.br # #
  7 +# #
  8 +############################################################################
  9 +
  10 +# Includes
  11 +CFLAGS = -I include
  12 +
  13 +# Link com as libs utilizadas
  14 +#LFLAGS = -link C:\Python27\libs\python27.lib
  15 +
  16 +# Compilador Nativo
  17 +CC = cl
  18 +
  19 +# Nome do arquivo de saída
  20 +OUT = vlibras-up
  21 +
  22 +# Arquivos de implementação
  23 +FILES = src\util.cpp src\janelaAtualizacao.cpp
  24 +
  25 +#Headers
  26 +INCLUDES = include\util.h include\janelaAtualizacao.h
  27 +
  28 +CLEAN_OBJ = del -q *.obj
  29 +
  30 +HOME = %homepath%
  31 +
  32 +#Gera executável testLibras
  33 +all: $(FILES) $(INCLUDES)
  34 + $(CC) -Fe$(OUT) -clr vlibrasUpdate.cpp $(FILES) $(CFLAGS)
  35 + $(CLEAN_OBJ)
  36 +
  37 +
  38 +
  39 +
  40 +#Limpa arquivos objetos e executáveis criados
  41 +clean:
  42 + del -q *.exe *.obj
  43 + rm -rf doc
  44 +
  45 +
... ...
update/include/janelaAtualizacao.h 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +#include <string>
  2 +
  3 +#using <System.dll>
  4 +#using <System.Windows.Forms.dll>
  5 +#using <System.Drawing.dll>
  6 +
  7 +
  8 +using namespace System::Windows::Forms;
  9 +using namespace System;
  10 +using namespace System::Drawing;
  11 +using namespace System::ComponentModel;
  12 +using namespace std;
  13 +
  14 +public ref class JanelaAtualizacao : public Form
  15 +{
  16 + private:
  17 +
  18 + bool downloading;
  19 + RichTextBox^ richTextBox1;
  20 + Label^ lbInformacao;
  21 + Label^ topo;
  22 + int vez=0;
  23 + Bitmap^ animatedImage;
  24 + String^ informacao;
  25 + void btOKevent(Object^ sender, EventArgs^ e);
  26 + void XFormClosing(Object^ sender, FormClosingEventArgs^ e);
  27 +
  28 + public:
  29 + static ProgressBar^ progressBar1;
  30 + static Label^ lbInfDownload;
  31 + Button^ btOK;
  32 + JanelaAtualizacao();
  33 +
  34 + void initializeComponent();
  35 + void setInfoWhite(String^ info);
  36 + void setInfoGreen(String^ info);
  37 + void setInfoRed(String^ info);
  38 + void start();
  39 + void EnableButton();
  40 +
  41 +
  42 +
  43 +};
  44 +
... ...
update/include/util.h 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +#using <System.dll>
  2 +#using <System.Xml.dll>
  3 +#using <System.IO.Compression.FileSystem.dll>
  4 +
  5 +#include <iostream>
  6 +#include <string>
  7 +#include <vector>
  8 +
  9 +
  10 +using namespace std;
  11 +using namespace System;
  12 +using namespace System::ComponentModel;
  13 +using namespace System::Net;
  14 +using namespace System::IO;
  15 +using namespace System::Xml;
  16 +using namespace System::Threading;
  17 +using namespace System::IO::Compression;
  18 +
  19 +
  20 +
  21 +
  22 +
  23 +
  24 +
  25 + public ref class Util {
  26 +
  27 + private:
  28 + static string clrStringTostring(String^ strIn);
  29 + static vector <string> localVersion(void);
  30 +
  31 + public:
  32 + static bool down;
  33 + static WebClient^ myWebClient;
  34 +
  35 + Util();
  36 +
  37 + bool downloading;
  38 + static bool saveNewXmlVersion(string playerVersion,string dictionaryVersion);
  39 + static string Download(DownloadProgressChangedEventHandler^ dpch ,string url, string fileName);
  40 + static bool checkNet(void);
  41 + static vector <string> checkVersion(bool atualize);
  42 + static bool extractZip(string zipFile, string outPath);
  43 + static bool backup(void);
  44 + static bool restore(void);
  45 +
  46 + };
  47 +
  48 +
  49 +
  50 +
  51 +
... ...
update/src/janelaAtualizacao.cpp 0 → 100644
... ... @@ -0,0 +1,151 @@
  1 +#include "janelaAtualizacao.h"
  2 +#include "Util.h"
  3 +
  4 +
  5 +JanelaAtualizacao::JanelaAtualizacao()
  6 +{
  7 + initializeComponent();
  8 +}
  9 +
  10 +void JanelaAtualizacao::initializeComponent()
  11 +{
  12 +
  13 + this->downloading = true;
  14 + this->Size = System::Drawing::Size(500, 250);
  15 + this->progressBar1 = (gcnew ProgressBar());
  16 + this->btOK = (gcnew Button());
  17 + this->lbInfDownload = (gcnew Label());
  18 + this->lbInformacao = (gcnew Label());
  19 + this->Name = "Vlibras-Desktop-Update";
  20 + this->Text = "Atualização - Vlibras-Desktop";
  21 + this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
  22 + this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
  23 + //this->ControlBox = false;
  24 + this->MaximizeBox = false;
  25 + this->BackColor = Drawing::Color::White;
  26 + //this->MinimizeBox = false;
  27 + //this->BackgroundImage = Image::FromFile("c:\\vlibras-libs\\image\\background.png");
  28 + //this->Opacity = 0.97;
  29 + Drawing::Icon^ IC = gcnew Drawing::Icon("c:\\vlibras-libs\\icons\\icon_vlibras.ico");
  30 + this->Icon = IC;
  31 + this->SuspendLayout();
  32 + //this->FormBorderStyle = ::FormBorderStyle::None;
  33 + this->FormClosing += gcnew FormClosingEventHandler(this, &JanelaAtualizacao::XFormClosing);
  34 +
  35 + // progressBar1
  36 + //
  37 + this->progressBar1->Location = Point(7, 85);
  38 + this->progressBar1->Name = "progressBar1";
  39 + this->progressBar1->Size = System::Drawing::Size(470, 30);
  40 + //this->progressBar1->TabIndex = 0;
  41 + this->progressBar1->Minimum = 0;
  42 + this->progressBar1->Maximum = 100;
  43 + //this->progressBar1->Style = ProgressBarStyle::Marquee;
  44 + //progressBar1->Visible = false;
  45 + //progressBar1->Enabled = false;
  46 + //
  47 +
  48 + //
  49 + this->lbInformacao->Location = Point(7, 15);
  50 + this->lbInformacao->Name = "label";
  51 + this->lbInformacao->Size = System::Drawing::Size(470, 23);
  52 + this->lbInformacao->BackColor = Drawing::Color::Transparent;
  53 + //this->lbInformacao->ForeColor=Drawing::Color::White;
  54 +
  55 + //
  56 + this->lbInfDownload->Location = Point(7, 120);
  57 + this->lbInfDownload->Name = "labelDownload";
  58 + this->lbInfDownload->Size = System::Drawing::Size(470, 23);
  59 + this->lbInfDownload->BackColor = Drawing::Color::Transparent;
  60 + //this->lbInfDownload->Font = gcnew System::Drawing::Font("Arial", 12);
  61 + //this->lbInfDownload->ForeColor=Drawing::Color::White;
  62 +
  63 +
  64 + // btOK
  65 + //
  66 +
  67 + this->btOK->Location = Point(390, this->Bottom-80);
  68 + this->btOK->Name = "btOK";
  69 + this->btOK->Size = System::Drawing::Size(80, 30);
  70 + this->btOK->TabIndex = 1;
  71 + this->btOK->Text = "OK";
  72 + this->btOK->UseVisualStyleBackColor = true;
  73 + this->btOK->Click += gcnew EventHandler(this, &JanelaAtualizacao::btOKevent);
  74 + //this->btOK
  75 + //
  76 +
  77 + //
  78 + //this->Controls->Add(this->topo);
  79 + this->Controls->Add(this->lbInformacao);
  80 + this->Controls->Add(this->lbInfDownload);
  81 + this->Controls->Add(this->progressBar1);
  82 + this->Controls->Add(this->btOK);
  83 + this->btOK->Enabled = false;
  84 + //this->Controls->Add(this->richTextBox1);
  85 +
  86 + //this->ResumeLayout(false);
  87 +
  88 +}
  89 +
  90 +void JanelaAtualizacao::setInfoWhite(String^ info)
  91 +{
  92 + this->lbInformacao->Location = Point(7, 20);
  93 + this->lbInformacao->Font = gcnew System::Drawing::Font("Serif", 12);
  94 + this->lbInformacao->Text = info;
  95 + //this->lbInformacao->ForeColor=Drawing::Color::White;
  96 + this->lbInformacao->TextAlign = ContentAlignment::MiddleCenter;
  97 +
  98 +}
  99 +
  100 +void JanelaAtualizacao::setInfoGreen(String^ info)
  101 +{
  102 + this->lbInformacao->Location = Point(7, 75);
  103 + this->lbInformacao->Font = gcnew System::Drawing::Font("Arial", 15);
  104 + this->lbInformacao->Text = info;
  105 + this->lbInformacao->ForeColor=Drawing::Color::Green;
  106 + this->lbInformacao->TextAlign = ContentAlignment::MiddleCenter;
  107 +
  108 +}
  109 +void JanelaAtualizacao::setInfoRed(String^ info)
  110 +{
  111 + this->lbInformacao->Location = Point(7, 75);
  112 + this->lbInformacao->Font = gcnew System::Drawing::Font("Arial", 15);
  113 + this->lbInformacao->Text = info;
  114 + this->lbInformacao->ForeColor=Drawing::Color::Red;
  115 + this->lbInformacao->TextAlign = ContentAlignment::MiddleCenter;
  116 +
  117 +}
  118 +
  119 +
  120 +
  121 +
  122 +void JanelaAtualizacao::btOKevent(Object^ sender, EventArgs^ e)
  123 +{
  124 +
  125 + this->Close();
  126 +
  127 +}
  128 +
  129 +
  130 +
  131 +void JanelaAtualizacao::start()
  132 +{
  133 +
  134 +}
  135 +
  136 +
  137 +void JanelaAtualizacao::EnableButton()
  138 +{
  139 + btOK->Enabled = true;
  140 +}
  141 +
  142 +
  143 +void JanelaAtualizacao::XFormClosing(Object^ sender, FormClosingEventArgs^ e)
  144 +{
  145 +
  146 +}
  147 +
  148 +
  149 +
  150 +
  151 +
0 152 \ No newline at end of file
... ...
update/src/util.cpp 0 → 100644
... ... @@ -0,0 +1,287 @@
  1 +#include <windows.h>
  2 +#include "util.h"
  3 +
  4 +
  5 +
  6 +Util::Util(){
  7 + //downloading = true;
  8 + //downloading = down;
  9 +}
  10 +
  11 +string Util::clrStringTostring(String^ strIn)
  12 +{
  13 +
  14 + char cStr[256];
  15 +
  16 +
  17 + sprintf(cStr, "%s", strIn);
  18 + string stlString(cStr);
  19 +
  20 + return stlString;
  21 +}
  22 +
  23 + void DownloadProgressCallback(Object^ sender,
  24 + DownloadProgressChangedEventArgs^ e)
  25 + {
  26 + // Displays the operation identifier, and the transfer progress.
  27 + Console::WriteLine("{0} downloaded {1} of {2} bytes. {3} % complete...",
  28 + (String ^)e->UserState,
  29 + e->BytesReceived,
  30 + e->TotalBytesToReceive,
  31 + e->ProgressPercentage);
  32 + }
  33 +
  34 + void DownloadFileCallBack2(Object^ sender, AsyncCompletedEventArgs^ args)
  35 + {
  36 + cout<<"Terminou de baixar"<< endl;
  37 +
  38 + }
  39 +
  40 +
  41 +bool Util::checkNet()
  42 +{
  43 +
  44 + try
  45 + {
  46 +
  47 + WebRequest^ request = WebRequest::Create( "http://vlibras.lavid.ufpb.br" );
  48 +
  49 + // If required by the server, set the credentials.
  50 + //request->Credentials = CredentialCache::DefaultCredentials;
  51 +
  52 + // Get the response.
  53 + HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
  54 +
  55 + if (response->StatusDescription == "OK"){
  56 +
  57 + return true;
  58 + }
  59 + return false;
  60 + response->Close();
  61 + }
  62 + catch ( WebException^ e )
  63 + {
  64 + return false;
  65 + }
  66 +
  67 +}
  68 +
  69 +
  70 +vector<string> Util::checkVersion(bool atualize)
  71 +{
  72 + XmlDocument^ xmlDoc;
  73 + XmlNodeList^ files;
  74 + XmlDocument^ xmlDocLocal;
  75 + XmlNodeList^ filesLocal;
  76 + vector<string> updates;
  77 + vector<string> localversion = localVersion();
  78 + try
  79 + {
  80 + xmlDoc = (gcnew XmlDocument());
  81 + xmlDocLocal = (gcnew XmlDocument());
  82 +
  83 +
  84 + string url = "http://vlibras.lavid.ufpb.br/api/dicionario/"+localversion[3]+"?type=windows";
  85 + WebRequest^ request = WebRequest::Create( gcnew String(url.c_str()));
  86 + // If required by the server, set the credentials.
  87 + request->Credentials = CredentialCache::DefaultCredentials;
  88 + // Get the response.
  89 + HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
  90 + if (!(response->StatusDescription == "OK"))
  91 + goto erro;
  92 + // Get the stream containing content returned by the server.
  93 + Stream^ dataStream = response->GetResponseStream();
  94 + // Open the stream using a StreamReader for easy access.
  95 + StreamReader^ reader = gcnew StreamReader( dataStream );
  96 + // Read the content.
  97 + String^ responseFromServer = reader->ReadToEnd();
  98 + xmlDoc->LoadXml(responseFromServer);
  99 + files = xmlDoc->GetElementsByTagName("version");
  100 +
  101 + long numitems = files->Count;
  102 +
  103 +
  104 +
  105 + //for (int i=0;i<numitems;i++)
  106 + if(numitems>0)
  107 + {
  108 + String^ playerVersion = files[0]["playerVersion"]->InnerText;
  109 + String^ dictionaryVersion = files[0]["dictionaryVersion"]->InnerText;
  110 +
  111 + MessageBox(0, "version local "+(gcnew String(localversion[1].c_str()))+" \n Server Version : "+playerVersion,"MessageBox caption", MB_OK);
  112 + if(String::Compare( playerVersion, gcnew String(localversion[1].c_str())))
  113 + {
  114 + updates.push_back("playerVersion");
  115 + updates.push_back(clrStringTostring(playerVersion));
  116 + updates.push_back(clrStringTostring(files[0]["playerUrl"]->InnerText));
  117 + }
  118 + if(String::Compare(dictionaryVersion,gcnew String(localversion[3].c_str())))
  119 + {
  120 + updates.push_back("dictionaryVersion");
  121 + updates.push_back(clrStringTostring(dictionaryVersion));
  122 + updates.push_back(clrStringTostring(files[0]["dictionaryUrl"]->InnerText));
  123 + }
  124 +
  125 + //if(atualize)
  126 + //saveNewXmlVersion(playerVersion,dictionaryVersion);
  127 +
  128 + }
  129 +
  130 + erro:
  131 + // Cleanup the streams and the response.
  132 + reader->Close();
  133 + dataStream->Close();
  134 + }catch(Exception^ e)
  135 + {
  136 + return updates;
  137 + }
  138 +
  139 + return updates;
  140 +}
  141 +
  142 +
  143 +vector<string> Util::localVersion()
  144 +{
  145 + XmlDocument^ xmlDocLocal;
  146 + XmlNodeList^ filesLocal;
  147 + vector<string> updates;
  148 + try
  149 + {
  150 + xmlDocLocal = (gcnew XmlDocument());
  151 + //xml version local
  152 + StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
  153 +
  154 + String^ responseLocal = readerLocal->ReadToEnd();
  155 +
  156 + xmlDocLocal->LoadXml(responseLocal);
  157 +
  158 + filesLocal = xmlDocLocal->GetElementsByTagName("version");
  159 +
  160 + updates.push_back("playerVersion");
  161 + String^ playerVersion = filesLocal[0]["playerVersion"]->InnerText;
  162 + updates.push_back(clrStringTostring(playerVersion));
  163 + updates.push_back("dictionaryVersion");
  164 + String^ dictionaryVersion = filesLocal[0]["dictionaryVersion"]->InnerText;
  165 + updates.push_back(clrStringTostring(dictionaryVersion));
  166 +
  167 + // Cleanup the streams and the response.
  168 + readerLocal->Close();
  169 + }catch(Exception^ e)
  170 + {
  171 + return updates;
  172 + }
  173 +
  174 + return updates;
  175 +}
  176 +
  177 +
  178 +string Util::Download(DownloadProgressChangedEventHandler^ dpch ,string url, string fileName)
  179 +{
  180 + try
  181 + {
  182 + myWebClient = gcnew WebClient();
  183 + Uri^ uri = gcnew Uri(gcnew String(url.c_str()));
  184 + myWebClient->DownloadProgressChanged += dpch;
  185 + myWebClient->DownloadFileCompleted += gcnew AsyncCompletedEventHandler( DownloadFileCallBack2 );
  186 + String^ outPath = gcnew String(("c:\\vlibras-libs\\update\\"+fileName).c_str());
  187 + myWebClient->DownloadFileAsync(uri, outPath);
  188 + }catch (Exception^ e)
  189 + {
  190 + return "FALHA";
  191 + }
  192 +
  193 + return "OK";
  194 + }
  195 +
  196 +
  197 +
  198 + bool Util::saveNewXmlVersion(string playerVersion,string dictionaryVersion)
  199 + {
  200 +
  201 + XmlDocument^ xmlDocLocal;
  202 + XmlNodeList^ filesLocal;
  203 + vector<string> updates;
  204 + try
  205 + {
  206 + xmlDocLocal = (gcnew XmlDocument());
  207 + //xml version local
  208 + StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
  209 +
  210 + String^ responseLocal = readerLocal->ReadToEnd();
  211 +
  212 + xmlDocLocal->LoadXml(responseLocal);
  213 +
  214 + filesLocal = xmlDocLocal->GetElementsByTagName("version");
  215 +
  216 + if(!playerVersion.empty())
  217 + filesLocal[0]["playerVersion"]->InnerText = gcnew String(playerVersion.c_str());
  218 +
  219 + if(!dictionaryVersion.empty())
  220 + filesLocal[0]["dictionaryVersion"]->InnerText = gcnew String(dictionaryVersion.c_str());
  221 +
  222 +
  223 + // Cleanup the streams and the response.
  224 + readerLocal->Close();
  225 +
  226 + xmlDocLocal->Save("c:\\vlibras-libs\\update\\updateVersion.xml");
  227 + }catch(Exception^ e)
  228 + {
  229 +
  230 + }
  231 +
  232 + return true;
  233 + }
  234 +
  235 +
  236 + bool Util::extractZip(string zipFile, string outPath)
  237 + {
  238 + try
  239 + {
  240 + String^ zipPath = gcnew String(zipFile.c_str());
  241 + String^ extractPath = gcnew String(outPath.c_str());
  242 + ZipFile::ExtractToDirectory(zipPath, extractPath);
  243 +
  244 + }catch(Exception^ e)
  245 + {
  246 + return false;
  247 + }
  248 +
  249 + return true;
  250 + }
  251 +
  252 +bool Util::backup()
  253 +{
  254 + CHAR nome_atual[] = "c:\\vlibras-libs";
  255 + // novo nome do diretório
  256 + CHAR nome_novo[] = "c:\\vlibras-libs-BK";
  257 +
  258 + // renomear o diretório
  259 + if(MoveFile(nome_atual, nome_novo)){
  260 +
  261 + }
  262 + else{
  263 + return false;
  264 + }
  265 + return true;
  266 +}
  267 +bool Util::restore()
  268 +{
  269 + CHAR nome_atual[] = "c:\\vlibras-libs-BK";
  270 + // novo nome do diretório
  271 + CHAR nome_novo[] = "c:\\vlibras-libs";
  272 +
  273 + // renomear o diretório
  274 + if(MoveFile(nome_atual, nome_novo)){
  275 + return true;
  276 + }
  277 + else{
  278 + return false;
  279 + //GetLastError() << endl;
  280 + }
  281 + return true;
  282 +}
  283 +
  284 +
  285 +
  286 +
  287 +
0 288 \ No newline at end of file
... ...
update/update-icon.ico 0 → 100644
No preview for this file type
update/vlibrasUpdate.cpp 0 → 100644
... ... @@ -0,0 +1,172 @@
  1 +
  2 +#include <Windows.h>
  3 +#include "util.h"
  4 +#include "janelaAtualizacao.h"
  5 +#include <iostream>
  6 +
  7 +using namespace std;
  8 +using namespace System::Threading;
  9 +using namespace System::Windows::Forms;
  10 +
  11 +void atualizarProgresbar(Object^ sender, DownloadProgressChangedEventArgs^ e){
  12 +
  13 + JanelaAtualizacao::progressBar1->Value= e->ProgressPercentage;
  14 + int kbr = e->BytesReceived/1024;
  15 + int kbtotal = e->TotalBytesToReceive/1024;
  16 + JanelaAtualizacao::lbInfDownload->Text = gcnew String(kbr+" kb ("+kbr/1024+" MB) Baixado de "+kbtotal+" kb ("+kbtotal/1024+" MB) | "+ e->ProgressPercentage+"%");
  17 +
  18 +
  19 +}
  20 +
  21 +
  22 +public ref class UpdateBack
  23 +{
  24 + JanelaAtualizacao^ j;
  25 + bool isSilence;
  26 + String^ playerVersion;
  27 + String^ dictionaryVersion;
  28 +
  29 +public:
  30 + UpdateBack(JanelaAtualizacao^ jan,bool __isSilence)
  31 + {
  32 + j = jan;
  33 + isSilence = __isSilence;
  34 + }
  35 + void start()
  36 + {
  37 + j->setInfoWhite("Estabelecendo conexão com o servidor...");
  38 + //JanelaAtualizacao::progressBar1->Style = ProgressBarStyle::Marquee;
  39 +
  40 +
  41 + if(Util::checkNet())
  42 + {
  43 + j->setInfoWhite("Verificando versão...");
  44 +
  45 + vector<string> versions = Util::checkVersion(true);
  46 + if(versions.size()>2)
  47 + {
  48 +
  49 + switch (versions.size())
  50 + {
  51 + case 3:
  52 + if(versions[0]=="playerVersion")
  53 + {
  54 + installPlayer(versions[2],versions[1]);
  55 + }
  56 + else if(versions[0]=="dictionaryVersion")
  57 + {
  58 + installDicionario(versions[2],versions[1]);
  59 +
  60 + }
  61 + break;
  62 + case 6:
  63 + // if(versions[3]=="dictionaryVersion")
  64 + // {
  65 + // installDicionario(versions[5],versions[4]);
  66 + // //Util::extractZip()
  67 + // }
  68 + if(versions[0]=="playerVersion")
  69 + {
  70 + installPlayer(versions[2],versions[1]);
  71 + }
  72 +
  73 + break;
  74 + }
  75 +
  76 + }
  77 + else
  78 + {
  79 + JanelaAtualizacao::progressBar1->Visible = false;
  80 + j->setInfoGreen("Você já está com a versão mais atualizada!");
  81 + j->EnableButton();
  82 + }
  83 +
  84 + }else
  85 + {
  86 + JanelaAtualizacao::progressBar1->Visible = false;
  87 + j->setInfoRed("Não foi possível estabelecer conexão com o servidor!");
  88 +
  89 + }
  90 +
  91 + if(isSilence)
  92 + j->Close();
  93 + j->EnableButton();
  94 +
  95 + }
  96 +
  97 + void installDicionario(string url, string version)
  98 + {
  99 + //JanelaAtualizacao::progressBar1->Style = ProgressBarStyle::Continuous;
  100 + //JanelaAtualizacao::progressBar1->Value=0;
  101 + Util::Download(gcnew DownloadProgressChangedEventHandler(atualizarProgresbar),url,"vlibrasDicionario.zip");
  102 + j->setInfoWhite("Baixando nova versão do dicionário VLibras ");
  103 + while(JanelaAtualizacao::progressBar1->Value<100);
  104 +
  105 + j->setInfoWhite("Extraindo arquivos...");
  106 +
  107 + //Sleep(3000);
  108 + Util::extractZip("C:\\vlibras-libs\\update\\vlibrasDicionario.zip","C:\\vlibras-libs\\Player\\VLibrasPlayer_Data\\Bundles");
  109 + JanelaAtualizacao::progressBar1->Visible = false;
  110 + j->setInfoGreen("Atualização feita com sucesso!");
  111 + Util::saveNewXmlVersion("",version);
  112 + j->EnableButton();
  113 + }
  114 +
  115 + void installPlayer(string url, string version)
  116 + {
  117 + //j->EnableButton();
  118 + //JanelaAtualizacao::progressBar1->Style = ProgressBarStyle::Continuous;
  119 + //JanelaAtualizacao::progressBar1->Value=0;
  120 + Util::Download(gcnew DownloadProgressChangedEventHandler(atualizarProgresbar),url,"vlibrasInstaller.exe");
  121 + j->setInfoWhite("Baixando nova versão do Vlibras...");
  122 + while(JanelaAtualizacao::progressBar1->Value<100);
  123 +
  124 +
  125 +
  126 + String^ installer = gcnew String("C:\\vlibras-libs\\update\\");
  127 + installer+="vlibrasInstaller.exe";
  128 + //Process::Start(installer);
  129 + System::Diagnostics::Process^ vlibrasinstall = gcnew System::Diagnostics::Process();
  130 + vlibrasinstall->StartInfo->FileName = installer;
  131 + vlibrasinstall->StartInfo->Arguments = " /SILENT /SUPPRESSMSGBOXES /NORESTART ";
  132 + vlibrasinstall->Start();
  133 + Util::saveNewXmlVersion(version,"");
  134 + j->Close();
  135 +
  136 + }
  137 +};
  138 +
  139 +[STAThread]
  140 +int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
  141 +{
  142 + UpdateBack^ updateBack;
  143 + JanelaAtualizacao^ updateView = gcnew JanelaAtualizacao();
  144 +
  145 + if(__argv[1] != NULL)
  146 + {
  147 + char* silen = "silence";
  148 + if(*__argv[1] == *silen)
  149 + updateBack = gcnew UpdateBack(updateView,true);
  150 + else
  151 + updateBack = gcnew UpdateBack(updateView,false);
  152 + }
  153 + else
  154 + updateBack = gcnew UpdateBack(updateView,false);
  155 +
  156 + Application::EnableVisualStyles();
  157 +
  158 + //Thread^ t2 = gcnew Thread(gcnew ThreadStart(updateView, &JanelaAtualizacao::start));
  159 + //t2->Start();
  160 +
  161 + Thread^ t3 = gcnew Thread(gcnew ThreadStart(updateBack, &UpdateBack::start));
  162 + t3->Start();
  163 +
  164 +
  165 + updateView->ShowDialog();
  166 + t3->Abort();
  167 +
  168 + //Application::Run(updateView);
  169 +
  170 + return 0;
  171 + }
  172 +
... ...