Commit e3ccbbc784970ec693b007de97a6a8e3f5bfbda5

Authored by ezequiel
1 parent 6d9c0535
Exists in master

Com a versão do update funcionando

Makefile
... ... @@ -23,10 +23,10 @@ OUT = testLibras
23 23  
24 24  
25 25 # Arquivos de implementação
26   -FILES = src\pyTradutor.cpp src\pyClip.cpp update\src\checkVersion.cpp
  26 +FILES = src\pyTradutor.cpp src\pyClip.cpp update\src\pyVlibrasUpdate.cpp
27 27  
28 28 #Headers
29   -INCLUDES = include\pyTradutor.h include\pyClip.h update\include\checkVersion.h
  29 +INCLUDES = include\pyTradutor.h include\pyClip.h update\include\pyVlibrasUpdate.h
30 30  
31 31 CLEAN_OBJ = del -q *.obj
32 32  
... ... @@ -34,7 +34,7 @@ HOME = %homepath%
34 34  
35 35 #Gera executável testLibras
36 36 all: $(FILES) $(INCLUDES) src\testLibras.cpp
37   - $(CC) -Fe$(OUT) -clr src\testLibras.cpp $(FILES) $(CFLAGS) $(LFLAGS)
  37 + $(CC) -Fe$(OUT) -EHsc src\testLibras.cpp $(FILES) $(CFLAGS) $(LFLAGS)
38 38 $(CLEAN_OBJ)
39 39  
40 40 #Gera dll na arquitetura x86
... ...
include/util.h
... ... @@ -1,46 +0,0 @@
1   -#using <System.dll>
2   -#using <System.Xml.dll>
3   -
4   -#include <iostream>
5   -#include <string>
6   -#include <vector>
7   -
8   -
9   -using namespace std;
10   -using namespace System;
11   -
12   -using namespace System::Net;
13   -using namespace System::IO;
14   -using namespace System::Xml;
15   -
16   -
17   -
18   -
19   -
20   -
21   -
22   -
23   - public ref class Util {
24   -
25   - private:
26   - static string clrStringTostring(String^ strIn);
27   - static vector <string> localVersion(void);
28   -
29   - public:
30   - static bool down;
31   - static WebClient^ myWebClient;
32   -
33   - Util();
34   -
35   - bool downloading;
36   -
37   - static bool checkNet(void);
38   - static vector <string> checkVersion(bool atualize);
39   -
40   -
41   - };
42   -
43   -
44   -
45   -
46   -
install/inno setup/user_instalBK.bat 0 → 100644
... ... @@ -0,0 +1,83 @@
  1 +::############################## Instalador VLibras ############################
  2 +::# #
  3 +::# Bruno Santos #
  4 +::# brunosantos@lavid.ufpb.br #
  5 +::# #
  6 +::##############################################################################
  7 +
  8 +::Define Título da janela do prompt
  9 +TITLE Instalador VLibras-Core Windows
  10 +
  11 +::Limpa a tela
  12 +CLS
  13 +
  14 +::Desabilita mensagens
  15 +@ECHO off
  16 +
  17 +ECHO ############### Instalando VLibras ###############
  18 +
  19 +::################# Variáveis de Ambiente #################
  20 +ECHO Exportando Variaveis de Ambiente:
  21 +
  22 +ECHO AELIUS_DATA
  23 +SETX AELIUS_DATA %HOMEDRIVE%\vlibras-libs\aelius_data /M
  24 +
  25 +ECHO NLTK_DATA
  26 +SETX NLTK_DATA %HOMEDRIVE%\vlibras-libs\nltk_data /M
  27 +
  28 +ECHO HUNPOS_TAGGER
  29 +SETX HUNPOS_TAGGER %HOMEDRIVE%\vlibras-libs\bin\hunpos-tag.exe /M
  30 +
  31 +ECHO PYTHONPATH
  32 +SETX PYTHONPATH %HOMEDRIVE%\Python27;%HOMEDRIVE%\Python27\Scripts;%HOMEDRIVE%\Python27\Lib\site-packages;%HOMEDRIVE%\vlibras-libs;%HOMEDRIVE%\vlibras-libs\vlibras-translate\src;%HOMEDRIVE%\vlibras-libs\Clipboard /M
  33 +
  34 +@echo off
  35 +set path_value=%PATH%
  36 +
  37 +If NOT "%path_value%"=="%path_value:vlibras=%" (
  38 + echo ok
  39 +) else (
  40 + SETX "PATH" "%PATH%";%HOMEDRIVE%\vlibras-libs\bin;%HOMEDRIVE%\Python27;%HOMEDRIVE%\Python27\Scripts;%HOMEDRIVE%\Python27\Lib\site-packages /M
  41 +)
  42 +
  43 +::################# Instalação do Python #################
  44 +msiexec /i python-2.7.9.msi /passive
  45 +ECHO OK
  46 +
  47 +::################# Dependências #################
  48 +c:\Python27\python.exe pip-6.0.8-py2.py3-none-any.whl/pip install pip-6.0.8-py2.py3-none-any.whl
  49 +ECHO OK
  50 +
  51 +c:\Python27\Scripts\pip install PyYAML-3.11-cp27-none-win32.whl
  52 +ECHO OK
  53 +
  54 +c:\Python27\Scripts\pip install numpy-1.9.2+mkl-cp27-none-win32.whl
  55 +ECHO OK
  56 +
  57 +c:\Python27\Scripts\pip install six-1.9.0-py2.py3-none-any.whl
  58 +ECHO OK
  59 +
  60 +c:\Python27\Scripts\pip install pyparsing-2.0.3-py2-none-any.whl
  61 +ECHO OK
  62 +
  63 +c:\Python27\Scripts\pip install pytz-2014.10-py2.py3-none-any.whl
  64 +ECHO OK
  65 +
  66 +c:\Python27\Scripts\pip install python_dateutil-2.4.0-py2.py3-none-any.whl
  67 +ECHO OK
  68 +
  69 +c:\Python27\Scripts\pip install matplotlib-1.4.3-cp27-none-win32.whl
  70 +ECHO OK
  71 +
  72 +c:\Python27\Scripts\pip install nltk-3.0.2-py2.py3-none-any.whl
  73 +ECHO OK
  74 +
  75 +c:\Python27\Scripts\pip install future-0.14.3-py2-none-any.whl
  76 +ECHO OK
  77 +
  78 +::################# HUNPOS.PY & DATA.PY #############################
  79 +COPY %HOMEDRIVE%\vlibras-libs\nltk_data\hunpos.py %homedrive%\Python27\Lib\site-packages\nltk\tag\ /y
  80 +COPY %HOMEDRIVE%\vlibras-libs\nltk_data\data.py %homedrive%\Python27\Lib\site-packages\nltk /y
  81 +COPY %HOMEDRIVE%\vlibras-libs\nltk_data\nltk_tgrep.py %homedrive%\Python27\Lib\site-packages /y
  82 +
  83 +ECHO VLibras Tradutor instalado com sucesso!
