[tuxdroid-svn] r5338 - software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-inst
Status: Beta
Brought to you by:
ks156
|
From: jerome <c2m...@c2...> - 2009-09-08 14:13:01
|
Author: jerome
Date: 2009-09-08 15:42:44 +0200 (Tue, 08 Sep 2009)
New Revision: 5338
Modified:
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Msinfo32Wrapper.pas
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Report.pas
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/SecondInstaller.dpr
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.dfm
software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
Log:
* Moved tests for each steps.
* Added some informations into the mail body.
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Msinfo32Wrapper.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Msinfo32Wrapper.pas 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Msinfo32Wrapper.pas 2009-09-08 13:42:44 UTC (rev 5338)
@@ -4,7 +4,7 @@
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ShellApi;
+ Dialogs, StdCtrls, ShellApi, ExtCtrls, WinSvc, Tlhelp32;
type
TMsinfo = class(TObject)
@@ -60,6 +60,7 @@
ret : integer;
begin
isWorking := true;
+
ret := ShellExecute_AndWait( 'open',
PChar(extractFilePath(application.ExeName) +'info.bat'),
PChar(path),
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Report.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Report.pas 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Report.pas 2009-09-08 13:42:44 UTC (rev 5338)
@@ -27,7 +27,8 @@
ShellAPI, Windows, TuxUtils, Dialogs, zLib, SysUtils, Controls, Classes,
StdCtrls, ShlObj, Msinfo32Wrapper, KAZip, Forms, IdComponent, IdMessageCoder,
IdMessageCoderMIME, IdBaseComponent, IdMessage, IdSMTP, IdIOHandler,
- IdIOHandlerSocket, IdSSLOpenSSL, WinInet, IdHttp, ComputerInfos;
+ IdIOHandlerSocket, IdSSLOpenSSL, WinInet, IdHttp, ComputerInfos,
+ Registry, TlHelp32;
{#### This object manage the Complete report creation ####}
type
@@ -45,7 +46,7 @@
procedure RMDir(directory : string);
function CreateReportDatas() : boolean;
procedure ListDir(Path:String; List:TStringList);
-
+
public
constructor Create(AOwner : TObject; TypeReport : Integer); overload;
function compressReport(AApplication : TApplication) : boolean;
@@ -63,6 +64,7 @@
Adress : string;
ReportFile : string;
function isInternetConnected() : boolean;
+ function isTuxBoxStarted() : boolean;
public
constructor Create; overload;
@@ -75,6 +77,14 @@
ERROR = 0;
INFO = 1;
+var
+ SERVER : boolean;
+ DONGLE : boolean;
+ RADIO : boolean;
+ BATERY_STATE : boolean;
+ ATTITUNE_READED : boolean;
+ TUXBOX : boolean;
+
implementation
@@ -214,7 +224,6 @@
GetDir(0, s);
if length(s) <> 3 then
s := s + '\';
- showmessage('found: ' + SearchRec.Name);
List.Add(s + SearchRec.Name);
ListDir(s + SearchRec.Name, List);
end;
@@ -227,12 +236,10 @@
if length(s) <> 3 then
begin
List.add(s + '\' + SearchRec.Name);
- showmessage('found: ' + SearchRec.Name);
end
else
begin
List.add(s + SearchRec.Name);
- showmessage('found: ' + SearchRec.Name);
end;
end;
end;
@@ -253,8 +260,8 @@
begin
computerDatas := ReportFilesDirectory + '\info.nfo';
// Get the computer informations
- //msinfo := TMsinfo.create(nil);
- //msinfo.createNfo(computerDatas);
+ msinfo := TMsinfo.create(nil);
+ msinfo.createNfo(computerDatas);
result := (CopyDir(ReportFiles, ReportFilesDirectory));
end;
@@ -262,7 +269,6 @@
//#### This function compress the log files.
function TReportMaker.compressReport(AApplication : TApplication) : boolean;
begin
- showmessage(ReportFilesDirectory);
Application := AApplication;
Result := true;
@@ -390,6 +396,12 @@
//Formating Quick vew computer informations.
body.Add(slinebreak + slinebreak + '************************* Error Infos *************************');
+ body.Add(' Transformer: ' + IntToStr( Abs( StrToInt(BoolToStr(Report.BATERY_STATE)))));
+ body.Add(' Dongle: ' + IntToStr( Abs( StrToInt(BoolToStr(Report.DONGLE)))));
+ body.Add(' Radio: ' + IntToStr( Abs( StrToInt(BoolToStr(Report.RADIO)))));
+ body.Add(' Smart Core: ' + IntToStr( Abs( StrToInt(BoolToStr(Report.SERVER)))));
+ TUXBOX := isTuxBoxStarted();
+ body.Add(' TuxBox started : ' + IntToStr( Abs( StrToInt(BoolToStr(Report.TUXBOX)))));
body.Add(slinebreak + slinebreak + '************************ ComputerInfos ************************');
@@ -406,8 +418,8 @@
ComputerInfos.wvWinVista : osType := 'Windows Vista';
end;
- body.Add(slinebreak + 'Windows version: ' + osType);
- body.Add('User locale: ' + ComputerInfos.GetUserLanguage());
+ body.Add(slinebreak + ' Windows version: ' + osType);
+ body.Add(' User locale: ' + ComputerInfos.GetUserLanguage());
IdMessage1.Body := body;
@@ -442,4 +454,37 @@
end;
+
+//Return true if TuxBox 2.0 is started, false if not.
+function TReportSender.isTuxBoxStarted() : boolean;
+var
+ ContinueLoop: BOOL;
+ FSnapshotHandle: THandle;
+ FProcessEntry32: TProcessEntry32;
+begin
+
+ FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+ FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
+ ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
+
+ Result := False;
+
+ while Integer(ContinueLoop) <> 0 do
+ begin
+ if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
+ UpperCase('TuxBox.exe')) or (UpperCase(FProcessEntry32.szExeFile) =
+ UpperCase('TuxBox.exe')))
+ then begin
+ Result := True;
+ end;
+
+ ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
+
+ end;
+
+ CloseHandle(FSnapshotHandle);
+
+end;
+
+
end.
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/SecondInstaller.dpr
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/SecondInstaller.dpr 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/SecondInstaller.dpr 2009-09-08 13:42:44 UTC (rev 5338)
@@ -8,7 +8,8 @@
Box in 'Box.pas' {Form2},
BoxOk in 'BoxOk.pas' {Form3},
Report in 'Report.pas',
- TuxGauge in 'TuxGauge.pas' {Form4};
+ TuxGauge in 'TuxGauge.pas' {Form4},
+ TestsUtils in 'TestsUtils.pas';
{$R *.res}
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/TuxUtils.pas 2009-09-08 13:42:44 UTC (rev 5338)
@@ -35,6 +35,7 @@
function isTuxDroidServerStarted() : boolean;
function KillServer(): Integer;
function isDongleConnected(states : TStringList) : boolean;
+ function isTransformerConnected(states : TStringList) : boolean;
function isSoundOn(states : TStringList) : boolean;
function isRadioConnected(states : TStringList) : boolean;
function isOnActivity(states : TStringList) : boolean;
@@ -214,6 +215,15 @@
knowed_language := 'en';
end;
+ try
+ //Searching for plugged transformer ( <batteryState> )
+ beginPos := Pos('<batteryState>', aString) + Length('<batteryState>');
+ endPos := Pos('</batteryState>', aString);
+ values.add(Copy(aString, beginPos, endPos - beginPos));
+ except on e: Exception do
+ values.add('false');
+ end;
+
end;
@@ -276,6 +286,19 @@
end;
+{#### Return the dongle state ####}
+function isTransformerConnected(states : TStringList) : boolean;
+begin
+ if states <> nil then
+ if states[4] = 'charge' then
+ result := true
+ else
+ result := false
+ else
+ result := false;
+end;
+
+
{#### Return the sound state ####}
function isSoundOn(states : TStringList) : boolean;
begin
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.dfm
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.dfm 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.dfm 2009-09-08 13:42:44 UTC (rev 5338)
@@ -1,6 +1,6 @@
object Form1: TForm1
- Left = 491
- Top = 180
+ Left = 426
+ Top = 221
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsNone
Caption = 'TuxBox 2.0'
Modified: software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-08 08:47:46 UTC (rev 5337)
+++ software_suite_v3/software/tool/tool-second-installer/trunk/tool-second-installer/Unit1.pas 2009-09-08 13:42:44 UTC (rev 5338)
@@ -175,8 +175,11 @@
Y: Integer);
procedure LogoMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
-
+ procedure startServer();
+
+
+
private
{ Darations priv }
function getAttitunePath() : string;
@@ -198,6 +201,7 @@
Form1 : TForm1;
Box1 : TForm2;
BoxOk1 : TForm3;
+ values : TStringList;
testCount : byte;
implementation
@@ -236,6 +240,7 @@
testCount := 1;
+ TuxUtils.initKnowedVars();
end;
@@ -275,6 +280,29 @@
end;
+//Start smart core and display splashscreen.
+procedure TForm1.startServer();
+begin
+ if (not TuxUtils.isTuxDroidServerStarted()) or (not TuxUtils.getStates(values)) then
+ begin
+ Form1.Enabled := False;
+ Form1.ShowSplashScreen();
+ TuxUtils.startServer(Application);
+ Form1.HideSplashScreen();
+ Steps.ActivePageIndex := 1;
+ Form1.Enabled := True;
+ if TuxUtils.isTuxDroidServerStarted() then
+ Report.SERVER := True
+ else
+ Report.SERVER := False;
+ end
+ else
+ begin
+ Report.SERVER := True;
+ end;
+end;
+
+
{#### Next button clicked ####}
procedure TForm1.NextButtonClick();
begin
@@ -284,6 +312,82 @@
case Steps.ActivePageIndex of
+ 1 :
+ //***************************************************************************//
+ //**** Step 2 on screen => Testing server state ( start it if needed ). ****//
+ begin
+ //Step 2 on screen => Testing server state ( start it if needed ).
+ startServer();
+ Report.BATERY_STATE := TuxUtils.isTransformerConnected(values);
+ end;
+
+ 2 :
+ //**************************************************//
+ //**** Step 3 on screen => Testing dongle state****//
+ begin
+ //Checking dongle state.
+ values.Clear;
+ TuxUtils.getStates(values);
+ if not TuxUtils.isDongleConnected(values) then
+ begin
+ Form1.Enabled := False;
+ Report.DONGLE := False;
+ //Checking first if it's a hardware problem.
+ if isHIDReady() then
+ begin
+ //Showing the error message.
+ BoxOk1.showMessageDialog(gettext(DONGLE_ERROR), gettext(OK));
+
+ //Refreshing informations.
+ startServer();
+ values.Clear;
+ TuxUtils.getStates(values);
+ end
+ else
+ begin
+ //Displaying HID error message.
+ BoxOk1.showMessageDialog(gettext(WINDOWS_ERROR), gettext(OK));
+ Steps.ActivePageIndex := 1;
+ NextLabel.Caption := gettext(NEXTB);
+ Next.OnMouseUp := Form1.NextMouseUp;
+ NextLabel.OnMouseUp := Form1.NextMouseUp;
+ end;
+ Form1.Enabled := True;
+ end
+ else
+ Report.DONGLE := True;
+ end;
+
+ 3 :
+ //**************************************************//
+ //**** Step 4 on screen => Testing radio state****//
+ begin
+ values.Clear;
+ TuxUtils.getStates(values);
+ if not TuxUtils.isRadioConnected(values) then
+ begin
+ Form1.Enabled := false;
+ Report.RADIO := False;
+ //Showing the error message.
+ BoxOk1.showMessageDialog(gettext(RADIO_ERROR), gettext(OK));
+
+ //Refreshing informations.
+ startServer();
+ values.Clear;
+ TuxUtils.getStates(values);
+
+ Steps.ActivePageIndex := 1;
+ NextLabel.Caption := gettext(NEXTB);
+ Next.OnMouseUp := Form1.NextMouseUp;
+ NextLabel.OnMouseUp := Form1.NextMouseUp;
+ Form1.Enabled := True;
+ end
+ else
+ begin
+ Report.RADIO := True;
+ end;
+ end;
+
4 :
begin
NextLabel.Caption := gettext(TEST);
@@ -302,7 +406,6 @@
procedure TForm1.TestButtonClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
- values : TStringList;
times : TStringList;
time : Integer;
result : Integer;
@@ -315,169 +418,117 @@
setExitEnabled(false);
setNextEnabled(false);
setPreviousEnabled(false);
- TuxUtils.initKnowedVars();
- attitunePlayed := false;
try
- if TuxUtils.isTuxDroidServerStarted() and TuxUtils.getStates(values) then
+
+ //Getting attitune play time.
+ if fileExists(ExtractFilePath(Application.ExeName) + 'attitunes\times.is2') then
begin
- //Starting dongle state.
- if TuxUtils.isDongleConnected(values) then
- begin
- if TuxUtils.isRadioConnected(values) then
- begin
+ try
+ times := TStringList.Create;
+ times.LoadFromFile(ExtractFilePath(Application.ExeName) + 'attitunes\times.is2');
+ time := strtoint(times.Values[gnugettext.GetCurrentLanguage()]);
+ times.Free;
+ except on e : Exception do
+ time := 10;
+ end;
+ end
+ else
+ begin
+ //define a defaulit.
+ time := 10;
+ end;
- //Getting attitune play time.
- if fileExists(ExtractFilePath(Application.ExeName) + 'attitunes\times.is2') then
- begin
+ //Playing Attitune only if server is started, dongle connected ,and radio connected.
+ Report.ATTITUNE_READED := TuxUtils.playAttitune(getAttitunePath());
- try
- times := TStringList.Create;
- times.LoadFromFile(ExtractFilePath(Application.ExeName) + 'attitunes\times.is2');
- time := strtoint(times.Values[gnugettext.GetCurrentLanguage()]);
- times.Free;
- except on e : Exception do
- time := 10;
- end;
+ Form1.setNextEnabled(false);
+ setPreviousEnabled(false);
- end
- else
- begin
- //define a defaulit.
- time := 10;
- end;
+ setExitEnabled(false);
+ Form1.Enabled := false;
+ //Sleeping to the attitune end.
+ sleep( ( time + 1 ) * 1000 );
- //Playing Attitune only if server is started, dongle connected ,and radio connected.
- TuxUtils.playAttitune(getAttitunePath());
+ //Ask user if something was hear
+ result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_1), gettext(YES), gettext(NO));
- Form1.setNextEnabled(false);
- setPreviousEnabled(false);
+ Form1.setNextEnabled(true);
+ setPreviousEnabled(true);
+ Form1.setExitEnabled(true);
- setExitEnabled(false);
- Form1.Enabled := false;
- //Sleeping to the attitune end.
- sleep( ( time + 1 ) * 1000 );
+ case result of
+ Box.bOk:
+ begin
+ Steps.ActivePageIndex := 5;
+ Next.Hide;
+ Previous.Hide;
+ NextLabel.Hide;
+ PreviousLabel.Hide;
+ ExitLabel.Caption := gettext(FINISH);
+ Exit.OnMouseUp := FinishButtonClick;
+ ExitLabel.OnMouseUp := FinishButtonClick;
+ end;
- //Ask questions.
+ Box.bCancel:
+ begin
+ if testCount < 2 then
+ begin
+ result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_2), gettext(OK), gettext(CANCEL));
- result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_1), gettext(YES), gettext(NO));
-
- Form1.setNextEnabled(true);
- setPreviousEnabled(true);
- Form1.setExitEnabled(true);
-
- case result of
- Box.bOk:
- begin
- Steps.ActivePageIndex := 5;
- Next.Hide;
- Previous.Hide;
- NextLabel.Hide;
- PreviousLabel.Hide;
- ExitLabel.Caption := gettext(FINISH);
- Exit.OnMouseUp := FinishButtonClick;
- ExitLabel.OnMouseUp := FinishButtonClick;
- end;
-
- Box.bCancel:
- begin
- if testCount < 2 then
- begin
- result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_2), gettext(OK), gettext(CANCEL));
-
- if result = Box.bCancel then
- begin
- Steps.ActivePageIndex := 5;
- Next.Hide;
- Previous.Hide;
- NextLabel.Hide;
- PreviousLabel.Hide;
- ExitLabel.Caption := gettext(FINISH);
- Exit.OnMouseUp := FinishButtonClick;
- ExitLabel.OnMouseUp := FinishButtonClick;
- end
- else
- begin
- if testCount < 2 then
- begin
- TuxUtils.stopServer();
- sleep(500);
- Steps.ActivePageIndex := 1;
- Inc(testCount, 1);
- NextLabel.Caption := gettext(NEXTB);
- Next.OnMouseUp := Form1.NextMouseUp;
- NextLabel.OnMouseUp := Form1.NextMouseUp;
- end;
- end;
- end
- else
- begin
- Form1.setNextEnabled(false);
- setPreviousEnabled(false);
-
- result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_3), gettext(YES), gettext(NO));
-
- if result = Box.bOk then
- begin
- sendReport(Report.ERROR);
- Application.Terminate;
- end
- else
- begin
- Steps.ActivePageIndex := 5;
- Next.Hide;
- Previous.Hide;
- NextLabel.Hide;
- PreviousLabel.Hide;
- ExitLabel.Caption := gettext(FINISH);
- Exit.OnMouseUp := FinishButtonClick;
- ExitLabel.OnMouseUp := FinishButtonClick;
- end;
- end;
- end;
+ if result = Box.bCancel then
+ begin
+ Steps.ActivePageIndex := 5;
+ Next.Hide;
+ Previous.Hide;
+ NextLabel.Hide;
+ PreviousLabel.Hide;
+ ExitLabel.Caption := gettext(FINISH);
+ Exit.OnMouseUp := FinishButtonClick;
+ ExitLabel.OnMouseUp := FinishButtonClick;
+ end
+ else
+ begin
+ if testCount < 2 then
+ begin
+ TuxUtils.stopServer();
+ sleep(500);
+ Steps.ActivePageIndex := 1;
+ Inc(testCount, 1);
+ NextLabel.Caption := gettext(NEXTB);
+ Next.OnMouseUp := Form1.NextMouseUp;
+ NextLabel.OnMouseUp := Form1.NextMouseUp;
+ end;
end;
-
- //Re-validate the form.
- Form1.Enabled := true;
end
-
- else //Radio not detected.
- begin
- //Showing the error message.
- BoxOk1.showMessageDialog(gettext(RADIO_ERROR), gettext(OK));
- Steps.ActivePageIndex := 1;
- NextLabel.Caption := gettext(NEXTB);
- Next.OnMouseUp := Form1.NextMouseUp;
- NextLabel.OnMouseUp := Form1.NextMouseUp;
- end;
- end //Dongle not connected.
-
else
begin
- //Checking first if it's a hardware problem.
- if isHIDReady() then
+ Form1.setNextEnabled(false);
+ setPreviousEnabled(false);
+
+ result := Box1.showMessageDialog(gettext(SCREEN_5_CHOICE_3), gettext(YES), gettext(NO));
+
+ if result = Box.bOk then
begin
- //Showing the error message.
- BoxOk1.showMessageDialog(gettext(DONGLE_ERROR), gettext(OK));
+ sendReport(Report.ERROR);
+ Application.Terminate;
end
else
begin
- //Displaying HID error message.
- BoxOk1.showMessageDialog(gettext(WINDOWS_ERROR), gettext(OK));
- Steps.ActivePageIndex := 1;
- NextLabel.Caption := gettext(NEXTB);
- Next.OnMouseUp := Form1.NextMouseUp;
- NextLabel.OnMouseUp := Form1.NextMouseUp;
+ Steps.ActivePageIndex := 5;
+ Next.Hide;
+ Previous.Hide;
+ NextLabel.Hide;
+ PreviousLabel.Hide;
+ ExitLabel.Caption := gettext(FINISH);
+ Exit.OnMouseUp := FinishButtonClick;
+ ExitLabel.OnMouseUp := FinishButtonClick;
end;
end;
- end
- else
- //Starting the server and Display error message.
- begin
- Form1.ShowSplashScreen();
- TuxUtils.startServer(Application);
- Form1.HideSplashScreen();
- BoxOk1.showMessageDialog(gettext(SERVER_RESTART), gettext(OK));
+ end;
end;
+
+ //Re-validate the form.
+ Form1.Enabled := true;
Except
setExitEnabled(true);
setNextEnabled(true);
|