... ...
install/inno setup/user_install.bat
... ... @@ -1,83 +0,0 @@
1   -::############################## Instalador VLibras ############################
2   -::# #
3   -::# Bruno Santos #
4   -::# brunosantos@lavid.ufpb.br #
5   -::# #
6   -::##############################################################################
7   -
8   -::Define Título da janela do prompt
9   -TITLE Instalador VLibras-Core Windows
10   -
11   -::Limpa a tela
12   -CLS
13   -
14   -::Desabilita mensagens
15   -@ECHO off
16   -
17   -ECHO ############### Instalando VLibras ###############
18   -
19   -::################# Variáveis de Ambiente #################
20   -ECHO Exportando Variaveis de Ambiente:
21   -
22   -ECHO AELIUS_DATA
23   -SETX AELIUS_DATA %HOMEDRIVE%\vlibras-libs\aelius_data /M
24   -
25   -ECHO NLTK_DATA
26   -SETX NLTK_DATA %HOMEDRIVE%\vlibras-libs\nltk_data /M
27   -
28   -ECHO HUNPOS_TAGGER
29   -SETX HUNPOS_TAGGER %HOMEDRIVE%\vlibras-libs\bin\hunpos-tag.exe /M
30   -
31   -ECHO PYTHONPATH
32   -SETX PYTHONPATH %HOMEDRIVE%\Python27;%HOMEDRIVE%\Python27\Scripts;%HOMEDRIVE%\Python27\Lib\site-packages;%HOMEDRIVE%\vlibras-libs;%HOMEDRIVE%\vlibras-libs\vlibras-translate\src;%HOMEDRIVE%\vlibras-libs\Clipboard /M
33   -
34   -@echo off
35   -set path_value=%PATH%
36   -
37   -If NOT "%path_value%"=="%path_value:vlibras=%" (
38   - echo ok
39   -) else (
40   - SETX "PATH" "%PATH%";%HOMEDRIVE%\vlibras-libs\bin;%HOMEDRIVE%\Python27;%HOMEDRIVE%\Python27\Scripts;%HOMEDRIVE%\Python27\Lib\site-packages /M
41   -)
42   -
43   -::################# Instalação do Python #################
44   -msiexec /i python-2.7.9.msi /passive
45   -ECHO OK
46   -
47   -::################# Dependências #################
48   -c:\Python27\python.exe pip-6.0.8-py2.py3-none-any.whl/pip install pip-6.0.8-py2.py3-none-any.whl
49   -ECHO OK
50   -
51   -c:\Python27\Scripts\pip install PyYAML-3.11-cp27-none-win32.whl
52   -ECHO OK
53   -
54   -c:\Python27\Scripts\pip install numpy-1.9.2+mkl-cp27-none-win32.whl
55   -ECHO OK
56   -
57   -c:\Python27\Scripts\pip install six-1.9.0-py2.py3-none-any.whl
58   -ECHO OK
59   -
60   -c:\Python27\Scripts\pip install pyparsing-2.0.3-py2-none-any.whl
61   -ECHO OK
62   -
63   -c:\Python27\Scripts\pip install pytz-2014.10-py2.py3-none-any.whl
64   -ECHO OK
65   -
66   -c:\Python27\Scripts\pip install python_dateutil-2.4.0-py2.py3-none-any.whl
67   -ECHO OK
68   -
69   -c:\Python27\Scripts\pip install matplotlib-1.4.3-cp27-none-win32.whl
70   -ECHO OK
71   -
72   -c:\Python27\Scripts\pip install nltk-3.0.2-py2.py3-none-any.whl
73   -ECHO OK
74   -
75   -c:\Python27\Scripts\pip install future-0.14.3-py2-none-any.whl
76   -ECHO OK
77   -
78   -::################# HUNPOS.PY & DATA.PY #############################
79   -COPY %HOMEDRIVE%\vlibras-libs\nltk_data\hunpos.py %homedrive%\Python27\Lib\site-packages\nltk\tag\ /y
80   -COPY %HOMEDRIVE%\vlibras-libs\nltk_data\data.py %homedrive%\Python27\Lib\site-packages\nltk /y
81   -COPY %HOMEDRIVE%\vlibras-libs\nltk_data\nltk_tgrep.py %homedrive%\Python27\Lib\site-packages /y
82   -
83   -ECHO VLibras Tradutor instalado com sucesso!
install/inno setup/user_install.iss
... ... @@ -6,7 +6,7 @@
6 6 ;#####################################################################
7 7  
8 8 #define MyAppName "VLibras"
9   -#define MyAppVersion "beta"
  9 +#define MyAppVersion "3.0.0"
10 10 #define MyAppPublisher "LAViD"
11 11 #define MyAppURL "http://vlibrasplayer.lavid.ufpb.br"
12 12 #define MyAppExeName "VlibrasPlayer.exe"
... ... @@ -24,9 +24,9 @@ AppUpdatesURL={#MyAppURL}
24 24 DefaultDirName={sd}\vlibras-libs
25 25 DisableDirPage=yes
26 26 DefaultGroupName={#MyAppName}
27   -OutputBaseFilename=vlibras_desktop_win_2.0.0
  27 +OutputBaseFilename=vlibras_instalador_3.0.0
28 28 DisableProgramGroupPage=yes
29   -OutputDir="C:\Users\ezequiel\Desktop\vlibras_installer_2.0.0"
  29 +OutputDir="C:\Users\ezequiel\Desktop\vlibras_installer_3.0.0"
30 30 SetupIconFile="C:\Users\ezequiel\Desktop\user_install\icons\icon_vlibras.ico"
31 31 Compression=lzma
32 32 SolidCompression=yes
... ... @@ -43,8 +43,8 @@ Name: &quot;desktopicon&quot;; Description: &quot;{cm:CreateDesktopIcon}&quot;; GroupDescription: &quot;{
43 43 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; OnlyBelowVersion: 0,6.1
44 44  
45 45 [Files]
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;
  46 +
  47 +;Source: "C:\Users\ezequiel\Desktop\dotnetfx45_full_x86_x64.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall;
48 48 Source: "C:\Users\ezequiel\Desktop\user_install\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
49 49  
50 50  
... ... @@ -58,13 +58,11 @@ Name: &quot;{commondesktop}\{#MyAppName}&quot;; Filename: &quot;{app}\Player\{#MyAppExeName}&quot;;
58 58 Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\Player\{#MyAppExeName}"; Tasks: quicklaunchicon; IconFilename: "{app}\icons\icon_vlibras.ico"
59 59  
60 60 [Run]
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 61 Filename: {sd}\vlibras-libs\required\user_install.bat; Flags: runhidden; StatusMsg: Finalizando Instalação...
64   -Filename: {sd}\vlibras-libs\update\vlibras-up.exe; StatusMsg: Instalando atualização...
65   -
  62 +Filename: {sd}\vlibras-libs\update\vlibrasPlayerDictUp.exe; StatusMsg: Instalando atualização...
66 63  
67 64  
  65 +
68 66  
69 67  
70 68  
... ...
plugin/corePlugin.cpp
... ... @@ -5,27 +5,24 @@
5 5 #define EXPORT_API __declspec(dllimport)
6 6 #endif
7 7  
8   -#include <process.h>
9 8 #include "corePlugin.h"
  9 +#include <time.h>
10 10  
11   -
  11 +using namespace std;
12 12  
13 13  
14 14 extern "C"
15 15 {
16   -
17 16  
18   -
  17 +
19 18 EXPORT_API int coreInitialize()
20 19 {
21 20 //Objeto usado para traduzir
22 21 tradutor = new PyTradutor();
23   - checkversion = new CheckVersion();
24   - check =0;
25   -
  22 + update = new PyVlibrasUpdate();
26 23 //Objeto usado para copiar texto da área de transferência
27 24 clipboard.bdragOn();
28   -
  25 +
29 26 return 1;
30 27 }
31 28  
... ... @@ -41,86 +38,55 @@
41 38  
42 39 EXPORT_API int coreUpdateInstall_player()
43 40 {
44   -
45   - char szPath[] = "C:\\vlibras-libs\\update\\vlibras-up.exe";
46   - string params = "C:\\vlibras-libs\\update\\vlibras-up.exe ";
47   - params.append(checkversion->playerUrl);
48   - params.append(" installer ");
49   - params.append(checkversion->playerVersionFull);
50   - PROCESS_INFORMATION pif; //Gives info on the thread and..
51   - //..process for the new process
52   - STARTUPINFO si; //Defines how to start the program
53   -
54   - ZeroMemory(&si,sizeof(si)); //Zero the STARTUPINFO struct
55   - si.cb = sizeof(si); //Must set size of structure
56   -
57   - BOOL bRet = CreateProcess(
58   - szPath, //Path to executable file
59   - (LPSTR)params.c_str(), //Command string - not needed here
60   - NULL, //Process handle not inherited
61   - NULL, //Thread handle not inherited
62   - FALSE, //No inheritance of handles
63   - 0, //No special flags
64   - NULL, //Same environment block as this prog
65   - NULL, //Current directory - no separate path
66   - &si, //Pointer to STARTUPINFO
67   - &pif); //Pointer to PROCESS_INFORMATION
  41 + update->install("c:\\vlibras-libs\\update\\bin\\vlibrasPlayerDictUp.exe","NULL");
68 42  
69   -
70   -
71   - CloseHandle(pif.hProcess); //Close handle to process
72   - CloseHandle(pif.hThread);
73   -
74 43 return 1;
75 44 }
76 45  
77 46  
78 47 EXPORT_API int coreUpdateInstall_dict()
79 48 {
80   - char szPath[] = "C:\\vlibras-libs\\update\\vlibras-up.exe";
81   - string params = "C:\\vlibras-libs\\update\\vlibras-up.exe ";
82   - params.append(checkversion->dictUrl.c_str());
83   - params.append(" dictionary ");
84   - params.append(checkversion->dictVersionFull);
85   - PROCESS_INFORMATION pif; //Gives info on the thread and..
86   - //..process for the new process
87   - STARTUPINFO si; //Defines how to start the program
88   -
89   - ZeroMemory(&si,sizeof(si)); //Zero the STARTUPINFO struct
90   - si.cb = sizeof(si); //Must set size of structure
91   -
92   - BOOL bRet = CreateProcess(
93   - szPath, //Path to executable file
94   - (LPSTR)params.c_str(), //Command string - not needed here
95   - NULL, //Process handle not inherited
96   - NULL, //Thread handle not inherited
97   - FALSE, //No inheritance of handles
98   - 0, //No special flags
99   - NULL, //Same environment block as this prog
100   - NULL, //Current directory - no separate path
101   - &si, //Pointer to STARTUPINFO
102   - &pif); //Pointer to PROCESS_INFORMATION
103   -
104   - CloseHandle(pif.hProcess); //Close handle to process
105   - CloseHandle(pif.hThread);
  49 + update->install("c:\\vlibras-libs\\update\\bin\\vlibrasPlayerDictUp.exe","NULL");
106 50  
107 51 return 1;
108 52 }
109 53  
110 54  
111   -
112 55 EXPORT_API int coreUpdateCheck()
113 56 {
114   -
115   - checkversion->checkRefresh();
116   -
117   - return checkversion->vstatus;
  57 +
  58 + string line_in_str;
  59 + ifstream file_version;
  60 + int return_int = -1;
  61 + try
  62 + {
  63 + update->checkExe("C:\\Python27\\python.exe c:\\vlibras-libs\\update\\py\\VlibrasCheckVersion.pyc","check");
  64 +
  65 + clock_t time_end;
  66 + time_end = clock() + 3000 * CLOCKS_PER_SEC/1000;
  67 + while (clock() < time_end);
  68 +
  69 +
  70 + file_version.open("c:\\vlibras-libs\\update\\version\\version.txt");
  71 +
  72 + getline(file_version, line_in_str);
  73 + file_version.close();
  74 + return_int = atoi(line_in_str.c_str());
  75 +
  76 + return return_int;
  77 + }
  78 + catch (exception e)
  79 + {
  80 + return -1;
  81 + }
  82 + return return_int;
118 83 }
119 84  
120 85 EXPORT_API int coreFinalize()
121 86 {
122 87 clipboard.bdragOff();
123 88 delete tradutor;
  89 + delete update;
124 90 return 1;
125 91 }
126 92  
... ...
plugin/corePlugin.h
... ... @@ -21,8 +21,9 @@ VLibras-Core
21 21  
22 22 #include "pyClip.h"
23 23 #include "pyTradutor.h"
24   -#include "checkVersion.h"
25   -#include <string.h>
  24 +#include "pyVlibrasUpdate.h"
  25 +#include <fstream>
  26 +#include <string>
26 27  
27 28  
28 29 using namespace std;
... ... @@ -31,12 +32,13 @@ extern &quot;C&quot;
31 32 {
32 33 //Usado para traduzir português para glosa
33 34 PyTradutor *tradutor;
34   - int check;
  35 +
  36 +
35 37 //Usado para copiar texto da área de transferência
36 38 PyClip clipboard;
37 39  
38 40 //Usado para verificar se existe atualização
39   - CheckVersion *checkversion;
  41 + PyVlibrasUpdate *update;
40 42  
41 43 //Inicializa Objetos
42 44 EXPORT_API int coreInitize(void);
... ...
plugin/testPlugin.cpp
... ... @@ -13,7 +13,14 @@ metodo2 execute;
13 13 typedef int (WINAPI*metodo3)();
14 14 metodo3 finalize;
15 15 typedef int (WINAPI*metodo4)();
16   -metodo4 update;
  16 +metodo4 coreUpdateCheck;
  17 +
  18 +typedef int (WINAPI*metodo5)();
  19 +metodo5 coreUpdateInstall_player;
  20 +
  21 +typedef int (WINAPI*metodo6)();
  22 +metodo6 coreUpdateInstall_dict;
  23 +
17 24  
18 25 int main(int argc, char *argv[])
19 26 {
... ... @@ -29,26 +36,26 @@ int main(int argc, char *argv[])
29 36 initialize=(metodo1)GetProcAddress((HMODULE)hDLL, "coreInitialize");
30 37 execute=(metodo2)GetProcAddress((HMODULE)hDLL, "coreExecute");
31 38 finalize=(metodo3)GetProcAddress((HMODULE)hDLL, "coreFinalize");
32   - update=(metodo4)GetProcAddress((HMODULE)hDLL, "coreUpdate");
  39 + coreUpdateCheck=(metodo4)GetProcAddress((HMODULE)hDLL, "coreUpdateCheck");
  40 + coreUpdateInstall_player=(metodo5)GetProcAddress((HMODULE)hDLL, "coreUpdateInstall_player");
  41 + coreUpdateInstall_dict=(metodo6)GetProcAddress((HMODULE)hDLL, "coreUpdateInstall_dict");
33 42  
34 43 //Executa coreInitialize
35 44 int init = initialize();
36 45 cout <<"return initialize: " << init <<endl;
37 46  
38   - int in = update();
39   - cout <<"return update: " << in <<endl;
  47 + int a = coreUpdateCheck();
  48 + cout <<"return coreUpdateCheck: " << a <<endl;
  49 +
  50 + int b = coreUpdateInstall_player();
  51 + cout <<"return coreUpdateInstall_player: " << b <<endl;
  52 +
  53 + int c = coreUpdateInstall_dict();
  54 + cout <<"return coreUpdateInstall_dict: " << c <<endl;
  55 +
  56 +
40 57  
41   - //in = update();
42   - //cout <<"return update2: " << in <<endl;
43 58  
44   - //in=0;
45   - //in = update();
46   - //cout <<"return update3: " << in <<endl;
47   -
48   - //Executa coreExecute
49   - //char* exec = execute();
50   - //cout << "return execute: " << exec <<endl;
51   -while(1);
52 59 //Executa coreFinalize
53 60 int final = finalize();
54 61 cout << "return finalize: " << final <<endl;
... ...
src/pyClip.cpp
... ... @@ -55,7 +55,7 @@ PyClip::~PyClip()
55 55 char * PyClip::clip()
56 56 {
57 57 // Call the callable object 'pFunc' with arguments given by the tuple 'pArgs'
58   - pResult = PyObject_CallObject(pFunc,pArgs);
  58 + pResult = PyObject_CallObject(pFunc,NULL);
59 59 assert(pResult!=NULL);
60 60  
61 61 return PyString_AsString(pResult);
... ...
src/util.cpp
... ... @@ -1,165 +0,0 @@
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   -
24   -
25   -bool Util::checkNet()
26   -{
27   -
28   - try
29   - {
30   -
31   - WebRequest^ request = WebRequest::Create( "http://vlibras.lavid.ufpb.br" );
32   -
33   - // If required by the server, set the credentials.
34   - //request->Credentials = CredentialCache::DefaultCredentials;
35   -
36   - // Get the response.
37   - HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
38   -
39   - if (response->StatusDescription == "OK"){
40   -
41   - return true;
42   - }
43   - return false;
44   - response->Close();
45   - }
46   - catch ( WebException^ e )
47   - {
48   - return false;
49   - }
50   -
51   -}
52   -
53   -
54   -vector<string> Util::checkVersion(bool atualize)
55   -{
56   - XmlDocument^ xmlDoc;
57   - XmlNodeList^ files;
58   - XmlDocument^ xmlDocLocal;
59   - XmlNodeList^ filesLocal;
60   - vector<string> updates;
61   - vector<string> localversion = localVersion();
62   - try
63   - {
64   - xmlDoc = (gcnew XmlDocument());
65   - xmlDocLocal = (gcnew XmlDocument());
66   -
67   -
68   - string url = "http://vlibras.lavid.ufpb.br/api/dicionario/"+localversion[3]+"?type=windows";
69   - WebRequest^ request = WebRequest::Create( gcnew String(url.c_str()));
70   - // If required by the server, set the credentials.
71   - request->Credentials = CredentialCache::DefaultCredentials;
72   - // Get the response.
73   - HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
74   - if (!(response->StatusDescription == "OK"))
75   - goto erro;
76   - // Get the stream containing content returned by the server.
77   - Stream^ dataStream = response->GetResponseStream();
78   - // Open the stream using a StreamReader for easy access.
79   - StreamReader^ reader = gcnew StreamReader( dataStream );
80   - // Read the content.
81   - String^ responseFromServer = reader->ReadToEnd();
82   - xmlDoc->LoadXml(responseFromServer);
83   - files = xmlDoc->GetElementsByTagName("version");
84   -
85   - long numitems = files->Count;
86   -
87   -
88   -
89   - //for (int i=0;i<numitems;i++)
90   - if(numitems>0)
91   - {
92   - String^ playerVersion = files[0]["playerVersion"]->InnerText;
93   - String^ dictionaryVersion = files[0]["dictionaryVersion"]->InnerText;
94   -
95   - if(String::Compare( playerVersion, gcnew String(localversion[1].c_str())))
96   - {
97   - updates.push_back("playerVersion");
98   - updates.push_back(clrStringTostring(playerVersion));
99   - updates.push_back(clrStringTostring(files[0]["playerUrl"]->InnerText));
100   - }
101   - if(String::Compare(dictionaryVersion,gcnew String(localversion[3].c_str())))
102   - {
103   - updates.push_back("dictionaryVersion");
104   - updates.push_back(clrStringTostring(dictionaryVersion));
105   - updates.push_back(clrStringTostring(files[0]["dictionaryUrl"]->InnerText));
106   - }
107   -
108   - //if(atualize)
109   - //saveNewXmlVersion(playerVersion,dictionaryVersion);
110   -
111   - }
112   -
113   - erro:
114   - // Cleanup the streams and the response.
115   - reader->Close();
116   - dataStream->Close();
117   - }catch(Exception^ e)
118   - {
119   - updates.push_back("faill");
120   - return updates;
121   - }
122   -
123   - return updates;
124   -}
125   -
126   -
127   -vector<string> Util::localVersion()
128   -{
129   - XmlDocument^ xmlDocLocal;
130   - XmlNodeList^ filesLocal;
131   - vector<string> updates;
132   - try
133   - {
134   - xmlDocLocal = (gcnew XmlDocument());
135   - //xml version local
136   - StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
137   -
138   - String^ responseLocal = readerLocal->ReadToEnd();
139   -
140   - xmlDocLocal->LoadXml(responseLocal);
141   -
142   - filesLocal = xmlDocLocal->GetElementsByTagName("version");
143   -
144   - updates.push_back("playerVersion");
145   - String^ playerVersion = filesLocal[0]["playerVersion"]->InnerText;
146   - updates.push_back(clrStringTostring(playerVersion));
147   - updates.push_back("dictionaryVersion");
148   - String^ dictionaryVersion = filesLocal[0]["dictionaryVersion"]->InnerText;
149   - updates.push_back(clrStringTostring(dictionaryVersion));
150   -
151   - // Cleanup the streams and the response.
152   - readerLocal->Close();
153   - }catch(Exception^ e)
154   - {
155   - return updates;
156   - }
157   -
158   - return updates;
159   -}
160   -
161   -
162   -
163   -
164   -
165   -
166 0 \ No newline at end of file
update/Makefile
1 1 ############################## MAKEFILE VLIBRAS ############################
2 2 # #
3   -# Bruno Santos #
4   -# brunosantos@lavid.ufpb.br #
5 3 # Ezequiel Silva #
6 4 # ezequielsilva@lavid.ufpb.br # #
7 5 # #
8 6 ############################################################################
9 7  
10   -# Includes
11   -CFLAGS = -I include
12   -
13   -# Link com as libs utilizadas
14   -#LFLAGS = -link C:\Python27\libs\python27.lib
15 8  
16 9 # Compilador Nativo
17 10 CC = cl
18 11  
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
  12 +OUTDICT = vlibrasPlayerDictUp
24 13  
25   -#Headers
26   -INCLUDES = include\util.h include\janelaAtualizacao.h
27 14  
28   -CLEAN_OBJ = del -q *.obj
  15 +CLEAN_OBJ = del -q *.obj
29 16  
30   -HOME = %homepath%
31 17  
32   -#Gera executável testLibras
33   -all: $(FILES) $(INCLUDES)
34   - $(CC) -Fe$(OUT) -clr vlibrasUpdate.cpp $(FILES) $(CFLAGS)
  18 +#Gera executável
  19 +all:
  20 + $(CC) -Fe$(OUTDICT) -EHsc vlibrasDictPlayerInstall.cpp
35 21 $(CLEAN_OBJ)
36 22  
37 23  
38   -
39   -
40 24 #Limpa arquivos objetos e executáveis criados
41 25 clean:
42 26 del -q *.exe *.obj
... ...
update/include/checkVersion.h
... ... @@ -1,53 +0,0 @@
1   -//*****************************************************************
2   -/*
3   -VLibras: Verificação de atualização
4   -
5   -
6   -Ezequiel Silva
7   -ezequielsilva@lavid.ufpb.br
8   -VLibras-Core
9   -2015
10   -*/
11   -//*****************************************************************
12   -
13   -/**
14   -* \file checkVersion.h
15   -* \Ezequiel Silva
16   -* \date Outubro 2015
17   -*/
18   -
19   -
20   -
21   -#include <tchar.h>
22   -#include <iostream>
23   -#include <string>
24   -#include <fstream>
25   -#include <urlmon.h>
26   -
27   -#pragma comment(lib, "urlmon.lib")
28   -using namespace std;
29   -
30   - class CheckVersion
31   -{
32   -
33   -private:
34   - void checkLocal();
35   - void checkApi();
36   - void reset();
37   -public:
38   - long playerVersion = -1;
39   - long dictVersion = -1;
40   - long localPlayerVersion = -1;
41   - long localDictVersion = -1;
42   - string playerVersionFull = "";
43   - string dictVersionFull = "";
44   - string playerUrl = "";
45   - string dictUrl = "";
46   - string dictCallVersion ="0.0.0_0.0.0";
47   - int vstatus = -1;
48   -
49   - CheckVersion();
50   - void checkRefresh();
51   -
52   -
53   -};
54 0 \ No newline at end of file
update/include/janelaAtualizacao.h
... ... @@ -1,66 +0,0 @@
1   -//*****************************************************************
2   -/*
3   -VLibras: Atualização
4   -
5   -
6   -Ezequiel Silva
7   -ezequielsilva@lavid.ufpb.br
8   -VLibras-Core
9   -2015
10   -*/
11   -//*****************************************************************
12   -
13   -/**
14   -* \file checkVersion.h
15   -* \Ezequiel Silva
16   -* \date Outubro 2015
17   -*/
18   -
19   -// ############### NÃO USADO ###################
20   -
21   -
22   -
23   -#include <string>
24   -
25   -#using <System.dll>
26   -#using <System.Windows.Forms.dll>
27   -#using <System.Drawing.dll>
28   -
29   -
30   -using namespace System::Windows::Forms;
31   -using namespace System;
32   -using namespace System::Drawing;
33   -using namespace System::ComponentModel;
34   -using namespace std;
35   -
36   -public ref class JanelaAtualizacao : public Form
37   -{
38   - private:
39   -
40   - bool downloading;
41   - RichTextBox^ richTextBox1;
42   - Label^ lbInformacao;
43   - Label^ topo;
44   - int vez=0;
45   - Bitmap^ animatedImage;
46   - String^ informacao;
47   - void btOKevent(Object^ sender, EventArgs^ e);
48   - void XFormClosing(Object^ sender, FormClosingEventArgs^ e);
49   -
50   - public:
51   - static ProgressBar^ progressBar1;
52   - static Label^ lbInfDownload;
53   - Button^ btOK;
54   - JanelaAtualizacao();
55   -
56   - void initializeComponent();
57   - void setInfoWhite(String^ info);
58   - void setInfoGreen(String^ info);
59   - void setInfoRed(String^ info);
60   - void start();
61   - void EnableButton();
62   -
63   -
64   -
65   -};
66   -
update/include/pyVlibrasUpdate.h 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +//*****************************************************************
  2 +/*
  3 +
  4 +Copyright (c) 2015 Ezequiel Silva
  5 +VLibras-Core group at LAViD, Federal University of Paraiba
  6 +*/
  7 +//*****************************************************************
  8 +
  9 +/**
  10 +* \file pyVlibrasUpdate.h
  11 +* \authors Ezequiel Silva
  12 +* \date Setembro 2015
  13 +*/
  14 +#ifndef _PHVLIBRASUPDATE_H
  15 +#define _PHVLIBRASUPDATE_H
  16 +
  17 +#include <windows.h>
  18 +
  19 +/** \brief Classe para execução do Vlibras Update.
  20 +*
  21 +*/
  22 +class PyVlibrasUpdate
  23 +{
  24 +
  25 + public:
  26 + int install(char* strFunct, char* strstrParams);
  27 + void checkExe(char* strFunct, char* strstrParams);
  28 +
  29 +};
  30 +
  31 +#endif
0 32 \ No newline at end of file
... ...
update/include/util.h
... ... @@ -1,51 +0,0 @@
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/checkVersion.cpp
... ... @@ -1,182 +0,0 @@
1   -
2   -
3   -#include "checkVersion.h"
4   -
5   -using namespace std;
6   -
7   -
8   -
9   - CheckVersion::CheckVersion()
10   - {
11   - //reset();
12   - }
13   -
14   - void CheckVersion::checkRefresh()
15   - {
16   - reset();
17   - checkLocal();
18   - checkApi();
19   - if(!(localDictVersion == -1 || dictVersion == -1 || localPlayerVersion == -1 || playerVersion == -1))
20   - {
21   - vstatus = 0;
22   - if(localDictVersion < dictVersion && localPlayerVersion < playerVersion)
23   - vstatus=1;
24   - else if(localPlayerVersion < playerVersion)
25   - vstatus = 1;
26   - else if(localDictVersion < dictVersion)
27   - vstatus = 2;
28   - }
29   - else
30   - vstatus = -1;
31   -
32   - }
33   -
34   -
35   -
36   -
37   -void find_and_replace(string& source, string const& find, string const& replace)
38   -{
39   - for(string::size_type i = 0; (i = source.find(find, i)) != string::npos;)
40   - {
41   - source.replace(i, find.length(), replace);
42   - i += replace.length();
43   - }
44   -}
45   -
46   -
47   -void CheckVersion::checkLocal()
48   -{
49   -
50   - int result = 0;
51   - string line;
52   - ifstream myfile ("c:\\vlibras-libs\\update\\updateVersion.xml");
53   -
54   - if (myfile.is_open())
55   - {
56   - while ( getline(myfile,line) )
57   - {
58   - if(strstr(line.c_str(),"<dictionaryVersion>"))
59   - {
60   - string version;
61   - int ia = line.find("<dictionaryVersion>")+19;
62   - int ib = line.find("</dictionaryVersion>")-23;
63   - version = line.substr(ia,ib);
64   - dictCallVersion = version;
65   - find_and_replace(version,".","");
66   - find_and_replace(version,"_","");
67   - find_and_replace(version," ","");
68   - localDictVersion = atoi(version.c_str());
69   - }
70   - else if(strstr(line.c_str(),"<playerVersion>"))
71   - {
72   - string version;
73   - int ia = line.find("<playerVersion>")+15;
74   - int ib = line.find("</playerVersion>")-19;
75   - version = line.substr(ia,ib);
76   - find_and_replace(version,".","");
77   - find_and_replace(version,"_","");
78   - find_and_replace(version," ","");
79   - localPlayerVersion = atoi(version.c_str());
80   - }
81   -
82   - }
83   -
84   - myfile.close();
85   -
86   - }
87   -
88   -
89   - }
90   -
91   -void CheckVersion::checkApi()
92   -{
93   -
94   -cout << "dictCallVersion ====> " << dictCallVersion<< endl;
95   -string url = "http://vlibras.lavid.ufpb.br/api/dicionario/";
96   -url.append(dictCallVersion);
97   -url.append("?type=windows");
98   - HRESULT hr = URLDownloadToFile ( NULL, _T(url.c_str()), _T("c:\\vlibras-libs\\update\\netVersion.xml"), 0, NULL );
99   - if(SUCCEEDED(hr)){
100   -
101   - string line;
102   - ifstream myfile ("c:\\vlibras-libs\\update\\netVersion.xml");
103   - if (myfile.is_open())
104   - {
105   - while ( getline(myfile,line) )
106   - {
107   - if(strstr(line.c_str(),"<dictionaryVersion>"))
108   - {
109   - string version;
110   - int ia = line.find("<dictionaryVersion>")+19;
111   - int ib = line.find("</dictionaryVersion>")-23;
112   - version = line.substr(ia,ib);
113   - dictVersionFull = version;
114   - find_and_replace(version,".","");
115   - find_and_replace(version,"_","");
116   - find_and_replace(version," ","");
117   - dictVersion = atoi(version.c_str());
118   - }
119   - else if(strstr(line.c_str(),"<playerVersion>"))
120   - {
121   - string version;
122   - int ia = line.find("<playerVersion>")+15;
123   - int ib = line.find("</playerVersion>")-19;
124   - version = line.substr(ia,ib);
125   - playerVersionFull = version;
126   - find_and_replace(version,".","");
127   - find_and_replace(version,"_","");
128   - find_and_replace(version," ","");
129   - playerVersion = atoi(version.c_str());
130   -
131   - }
132   - else if(strstr(line.c_str(),"<playerUrl>"))
133   - {
134   - string version;
135   - int ia = line.find("<playerUrl>")+11;
136   - int ib = line.find("</playerUrl>")-15;
137   - version = line.substr(ia,ib);
138   - playerUrl = version;
139   - }
140   - else if(strstr(line.c_str(),"<dictionaryUrl>"))
141   - {
142   - string version;
143   - int ia = line.find("<dictionaryUrl>")+15;
144   - int ib = line.find("</dictionaryUrl>")-19;
145   - version = line.substr(ia,ib);
146   - dictUrl = version;
147   - }
148   - }
149   - myfile.close();
150   - }
151   -
152   -
153   - }
154   -
155   -}
156   -
157   -
158   -void CheckVersion::reset()
159   - {
160   - playerVersion = -1;
161   - dictVersion = -1;
162   - localPlayerVersion = -1;
163   - localDictVersion = -1;
164   - playerUrl = "";
165   - dictUrl = "";
166   - vstatus = -1;
167   - }
168   -
169   -//return
170   -// -1 se erro
171   -//0 se não necessita de atualização
172   -// 1 se tiver para player
173   -// 2 se dicionario
174   -
175   -
176   -
177   -
178   -
179   -
180   -
181   -
182   -
update/src/janelaAtualizacao.cpp
... ... @@ -1,151 +0,0 @@
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   -
152 0 \ No newline at end of file
update/src/pyVlibrasUpdate.cpp 0 → 100644
... ... @@ -0,0 +1,103 @@
  1 +
  2 +/**
  3 +* \file pyVlibrasUpdate.cpp
  4 +* \authors Ezequiel Silva
  5 +* \date outubro 2015
  6 +*/
  7 +
  8 +#include "pyVlibrasUpdate.h"
  9 +
  10 +
  11 +void PyVlibrasUpdate::checkExe(char* strFunct, char* strstrParams)
  12 +{
  13 +
  14 + STARTUPINFO StartupInfo;
  15 + PROCESS_INFORMATION ProcessInfo;
  16 + char Args[4096];
  17 + char *pEnvCMD = NULL;
  18 + char *pDefaultCMD = "CMD.EXE";
  19 + ULONG rc;
  20 +
  21 + memset(&StartupInfo, 0, sizeof(StartupInfo));
  22 + StartupInfo.cb = sizeof(STARTUPINFO);
  23 + StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
  24 + StartupInfo.wShowWindow = SW_HIDE;
  25 +
  26 + Args[0] = 0;
  27 +
  28 + pEnvCMD = getenv("COMSPEC");
  29 +
  30 + if(pEnvCMD){
  31 +
  32 + strcpy(Args, pEnvCMD);
  33 + }
  34 + else{
  35 + strcpy(Args, pDefaultCMD);
  36 + }
  37 +
  38 + // "/c" option - Do the command then terminate the command window
  39 + strcat(Args, " /c ");
  40 + //the application you would like to run from the command window
  41 + strcat(Args, strFunct);
  42 + strcat(Args, " ");
  43 + //the parameters passed to the application being run from the command window.
  44 + strcat(Args, strstrParams);
  45 +
  46 + if (!CreateProcess( NULL, Args, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartupInfo, &ProcessInfo))
  47 + {
  48 + return -1;
  49 + }
  50 +
  51 + WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  52 + if(!GetExitCodeProcess(ProcessInfo.hProcess, &rc))
  53 + rc = 0;
  54 +
  55 + CloseHandle(ProcessInfo.hThread);
  56 + CloseHandle(ProcessInfo.hProcess);
  57 +
  58 +
  59 +}
  60 +
  61 +int PyVlibrasUpdate::install(char* strFunct, char* strstrParams)
  62 +{
  63 +
  64 + STARTUPINFO StartupInfo;
  65 + PROCESS_INFORMATION ProcessInfo;
  66 + char Args[4096];
  67 + char *pEnvCMD = NULL;
  68 + char *pDefaultCMD = "CMD.EXE";
  69 +
  70 + memset(&StartupInfo, 0, sizeof(StartupInfo));
  71 + StartupInfo.cb = sizeof(STARTUPINFO);
  72 + StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
  73 + StartupInfo.wShowWindow = SW_HIDE;
  74 +
  75 + Args[0] = 0;
  76 +
  77 + pEnvCMD = getenv("COMSPEC");
  78 +
  79 + if(pEnvCMD){
  80 +
  81 + strcpy(Args, pEnvCMD);
  82 + }
  83 + else{
  84 + strcpy(Args, pDefaultCMD);
  85 + }
  86 +
  87 + // "/c" option - Do the command then terminate the command window
  88 + strcat(Args, " /c ");
  89 + //the application you would like to run from the command window
  90 + strcat(Args, strFunct);
  91 + strcat(Args, " ");
  92 + //the parameters passed to the application being run from the command window.
  93 + strcat(Args, strstrParams);
  94 +
  95 + if (!CreateProcess( NULL, Args, NULL, NULL, FALSE,CREATE_NEW_CONSOLE, NULL, NULL, &StartupInfo, &ProcessInfo))
  96 + {
  97 + return -1;
  98 + }
  99 +
  100 + return -1;
  101 +
  102 +}
  103 +
... ...
update/src/util.cpp
... ... @@ -1,286 +0,0 @@
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   - return updates;
136   - }
137   -
138   - return updates;
139   -}
140   -
141   -
142   -vector<string> Util::localVersion()
143   -{
144   - XmlDocument^ xmlDocLocal;
145   - XmlNodeList^ filesLocal;
146   - vector<string> updates;
147   - try
148   - {
149   - xmlDocLocal = (gcnew XmlDocument());
150   - //xml version local
151   - StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
152   -
153   - String^ responseLocal = readerLocal->ReadToEnd();
154   -
155   - xmlDocLocal->LoadXml(responseLocal);
156   -
157   - filesLocal = xmlDocLocal->GetElementsByTagName("version");
158   -
159   - updates.push_back("playerVersion");
160   - String^ playerVersion = filesLocal[0]["playerVersion"]->InnerText;
161   - updates.push_back(clrStringTostring(playerVersion));
162   - updates.push_back("dictionaryVersion");
163   - String^ dictionaryVersion = filesLocal[0]["dictionaryVersion"]->InnerText;
164   - updates.push_back(clrStringTostring(dictionaryVersion));
165   -
166   - // Cleanup the streams and the response.
167   - readerLocal->Close();
168   - }catch(Exception^ e)
169   - {
170   - return updates;
171   - }
172   -
173   - return updates;
174   -}
175   -
176   -
177   -string Util::Download(DownloadProgressChangedEventHandler^ dpch ,string url, string fileName)
178   -{
179   - try
180   - {
181   - myWebClient = gcnew WebClient();
182   - Uri^ uri = gcnew Uri(gcnew String(url.c_str()));
183   - myWebClient->DownloadProgressChanged += dpch;
184   - myWebClient->DownloadFileCompleted += gcnew AsyncCompletedEventHandler( DownloadFileCallBack2 );
185   - String^ outPath = gcnew String(("c:\\vlibras-libs\\update\\"+fileName).c_str());
186   - myWebClient->DownloadFileAsync(uri, outPath);
187   - }catch (Exception^ e)
188   - {
189   - return "FALHA";
190   - }
191   -
192   - return "OK";
193   - }
194   -
195   -
196   -
197   - bool Util::saveNewXmlVersion(string playerVersion,string dictionaryVersion)
198   - {
199   -
200   - XmlDocument^ xmlDocLocal;
201   - XmlNodeList^ filesLocal;
202   - vector<string> updates;
203   - try
204   - {
205   - xmlDocLocal = (gcnew XmlDocument());
206   - //xml version local
207   - StreamReader^ readerLocal = gcnew StreamReader("c:\\vlibras-libs\\update\\updateVersion.xml");
208   -
209   - String^ responseLocal = readerLocal->ReadToEnd();
210   -
211   - xmlDocLocal->LoadXml(responseLocal);
212   -
213   - filesLocal = xmlDocLocal->GetElementsByTagName("version");
214   -
215   - if(!playerVersion.empty())
216   - filesLocal[0]["playerVersion"]->InnerText = gcnew String(playerVersion.c_str());
217   -
218   - if(!dictionaryVersion.empty())
219   - filesLocal[0]["dictionaryVersion"]->InnerText = gcnew String(dictionaryVersion.c_str());
220   -
221   -
222   - // Cleanup the streams and the response.
223   - readerLocal->Close();
224   -
225   - xmlDocLocal->Save("c:\\vlibras-libs\\update\\updateVersion.xml");
226   - }catch(Exception^ e)
227   - {
228   -
229   - }
230   -
231   - return true;
232   - }
233   -
234   -
235   - bool Util::extractZip(string zipFile, string outPath)
236   - {
237   - try
238   - {
239   - String^ zipPath = gcnew String(zipFile.c_str());
240   - String^ extractPath = gcnew String(outPath.c_str());
241   - ZipFile::ExtractToDirectory(zipPath, extractPath);
242   -
243   - }catch(Exception^ e)
244   - {
245   - return false;
246   - }
247   -
248   - return true;
249   - }
250   -
251   -bool Util::backup()
252   -{
253   - CHAR nome_atual[] = "c:\\vlibras-libs";
254   - // novo nome do diretório
255   - CHAR nome_novo[] = "c:\\vlibras-libs-BK";
256   -
257   - // renomear o diretório
258   - if(MoveFile(nome_atual, nome_novo)){
259   -
260   - }
261   - else{
262   - return false;
263   - }
264   - return true;
265   -}
266   -bool Util::restore()
267   -{
268   - CHAR nome_atual[] = "c:\\vlibras-libs-BK";
269   - // novo nome do diretório
270   - CHAR nome_novo[] = "c:\\vlibras-libs";
271   -
272   - // renomear o diretório
273   - if(MoveFile(nome_atual, nome_novo)){
274   - return true;
275   - }
276   - else{
277   - return false;
278   - //GetLastError() << endl;
279   - }
280   - return true;
281   -}
282   -
283   -
284   -
285   -
286   -
287 0 \ No newline at end of file
update/update-icon.ico
No preview for this file type
update/updatePython/DownloadFile.py 0 → 100644
... ... @@ -0,0 +1,87 @@
  1 +#!/usr/bin/env python
  2 +# -*- coding: utf-8 -*-
  3 +import wx
  4 +from urllib2 import URLError
  5 +from urllib2 import HTTPError
  6 +import urllib2,os
  7 +import random
  8 +import time
  9 +from wx.lib.pubsub import pub
  10 +from threading import Thread
  11 +
  12 +
  13 +
  14 +class DownloadFile():
  15 +
  16 + def __init__(self,url,nameFile):
  17 + self.url = url
  18 + self.nameFile = nameFile
  19 + self.downloading = True
  20 +
  21 + def start(self):
  22 +
  23 + file_name = self.nameFile
  24 + try:
  25 + u = urllib2.urlopen(self.url)
  26 + f = open(file_name, 'wb')
  27 + meta = u.info()
  28 + file_size = int(meta.getheaders("Content-Length")[0])
  29 +
  30 + except:
  31 +
  32 + return False
  33 +
  34 + block_sz = 8192
  35 + while self.downloading:
  36 + buffer = u.read(block_sz)
  37 + if not buffer:
  38 + self.downloading = False
  39 + f.write(buffer)
  40 +
  41 + return True
  42 +
  43 +
  44 +
  45 +class DownloadFile2(Thread):
  46 +
  47 + def __init__(self,url,nameFile):
  48 + self.url = url
  49 + self.nameFile = nameFile
  50 + self.downloading = True
  51 + Thread.__init__(self)
  52 +
  53 +
  54 + def stop(self):
  55 + self.downloading = False
  56 +
  57 +
  58 + def run(self):
  59 +
  60 + file_name = self.nameFile
  61 + try:
  62 + u = urllib2.urlopen(self.url)
  63 + f = open(file_name, 'wb')
  64 + meta = u.info()
  65 + file_size = int(meta.getheaders("Content-Length")[0])
  66 +
  67 + except :
  68 + wx.CallAfter(pub.sendMessage, "erroDeConexao", msg="Falha na conexao")
  69 + self.downloading = False;
  70 + return False
  71 +
  72 +
  73 + file_size_dl = 0
  74 + block_sz = 8192
  75 + while self.downloading:
  76 + buffer = u.read(block_sz)
  77 + if not buffer:
  78 + break
  79 +
  80 + file_size_dl += len(buffer)
  81 + f.write(buffer)
  82 + status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
  83 + status = status + chr(8)*(len(status)+1)
  84 +
  85 + wx.CallAfter(pub.sendMessage, "updateProgress", msg=(file_size_dl * 100. / file_size))
  86 + if (file_size_dl * 100. / file_size) >=100:
  87 + wx.CallAfter(pub.sendMessage, "downloadSucess", msg="Download realizado")
... ...
update/updatePython/VlibrasCheckVersion.py 0 → 100644
... ... @@ -0,0 +1,87 @@
  1 +# -*- coding: cp1252 -*-
  2 +import json, zipfile, subprocess,urllib
  3 +from os import popen
  4 +import sys
  5 +
  6 +PATH_RESOURCE = 'c:/vlibras-libs/update/'
  7 +TXT_LOCAL_VERSION = PATH_RESOURCE+'version/version.txt'
  8 +JSON_LOCAL_NAME = PATH_RESOURCE+'version/version.json'
  9 +JSON_API_NAME = PATH_RESOURCE+'download/versionApi.json'
  10 +URL_REQUEST_API = 'http://150.165.205.94:8000/versionApi.json'
  11 +
  12 +
  13 +
  14 +
  15 +def check():
  16 +
  17 + try:
  18 +
  19 + with open(JSON_LOCAL_NAME) as data_file:
  20 + json_data = json.load(data_file)
  21 +
  22 + my_dict_version_full = json_data['dictionaryVersion'].encode('utf-8')
  23 + my_player_version = json_data['playerVersion'].encode('utf-8').replace(".", "")
  24 + my_dict_version = my_dict_version_full.replace(".", "").replace("_", "")
  25 +
  26 + if(not downladFileApi(URL_REQUEST_API)):
  27 + return 'erro'
  28 +
  29 + with open(JSON_API_NAME) as data:
  30 + json_data = json.load(data)
  31 +
  32 + api_dict_version = json_data['dictionaryVersion'].encode('utf-8').replace(".", "").replace("_", "")
  33 + api_player_version = json_data['playerVersion'].encode('utf-8').replace(".", "")
  34 + url_download_player = json_data['playerUrl'].encode('utf-8')
  35 + url_download_dict = json_data['dictionaryUrl'].encode('utf-8')
  36 +
  37 +
  38 + if int(api_player_version) > int(my_player_version):
  39 + return url_download_player
  40 +
  41 + elif int(api_dict_version) > int(my_dict_version):
  42 +
  43 + return url_download_dict
  44 +
  45 + else:
  46 + return 'atualizado'
  47 +
  48 + except Exception, e:
  49 + print e
  50 + return 'erro'
  51 +
  52 +
  53 +def downladFileApi(_url):
  54 + try:
  55 +
  56 + urllib.urlretrieve (_url, JSON_API_NAME)
  57 +
  58 + return True
  59 + except Exception, e:
  60 + print e
  61 + return False
  62 +
  63 +
  64 +
  65 +
  66 +if __name__ == '__main__':
  67 + txt_local_version = open(TXT_LOCAL_VERSION, 'w')
  68 + result = check()
  69 + if result.endswith('.exe'):
  70 + txt_local_version.write('1')
  71 + elif result.endswith('.zip'):
  72 + txt_local_version.write('2')
  73 + elif (result == 'atualizado'):
  74 + txt_local_version.write('0')
  75 + else:
  76 + txt_local_version.write('-1')
  77 +
  78 + txt_local_version.close()
  79 + print result
  80 +
  81 +
  82 +
  83 +
  84 +
  85 +
  86 +
  87 +
... ...
update/updatePython/VlibrasUpdate.py 0 → 100644
... ... @@ -0,0 +1,109 @@
  1 +# -*- coding: cp1252 -*-
  2 +import json, zipfile, subprocess,urllib
  3 +from os import popen
  4 +from threading import Thread
  5 +from VlibrasUpdateInstall import*
  6 +
  7 +url_download_player =''
  8 +url_download_dict =''
  9 +PATH_RESOURCE = 'C:/vlibras-libs/update/'
  10 +JSON_LOCAL_NAME = 'version/version.json'
  11 +JSON_API_NAME = 'download/versionApi.json'
  12 +PLAYER_DICT_UPDATE_PATH = PATH_RESOURCE+'bin/vlibrasPlayerDictUp.exe '
  13 +DICTIONARY_NAME = 'download/vlibras_dicionario.zip'
  14 +INSTALL_PLAYER_NAME = 'download/Vlibras_Up.exe'
  15 +URL_REQUEST_API = 'http://vlibras.lavid.ufpb.br/api/dicionario/'
  16 +DICTIONARY_EXTRACT_PATH = 'C:/vlibras-libs/Player/VLibrasPlayer_Data/Bundles'
  17 +
  18 +
  19 +
  20 +
  21 +
  22 +
  23 +def checkVersion():
  24 +
  25 +## try:
  26 +##
  27 +## with open(PATH_RESOURCE+JSON_LOCAL_NAME) as data_file:
  28 +## json_data = json.load(data_file)
  29 +##
  30 +## my_dict_version_full = json_data['dictionaryVersion'].encode('utf-8')
  31 +## my_player_version = json_data['playerVersion'].encode('utf-8').replace(".", "")
  32 +## my_dict_version = my_dict_version_full.replace(".", "").replace("_", "")
  33 +##
  34 +## if(not downladFileApi(URL_REQUEST_API+my_dict_version_full+'?type=linux')):
  35 +## return 'erro'
  36 +##
  37 +## with open(PATH_RESOURCE+JSON_API_NAME) as data:
  38 +## json_data = json.load(data)
  39 +##
  40 +## api_dict_version = json_data['dictionaryVersion'].encode('utf-8').replace(".", "").replace("_", "")
  41 +## api_player_version = json_data['playerVersion'].encode('utf-8').replace(".", "")
  42 +## url_download_player = json_data['playerUrl'].encode('utf-8')
  43 +## url_download_dict = json_data['dictionaryUrl'].encode('utf-8')
  44 +##
  45 +##
  46 +## if int(api_player_version) > int(my_player_version):
  47 +## return url_download_player
  48 +##
  49 +## elif int(api_dict_version) > int(my_dict_version):
  50 +##
  51 +## return url_download_dict
  52 +##
  53 +## else:
  54 +## return "atualizado"
  55 +##
  56 +## except:
  57 +
  58 + return "erro"
  59 +
  60 +
  61 +def downladFileApi(_url):
  62 + try:
  63 +
  64 + urllib.urlretrieve (_url, PATH_RESOURCE+JSON_API_NAME)
  65 +
  66 + return True
  67 + except:
  68 + return False
  69 +
  70 +def installPlayer():
  71 + try:
  72 +## with open(PATH_RESOURCE+JSON_API_NAME) as data:
  73 +## json_data = json.load(data)
  74 +
  75 +## url_download_player = json_data['playerUrl'].encode('utf-8')
  76 + # install = CallInstall()
  77 + # install.start()
  78 + process = subprocess.Popen(["C:\\Python27\\python.exe", "c:\\vlibras-libs\\update\\py\\VlibrasUpdateInstall.pyc"])
  79 +## update_json_file()
  80 + except Exception, e:
  81 + print e
  82 + return -1
  83 + return 1
  84 +
  85 +def installDict():
  86 + try:
  87 +## install = CallInstall()
  88 +## install.start()
  89 +
  90 + process = subprocess.Popen(["C:\\Python27\\python.exe", "c:\\vlibras-libs\\update\\py\\VlibrasUpdateInstall.pyc"])
  91 +## with open(PATH_RESOURCE+JSON_API_NAME) as data:
  92 +## json_data = json.load(data)
  93 +## url_download_dict = json_data['dictionaryUrl'].encode('utf-8')
  94 +## process = subprocess.Popen(PLAYER_DICT_UPDATE_PATH+url_download_dict)
  95 + except Exception, e:
  96 + print e
  97 + return -1
  98 + return 1
  99 +
  100 +
  101 +if __name__ == '__main__':
  102 + print installPlayer()
  103 +
  104 +
  105 +
  106 +
  107 +
  108 +
  109 +
... ...
update/updatePython/VlibrasUpdateInstall.py 0 → 100644
... ... @@ -0,0 +1,212 @@
  1 +
  2 +# -*- coding: utf-8 -*-
  3 +
  4 +import wx
  5 +import subprocess
  6 +import time
  7 +from wx.lib.pubsub import pub
  8 +from DownloadFile import *
  9 +from VlibrasCheckVersion import *
  10 +import zipfile
  11 +
  12 +
  13 +
  14 +PATH_RESOURCE = 'C:/vlibras-libs/update/'
  15 +DICTIONARY_NAME = 'download/vlibras_dicionario.zip'
  16 +INSTALL_PLAYER_NAME = 'download/Vlibras_Up.exe'
  17 +DICTIONARY_EXTRACT_PATH = 'C:/vlibras-libs/Player/VLibrasPlayer_Data/Bundles'
  18 +
  19 +class UpdateView(wx.Frame):
  20 +
  21 + def __init__(self,_downloadFile,_serv_type):
  22 +
  23 + self.serv_type = _serv_type
  24 + self.downloadFile = _downloadFile
  25 + style = wx.SYSTEM_MENU | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX
  26 + wx.Frame.__init__(self, None, title='Atualização do VLibras', style=style,size=(480,250))
  27 + # Define o ícone para a janela
  28 + self.SetIcon(wx.Icon("c:/vlibras-libs/icons/icon_vlibras.ico", wx.BITMAP_TYPE_ICO))
  29 + self.myPanel = wx.Panel(self, -1)
  30 + self.myPanel.SetBackgroundColour('#F5F5F5')
  31 +## btnOk = wx.Button(self.myPanel, label="OK",pos=(365, 180), size=(80, 25))
  32 + btnCancel = wx.Button(self.myPanel, label="Cancelar",pos=(365, 180), size=(80, 25))
  33 + self.myText = wx.StaticText(self.myPanel, -1, pos=(5,105))
  34 + #self.myText.SetBackgroundColour('#123456')
  35 + self.myText.SetForegroundColour('#000000')
  36 + self.progress = wx.Gauge(self.myPanel, range=100,pos=(5,80),size=(463,25))
  37 + self.Center()
  38 +
  39 + # Anexa um evento ao botão
  40 +## self.Bind(wx.EVT_BUTTON, self.onBtnOkClick, btnOk)
  41 + self.Bind(wx.EVT_BUTTON, self.onBtnCancelClick, btnCancel)
  42 + self.__close_callback = None
  43 + self.Bind(wx.EVT_CLOSE, self._when_closed)
  44 +
  45 + #registra listeners na classe DownloadFile
  46 + pub.subscribe(self.downloadSucess, "downloadSucess")
  47 + pub.subscribe(self.erroDeConexao, "erroDeConexao")
  48 + pub.subscribe(self.updateProgress, "updateProgress")
  49 + self.percentDownload = 0;
  50 +
  51 +
  52 + #inicia o download do arquivo
  53 + if(self.serv_type != ''):
  54 + self.downloadFile.start()
  55 +
  56 + def erroDeConexao(self, msg):
  57 + wx.MessageBox('Ocorreu um erro ao tentar fazer atualização. \n Por favor tente mais tarde.', 'Informação',wx.OK | wx.ICON_INFORMATION)
  58 + self.Destroy()
  59 +
  60 + def register_close_callback(self, callback):
  61 + self.__close_callback = callback
  62 +
  63 + def _when_closed(self, event):
  64 + self.OnCloseFrame(event);
  65 +## event.Skip()
  66 +
  67 +
  68 +## def onBtnOkClick(self, event):
  69 +## self.downloadFile.start()
  70 +
  71 + def onBtnCancelClick(self, event):
  72 + self.OnCloseFrame(event);
  73 +
  74 +
  75 + def downloadSucess(self, msg):
  76 + self.percentDownload = 100.0
  77 + time.sleep( 2 )
  78 + if (self.serv_type == 'dict'):
  79 + with zipfile.ZipFile(PATH_RESOURCE+DICTIONARY_NAME, "r") as z:
  80 + z.extractall(DICTIONARY_EXTRACT_PATH)
  81 + self.update_json_file()
  82 + self.ShowMessage('Vlibras Atualizado com sucesso!')
  83 +
  84 + else:
  85 + self.Hide()
  86 + process = subprocess.call(PATH_RESOURCE+INSTALL_PLAYER_NAME+' /SILENT /SUPPRESSMSGBOXES /NORESTART')
  87 + self.update_json_file()
  88 + self.ShowMessage('Vlibras Atualizado com sucesso!')
  89 + self.downloadFile.stop()
  90 + self.Destroy()
  91 +
  92 +
  93 + def updateProgress(self, msg):
  94 + value = msg
  95 + val = 'Baixando'
  96 +
  97 + self.percentDownload = value
  98 + self.myText.SetLabel(val)
  99 + self.progress.SetValue(value)
  100 +
  101 + def ShowMessage(self, mesagem):
  102 + wx.MessageBox(mesagem, 'Informação',
  103 + wx.OK | wx.ICON_INFORMATION)
  104 + def ShowMessageError(self, mesagem):
  105 + wx.MessageBox(mesagem, 'Informação',
  106 + wx.OK | wx.ICON_ERROR)
  107 + self.downloadFile.stop()
  108 + self.Destroy()
  109 +
  110 +
  111 +
  112 +
  113 +
  114 + # monitora a interação do usuário no botão de fechar
  115 + def OnCloseFrame(self, event):
  116 + if(self.percentDownload>= 100):
  117 + self.downloadFile.stop()
  118 + self.Destroy()
  119 + dialog = wx.MessageDialog(self, message = "Tem certeza que deseja cancelar a atualização?", caption = "Cancelar Atualização",
  120 + style = wx.YES_NO | wx.ICON_QUESTION)
  121 + response = dialog.ShowModal()
  122 +
  123 + if (response == wx.ID_YES):
  124 + self.downloadFile.stop()
  125 +
  126 + self.Destroy()
  127 + else:
  128 + event.StopPropagation()
  129 +
  130 +
  131 + # atualiza o json local com as informações da api
  132 + def update_json_file(self):
  133 + with open(PATH_RESOURCE+JSON_API_NAME) as data:
  134 + json_data = json.load(data)
  135 +
  136 + jsonFile = open(PATH_RESOURCE+JSON_LOCAL_NAME, "w+")
  137 + jsonFile.write(json.dumps(json_data))
  138 + jsonFile.close()
  139 +
  140 +
  141 +class ShowInfo(wx.Frame):
  142 +
  143 + def __init__(self,_mesagem):
  144 + self.mesagem = _mesagem
  145 + style = wx.SYSTEM_MENU | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX
  146 + wx.Frame.__init__(self, None, title='Atualização do VLibras', style=style,size=(480,250))
  147 + def ShowMessage(self):
  148 + wx.MessageBox(self.mesagem, 'Informação',
  149 + wx.OK | wx.ICON_INFORMATION)
  150 + def ShowMessageError(self):
  151 + wx.MessageBox(self.mesagem, 'Informação',
  152 + wx.OK | wx.ICON_ERROR)
  153 +
  154 +
  155 +
  156 +
  157 +
  158 +def installDictionary(_url):
  159 + app = wx.App(False)
  160 + downloadFile2 = DownloadFile2(_url, PATH_RESOURCE+DICTIONARY_NAME)
  161 + frame = UpdateView(downloadFile2,'dict')
  162 + frame.register_close_callback(lambda: True)
  163 + frame.Show()
  164 + app.MainLoop()
  165 + print _url
  166 + return 'OK'
  167 +
  168 +def installPlayer(_url):
  169 + app = wx.App(False)
  170 + downloadFile2 = DownloadFile2(_url, PATH_RESOURCE+INSTALL_PLAYER_NAME)
  171 + frame = UpdateView(downloadFile2,'player')
  172 + frame.register_close_callback(lambda: True)
  173 + frame.Show()
  174 + app.MainLoop()
  175 + print _url
  176 + return 'OK'
  177 +
  178 +
  179 +if __name__ == '__main__':
  180 + app = wx.App(False)
  181 + result = check()
  182 + if result.endswith('.zip'):
  183 + installDictionary(result)
  184 + elif result.endswith('.exe'):
  185 + installPlayer(result)
  186 + elif (result == 'atualizado'):
  187 +## up.Show()
  188 + ShowInfo('O VLibras já está atualizado!').ShowMessage()
  189 + else:
  190 +## up.Show()
  191 + ShowInfo('Ocorreu um erro ao tentar atualizar o VLibras!').ShowMessageError()
  192 +
  193 +## app.MainLoop()
  194 +
  195 +
  196 +
  197 +def initInstall():
  198 + app = wx.App(False)
  199 + result = check()
  200 + if result.endswith('.zip'):
  201 + installDictionary(result)
  202 + elif result.endswith('.exe'):
  203 + installPlayer(result)
  204 + elif (result == 'atualizado'):
  205 +## up.Show()
  206 + ShowInfo('O VLibras já está atualizado!').ShowMessage()
  207 + else:
  208 +## up.Show()
  209 + ShowInfo('Ocorreu um erro ao tentar atualizar o VLibras!').ShowMessageError()
  210 +
  211 +## app.MainLoop()
  212 +
... ...
update/vlibrasDictPlayerInstall.cpp 0 → 100644
... ... @@ -0,0 +1,61 @@
  1 +
  2 +
  3 +#include <windows.h> //include all the basics
  4 + //string and other mapping macros
  5 +
  6 +
  7 +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  8 + LPSTR lpCmdLine, int nShowCmd)
  9 +{
  10 +
  11 + STARTUPINFO StartupInfo;
  12 + PROCESS_INFORMATION ProcessInfo;
  13 + char Args[4096];
  14 + char *pEnvCMD = NULL;
  15 + char *pDefaultCMD = "CMD.EXE";
  16 + ULONG rc;
  17 +
  18 + memset(&StartupInfo, 0, sizeof(StartupInfo));
  19 + StartupInfo.cb = sizeof(STARTUPINFO);
  20 + StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
  21 + StartupInfo.wShowWindow = SW_HIDE;
  22 +
  23 + Args[0] = 0;
  24 +
  25 + pEnvCMD = getenv("COMSPEC");
  26 +
  27 + if(pEnvCMD){
  28 +
  29 + strcpy(Args, pEnvCMD);
  30 + }
  31 + else{
  32 + strcpy(Args, pDefaultCMD);
  33 + }
  34 +
  35 + // "/c" option - Do the command then terminate the command window
  36 + strcat(Args, " /c ");
  37 + //the application you would like to run from the command window
  38 + strcat(Args, "c:\\Python27\\python.exe");
  39 + strcat(Args, " ");
  40 + //the parameters passed to the application being run from the command window.
  41 + strcat(Args, "c:\\vlibras-libs\\update\\py\\VlibrasUpdateInstall.pyc");
  42 +
  43 + if (!CreateProcess( NULL, Args, NULL, NULL, FALSE,
  44 + CREATE_NEW_CONSOLE,
  45 + NULL,
  46 + NULL,
  47 + &StartupInfo,
  48 + &ProcessInfo))
  49 + {
  50 + return GetLastError();
  51 + }
  52 +
  53 + WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  54 + if(!GetExitCodeProcess(ProcessInfo.hProcess, &rc))
  55 + rc = 0;
  56 +
  57 + CloseHandle(ProcessInfo.hThread);
  58 + CloseHandle(ProcessInfo.hProcess);
  59 +
  60 + return 0;
  61 +}
0 62 \ No newline at end of file
... ...
update/vlibrasUpdate.cpp
... ... @@ -1,172 +0,0 @@
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   -