diff --git a/utilities/tags/paradiseo-1.1-installer/img/paradiseo.bmp b/utilities/tags/paradiseo-1.1-installer/img/paradiseo.bmp new file mode 100644 index 000000000..c836a2fdb Binary files /dev/null and b/utilities/tags/paradiseo-1.1-installer/img/paradiseo.bmp differ diff --git a/utilities/tags/paradiseo-1.1-installer/img/paradiseo.ico b/utilities/tags/paradiseo-1.1-installer/img/paradiseo.ico new file mode 100644 index 000000000..0307e1da9 Binary files /dev/null and b/utilities/tags/paradiseo-1.1-installer/img/paradiseo.ico differ diff --git a/utilities/tags/paradiseo-1.1-installer/paradiseo_installer_script.iss b/utilities/tags/paradiseo-1.1-installer/paradiseo_installer_script.iss new file mode 100644 index 000000000..a254469bd --- /dev/null +++ b/utilities/tags/paradiseo-1.1-installer/paradiseo_installer_script.iss @@ -0,0 +1,781 @@ +; ParadisEO install script +; Author: Thomas Legrand + +#define cmakeLookupWizardPageIndex= 8 +#define generatorWizardPageIndex= 8 +#define buildModeWizardPageIndex= 9 +#define launchBuildWizardPageIndex= 12 + +#define ctestMemCheckDummyError= 16 +#define dartSubmissionError= 64 + +//***************************************************************************************// +//********** ParadisEO Specific strategy - The rest of the code is generic ************* // +//***************************************************************************************// + +// where will the installer be created ? +#define OutputPath="E:\software\paradisEO\windows installer\compiler output" + +// installer source info +#define ParadiseoSourceTag="E:\software\paradisEO\repository\tags\paradiseo-1.1\*" +#define EoTag="E:\software\eo\repository\*" + +// installer description info +#define Version="1.1" +#define VersionMain="ParadisEO-1.1" +#define InstallerName="paradiseo-1.1-installer" +#define ApplicationName="ParadisEO" +#define SetupIconPath="E:\software\paradisEO\repository\utilities\trunk\windows\img\paradiseo.ico" +#define WizardMainImage="E:\software\paradisEO\repository\utilities\trunk\windows\img\paradiseo.bmp" +#define SkipParadiseoFiles="lib,installParadisEO.sh,paradiseo-peo,.mpd.conf" +#define LicenceFile="E:\software\paradisEO\repository\trunk\LICENSE" +#define FinalInstructions="E:\software\paradisEO\repository\utilities\trunk\windows\final_instructions.txt" + +// additionnal info +#define Company="INRIA" +#define AboutUS="INRIA Futurs Dolphin Project-team" +#define PublisherURL="http://paradiseo.gforge.inria.fr" +#define SupportURL="http://paradiseo.gforge.inria.fr" +#define UpdatesURL="http://paradiseo.gforge.inria.fr" + +// logger +#define InstallLogger="logger " + +//***************************************************************************************// + +[Setup] +AppName={#ApplicationName} +AppVerName={#VersionMain} +AppPublisher={#AboutUS} +AppPublisherURL={#PublisherURL} +AppSupportURL={#SupportURL} +AppUpdatesURL={#UpdatesURL} +DefaultDirName={pf}\{#ApplicationName} +DefaultGroupName={#ApplicationName} +LicenseFile={#LicenceFile} +OutputDir={#OutputPath} +OutputBaseFilename={#InstallerName} +Compression=lzma/max +SolidCompression=yes +WizardImageFile={#WizardMainImage} +SetupIconFile={#SetupIconPath} +UninstallDisplayName={#ApplicationName} +WindowVisible=False +RestartIfNeededByRun=False +ShowTasksTreeLines=True +VersionInfoVersion={#Version} +VersionInfoCompany={#Company} +VersionInfoDescription={#ApplicationName} +VersionInfoTextVersion={#ApplicationName} +SetupLogging=yes + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" +Name: "french"; MessagesFile: "compiler:Languages\French.isl" + +[CustomMessages] +english.CMakeMissing=CMake cannot be found on your computer. You must have CMake installed to use ParadisEO. +english.FullInstall=Full installation +english.CustomInstall=Custom installation +english.EoDescription=EO: Evolving Objects: Library for evolutionnary computation +english.MoDescription=MO: Moving Objects: Single based metaheuristics computation +english.MoeoDescription=MOEO: Multi Objective Evolving Objects +english.ErrorOccured=An error has occured +english.LaunchingBuildProcess=Launching CMake build process and the compilation... +english.LaunchingEOBuildProcess=Configuring ParadisEO-EO... +english.LaunchingMOBuildProcess=Configuring ParadisEO-MO... +english.LaunchingMOEOBuildProcess=Configuring ParadisEO-MOEO... +english.LaunchingEOCompilation=Compiling ParadisEO-EO... +english.LaunchingMOCompilation=Compiling ParadisEO-MO... +english.LaunchingMOEOCompilation=Compiling ParadisEO-MOEO... +english.error=Error +english.ErrorAbort=Error,abort. +english.CannotCompleteInstall=Impossible to complete the install of +english.BPFinished=Finished +english.BPSuccessfull=The installation has been successfully performed. +english.SelectCompiler=Select the program you want to use to compile: +english.ChooseGeneratorTitle=ParadisEO compilation +english.ChooseGeneratorSubtitle=Compiler selection +english.GenCMakeFiles=CMake configuration +english.BuildProcess=CMake configuration files generation and compilation +english.NextGenCaption=Click on the 'Next' button to launch CMake and compile ... +english.ProcessingCMake=Configuration and compilation +english.DolphinMsg=ParadisEO: An INRIA Dolphin Team project - Program developped by Thomas Legrand +english.BuildMode=Build and compilation mode. +english.SelectBuildMode=Please select the build and compilation mode: +english.Recommended=(recommended) +english.AcceptSendReport=I agree that the installation report will be sent to the DOLPHIN Team. +english.NoInfoSend1=Neither personal information nor data refering your computer will be sent. +english.NoInfoSend2=I could get a personalized and adapted support. +english.PathToCMakeTitle=Path to CMake +english.PathToCMakeSubTitle=CMake has not been found by the assistant. Please select the directory where CMake is installed on your computer +english.CMakeNotFound=The CMake binaries cannot be found in this directory +english.CMakeDownloadMsg=CMake available for download at: +english.NextGenCaptionPgmBegin= Notice that the generator you chose must be installed on your computer. + +french.CMakeMissing=CMake n'a pas été détecté sur votre ordinateur. CMake doit être installé pour utiliser ParadisEO. +french.FullInstall=Installation complète +french.CustomInstall=Installation personnalisée +french.EoDescription= EO: Evolving Objects: Librairie dédiée aux méthodes évolutionnaires +french.MoDescription= MO: Moving Objects: Métaheuristiques à base de solutions uniques +french.MoeoDescription= MOEO: Multi Objective Evolving Objects: Module multi-objectif +french.ErrorOccured=Une erreur est survenue +french.LaunchingBuildProcess=Construction des fichiers de configuration... +french.LaunchingEOBuildProcess=Configuration de ParadisEO-EO... +french.LaunchingMOBuildProcess=Configuration de ParadisEO-MO... +french.LaunchingMOEOBuildProcess=Configuration de ParadisEO-MOEO... +french.LaunchingEOCompilation=Compilation de ParadisEO-EO... +french.LaunchingMOCompilation=Compilation de ParadisEO-MO... +french.LaunchingMOEOCompilation=Compilation de ParadisEO-MOEO.. +french.error=Erreur +french.ErrorAbort=Une erreur est survenue, installation annulée. +french.CannotCompleteInstall=Impossible de terminer l'installation de +french.BPFinished=Fin de l'installation +french.BPSuccessfull=Succès. +french.SelectCompiler=Sélectionnez le programme que vous souhaitez utiliser pour compiler: +french.ChooseGeneratorTitle=Compilation de ParadisEO +french.ChooseGeneratorSubtitle=Selection du compilateur à utiliser +french.GenCMakeFiles=Configuration CMake +french.BuildProcess=Génération des fichiers de configuration CMake et compilation +french.NextGenCaption=Cliquez sur le bouton 'Suivant' pour lancer CMake et compiler. +french.ProcessingCMake=Configuration et compilation +french.DolphinMsg=ParadisEO: Un projet de l'équipe INRIA Dolphin - Programme réalisé par Thomas Legrand +french.BuildMode=Choix du mode de compilation. +french.SelectBuildMode=Veuillez sélectionner le type de compilation : +french.Recommended=(recommandé) +french.AcceptSendReport=Je souhaite que le rapport d'installation soit envoyé à l'équipe DOLPHIN. +french.NoInfoSend1=Aucune information personnelle ou liée à mon poste de travail ne sera transmise. +french.NoInfoSend2=Je pourrais bénéficier d'un support personnalisé et adapté. +french.PathToCMakeTitle=Chemin vers CMake +french.PathToCMakeSubTitle=CMake n'a pas été trouvé par l'assistant. Veuillez sélectionner le répertoire d'installation de CMake sur votre ordinateur +french.CMakeNotFound=Les exécutables CMake sont introuvables dans ce répertoire +french.CMakeDownloadMsg=CMake téléchargeable à l'adresse: +french.NextGenCaptionPgmBegin= Notez que le générateur que vous avez sélectionné doit être installé sur votre ordinateur. + + +[Types] +Name: "custom"; Description: {cm:CustomInstall}; Flags: iscustom +Name: "full"; Description: {cm:FullInstall} + +[Components] +Name: eo; Description: {cm:EoDescription}; Types: full custom; Flags: fixed +Name: mo; Description:{cm:MoDescription}; Types: full custom; +Name: moeo; Description: {cm:MoeoDescription}; Types: full custom; + + +[Files] +Source: {#ParadiseoSourceTag}; DestDir: "{app}"; Excludes: {#SkipParadiseoFiles} ; Flags: ignoreversion recursesubdirs createallsubdirs +Source: {#EoTag}; DestDir: "{app}"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs + +; SPECIFIC CORRECTION - EO TAG NOT MODIFIED, USED TRUNK SOURCES +Source: E:\software\eo\repository\paradiseo-eo\CMakeLists.txt ; DestDir: "{app}\paradiseo-eo"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs +Source: E:\software\eo\repository\paradiseo-eo\src\utils\pipecom.h; DestDir: "{app}\paradiseo-eo\src\utils"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs +Source: E:\software\eo\repository\paradiseo-eo\src\utils\pipecom.cpp; DestDir: "{app}\paradiseo-eo\src\utils"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs +Source: E:\software\eo\repository\paradiseo-eo\src\eoCtrlCContinue.h; DestDir: "{app}\paradiseo-eo\src"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs +Source: E:\software\eo\repository\paradiseo-eo\src\eoCtrlCContinue.cpp; DestDir: "{app}\paradiseo-eo\src"; Excludes: "*.~*" ; Flags: ignoreversion recursesubdirs createallsubdirs + +[Dirs] +Name: {app}\logs + +[Code] +var + GeneratorPage: TWizardPage; + BuildModePage: TWizardPage; + BuildProcessPage: TWizardPage; + CMakeLookupPage: TWizardPage; + ProgressPage: TOutputProgressWizardPage; + GeneratorBox: TNewCheckListBox; + BuildModeBox: TNewCheckListBox; + SendReportBox: TCheckBox; + Generator: String; + CTestConfig: String; + CMakeBinDir: String; + ProgressBarLabel: TLabel; + ProgressBar: TNewProgressBar; + FolderTreeView: TFolderTreeView; + CMakeAdditionalTags: String; + OkToCopyLog : Boolean; + TodaysName : String; + + +function GetToday : String; +begin + Result := GetDateTimeString ('yyyy/mm/dd', '-', #0); +end; + +function GetTodaysName (Param: String): String; +begin + if ('' = TodaysName) then + begin + TodaysName := GetToday (); + end; + Result := TodaysName; +end; + +procedure SetCmakeGenerator(); +begin + if GeneratorBox.Checked[1] then + begin + Generator:='Visual Studio 9 2008' ; + exit; + end; + if GeneratorBox.Checked[2] then + begin + Generator:='Visual Studio 9 2008 Win64' ; + exit; + end; + if GeneratorBox.Checked[3] then + begin + Generator:='Visual Studio 8 2005' ; + exit; + end; + if GeneratorBox.Checked[4] then + begin + Generator:='Visual Studio 8 2005 Win64' ; + exit; + end; + if GeneratorBox.Checked[5] then + begin + Generator:='Visual Studio 7 .NET 2003' ; + exit; + end; + if GeneratorBox.Checked[6] then + begin + Generator:='Visual Studio 7' ; + exit; + end; + if GeneratorBox.Checked[7] then + begin + Generator:='Visual Studio 6' ; + exit; + end; + if GeneratorBox.Checked[8] then + begin + Generator:='NMake Makefiles' ; + exit; + end; + if GeneratorBox.Checked[9] then + begin + Generator:='MinGW Makefiles' ; + exit; + end; + if GeneratorBox.Checked[10] then + begin + Generator:='Borland Makefiles' ; + exit; + end; + if GeneratorBox.Checked[11] then + begin + Generator:='MSYS Makefiles' ; + exit; + end; + if GeneratorBox.Checked[12] then + begin + Generator:='Watcom WMake' ; + exit; + end; +end; + + +procedure SetCTestConfig(); +var + MinConfig: String; +begin + MinConfig:=' -D ExperimentalStart -D ExperimentalBuild' ; + + if SendReportBox.Checked then + begin + CTestConfig:= MinConfig + ' -D ExperimentalSubmit' ; + end; + + if BuildModeBox.Checked[1] then + begin + CMakeAdditionalTags:= ' -DENABLE_CMAKE_TESTING=FALSE'; + exit; + end; + if BuildModeBox.Checked[2] then + begin + CTestConfig:=CTestConfig + ' -D ExperimentalTest' ; + CMakeAdditionalTags:= ' -DENABLE_CMAKE_TESTING=TRUE'; + exit; + end; +end; + +function isError(ErrorCode: Integer; PrintMsgBox: Boolean): Boolean; +begin + if not (ErrorCode = 0) then + begin + if(ErrorCode = {#ctestMemCheckDummyError}) then begin + Result:= false; + exit; + end; + if(ErrorCode = {#dartSubmissionError}) then begin + Result:= false; + exit; + end; + if(PrintMsgBox) then begin + MsgBox(CustomMessage('ErrorOccured') + ': [code='+ IntToStr(ErrorCode) + ']' + ' [' + SysErrorMessage(ErrorCode) + ']' , mbCriticalError, mb_Ok); + end; + Result:= true; + + end else begin + Result:= false; + end; +end; + + +function checkCMakeAvailable(Path: String): Integer; +var + ErrorCode: Integer; +begin + ShellExec('open', Path + 'cmake.exe','','', SW_SHOWMINIMIZED, ewWaitUntilTerminated, ErrorCode); + Result:= ErrorCode; +end; + + + +function LaunchEOBuildProcess():Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + Log('[LaunchEOBuildProcess] [begin]'); + + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CMake for EO + Log('[LaunchEOBuildProcess] Launching: ' + CMakeBinDir + 'cmake.exe' + ' ..\' + ' -G"' + Generator + '"' + CMakeAdditionalTags); + Log('[LaunchEOBuildProcess] From: ' + FilePath +'\paradiseo-eo\build'); + ShellExec ('open',CMakeBinDir + 'cmake.exe',' ..\' + ' -G"' + Generator + '"' + CMakeAdditionalTags, FilePath +'\paradiseo-eo\build', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode); + Log('[LaunchEOBuildProcess] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchEOBuildProcess] [End]'); + Result:= ErrorCode; +end; + + +function LaunchEOCompilation():Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + Log('[LaunchEOCompilation] [begin]'); + + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CTest for EO + Log('[LaunchEOCompilation] Launching: ' + CMakeBinDir + ' ctest.exe ' + CTestConfig); + Log('[LaunchEOCompilation] From: ' + FilePath +'\paradiseo-eo\build'); + Exec(ExpandConstant ('{sys}\CMD.EXE'), ' /C ' + '"' + CMakeBinDir + 'ctest.exe' + ' "' + CTestConfig + ' > build-eo-' + GetTodaysName ('') + '.log',FilePath +'\paradiseo-eo\build', SW_SHOWNORMAL, ewWaitUntilTerminated,ErrorCode); + FileCopy (FilePath +'\paradiseo-eo\build\build-eo-' + GetTodaysName ('') + '.log', ExpandConstant ('{app}\logs\build-eo-') + GetTodaysName ('') + '.log' , FALSE); + Log('[LaunchEOCompilation] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchEOCompilation] [End]'); + Result:= ErrorCode; +end; + + +function LaunchMOBuildProcess(): Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + Log('[LaunchMOBuildProcess] [begin]'); + + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CMake for MO + Log('[LaunchMOBuildProcess] Launching: ' + CMakeBinDir + 'cmake.exe' + ' ..\' + ' -G"' + Generator + '" -Dconfig="'+FilePath + '\install.cmake"' + CMakeAdditionalTags); + Log('[LaunchMOBuildProcess] From: ' + FilePath +'\paradiseo-mo\build'); + ShellExec('open',CMakeBinDir+ 'cmake.exe ',' ..\' + ' -G"' + Generator + '" -Dconfig="'+FilePath + '\install.cmake"' + CMakeAdditionalTags,FilePath +'\paradiseo-mo\build', SW_SHOWNORMAL, ewWaitUntilTerminated, Errorcode); + Log('[LaunchMOBuildProcess] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchMOBuildProcess] [End]'); + Result:= ErrorCode; +end; + + +function LaunchMOCompilation():Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + Log('[LaunchMOCompilation] [begin]'); + + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CTest for MO + Log('[LaunchMOCompilation] Launching: ' + CMakeBinDir + ' ctest.exe ' + CTestConfig); + Log('[LaunchMOCompilation] From: ' + FilePath +'\paradiseo-mo\build'); + Exec(ExpandConstant ('{sys}\CMD.EXE'), ' /C ' + '"' + CMakeBinDir + 'ctest.exe' + ' "' + CTestConfig + ' > build-mo-' + GetTodaysName ('') + '.log',FilePath +'\paradiseo-mo\build', SW_SHOWNORMAL, ewWaitUntilTerminated,ErrorCode); + FileCopy (FilePath +'\paradiseo-mo\build\build-mo-' + GetTodaysName ('') + '.log', ExpandConstant ('{app}\logs\build-mo-') + GetTodaysName ('') + '.log' , FALSE); + Log('[LaunchMOCompilation] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchMOCompilation] [End]'); + Result:= ErrorCode; +end; + + +function LaunchMOEOBuildProcess(): Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CMake for MOEO + Log('[LaunchMOEOBuildProcess] Launching: ' + CMakeBinDir + 'cmake.exe' + ' ..\' + ' -G"' + Generator + '" -Dconfig="'+FilePath + '\install.cmake"' + CMakeAdditionalTags); + Log('[LaunchMOEOBuildProcess] From: ' + FilePath +'\paradiseo-moeo\build'); + ShellExec('open', CMakeBinDir + 'cmake.exe', ' ..\' + ' -G"' + Generator + '" -Dconfig="'+FilePath + '\install.cmake"' + CMakeAdditionalTags, FilePath +'\paradiseo-moeo\build', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode); + Log('[LaunchMOEOBuildProcess] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchMOEOBuildProcess] [End]'); + Result:= ErrorCode; + Result:= ErrorCode; +end; + + +function LaunchMOEOCompilation():Integer; +var + ErrorCode: Integer; + FilePath: String; +begin + Log('[LaunchMOEOCompilation] [begin]'); + + // Need the app path + FilePath := ExpandConstant('{app}'); + + // launch CTest for MOEO + Log('[LaunchMOEOCompilation] Launching: ' + CMakeBinDir + ' ctest.exe ' + CTestConfig); + Log('[LaunchMOEOCompilation] From: ' + FilePath +'\paradiseo-moeo\build'); + Exec(ExpandConstant ('{sys}\CMD.EXE'), ' /C ' + '"' + CMakeBinDir + 'ctest.exe' + ' "' + CTestConfig + ' > build-moeo-' + GetTodaysName ('') + '.log',FilePath +'\paradiseo-moeo\build', SW_SHOWNORMAL, ewWaitUntilTerminated,ErrorCode); + FileCopy (FilePath +'\paradiseo-moeo\build\build-moeo-' + GetTodaysName ('') + '.log', ExpandConstant ('{app}\logs\build-moeo-') + GetTodaysName ('') + '.log' , FALSE); + Log('[LaunchMOEOCompilation] Error code=' + IntToStr(ErrorCode)); + Log('[LaunchMOEOCompilation] [End]'); + Result:= ErrorCode; +end; + + +procedure updateProgressBar(StartFrom: Integer;ProgressPurcentage: Integer); +var + I: Integer; +begin + try + for I := StartFrom to ProgressPurcentage do begin + ProgressPage.SetProgress(I, 100); + Sleep(50); + end; + finally + end; +end; + + +function NextButtonClick(CurPageID: Integer): Boolean; +begin + + if (CurPageID = BuildProcessPage.ID) then + begin + ProgressPage.SetText('',CustomMessage('LaunchingBuildProcess')); + updateProgressBar(0,0); + ProgressPage.Show; + + SetCmakeGenerator(); + SetCTestConfig(); + + updateProgressBar(0,5); + //***************** EO ************************* + ProgressPage.SetText('',CustomMessage('LaunchingEOBuildProcess')); + if (isError(launchEOBuildProcess(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-EO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(5,20); + + ProgressPage.SetText('',CustomMessage('LaunchingEOCompilation')); + if (isError(LaunchEOCompilation(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-EO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(20,50); + + + //***************** MO ************************* + if IsComponentSelected('mo') then + begin + ProgressPage.SetText('',CustomMessage('LaunchingMOBuildProcess')); + if (isError(launchMOBuildProcess(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-MO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(50,60); + + ProgressPage.SetText('',CustomMessage('LaunchingMOCompilation')); + if (isError(LaunchMOCompilation(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-MO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(60,80); + end else + updateProgressBar(50,60); + + //***************** MOEO ************************* + if IsComponentSelected('moeo') then + begin + ProgressPage.SetText('',CustomMessage('LaunchingMOEOBuildProcess')); + if (isError(launchMOEOBuildProcess(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-MOEO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(60,75); + + ProgressPage.SetText('',CustomMessage('LaunchingMOEOCompilation')); + if (isError(LaunchMOEOCompilation(),true)) then + begin + ProgressPage.SetText(CustomMessage('Error'), CustomMessage('ErrorAbort')); + MsgBox(CustomMessage('CannotCompleteInstall')+' ParadisEO-MOEO' , mbCriticalError, mb_Ok); + ProgressPage.Hide; + Result := True; + exit; + end; + updateProgressBar(75,100); + end else + updateProgressBar(60,100); + + ProgressPage.SetText(CustomMessage('BPFinished'), CustomMessage('BPSuccessfull')); + sleep(2000); + ProgressPage.Hide; + end; + Result := True; +end; + + +function Skeleton_NextButtonClick(Page: TWizardPage): Boolean; +begin + { Get the Cmake directory provided by the user } + CMakeBinDir:= FolderTreeView.Directory + '\'; + if isError(checkCMakeAvailable(CMakeBinDir),false) then begin + CMakeBinDir:= FolderTreeView.Directory + '\' + 'bin\'; + if isError(checkCMakeAvailable(CMakeBinDir),false) then begin + MsgBox(CustomMessage('CMakeNotFound'), mbCriticalError, mb_Ok); + Result := False; + exit; + end else + Result := True; exit; + + MsgBox(CustomMessage('CMakeNotFound'), mbCriticalError, mb_Ok); + Result := False; + end else + Result := True; +end; + + +Procedure CMakeURLLabelOnClick(Sender: TObject); +var + ErrorCode: Integer; +begin + ShellExec('open', 'http://www.cmake.org/HTML/Download.html', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); +end; + + + +procedure CreateTheWizardPages; +var + Lbl1,Lbl2,Lbl3,Lbl4,Lbl5,Lbl6: TLabel; + CMakeURLLabel: TNewStaticText; +begin + + if (isError(checkCMakeAvailable(''),False)) then begin + CMakeLookupPage := CreateCustomPage({#cmakeLookupWizardPageIndex},CustomMessage('PathToCMakeTitle'),CustomMessage('PathToCMakeSubtitle')); + FolderTreeView := TFolderTreeView.Create(CMakeLookupPage); + FolderTreeView.Top := ScaleY(40) + FolderTreeView.Width := CMakeLookupPage.SurfaceWidth; + FolderTreeView.Height := CMakeLookupPage.SurfaceHeight; + FolderTreeView.Parent := CMakeLookupPage.Surface; + FolderTreeView.Directory := ''; + + Lbl4 := TLabel.Create(CMakeLookupPage); + Lbl4.Top := ScaleY(20); + Lbl4.Caption := CustomMessage('CMakeDownloadMsg'); + Lbl4.AutoSize := True; + Lbl4.Parent := CMakeLookupPage.Surface; + Lbl4.Font.Size := 8 ; + Lbl4.Top := ScaleY(0); + Lbl4.Left := ScaleX(5); + + CMakeURLLabel := TNewStaticText.Create(CMakeLookupPage); + CMakeURLLabel.Caption := 'http://www.cmake.org/HTML/Download.html'; + CMakeURLLabel.Cursor := crHand; + CMakeURLLabel.OnClick:= @CMakeURLLabelOnClick; + CMakeURLLabel.Parent := CMakeLookupPage.Surface; + CMakeURLLabel.Font.Style := CMakeURLLabel.Font.Style + [fsUnderline]; + CMakeURLLabel.Font.Color := clBlue; + CMakeURLLabel.Top := ScaleY(0); + CMakeURLLabel.Left := ScaleX(170); + + CMakeLookupPage.OnNextButtonClick := @Skeleton_NextButtonClick; + end; + + GeneratorPage := CreateCustomPage({#generatorWizardPageIndex}, CustomMessage('ChooseGeneratorTitle'), CustomMessage('ChooseGeneratorSubtitle')); + GeneratorBox := TNewCheckListBox.Create(GeneratorPage); + GeneratorBox.Top := ScaleY(0); + GeneratorBox.Width := GeneratorPage.SurfaceWidth; + GeneratorBox.Height := ScaleY(250); + GeneratorBox.BorderStyle := bsNone; + GeneratorBox.ParentColor := True; + GeneratorBox.MinItemHeight := WizardForm.TasksList.MinItemHeight; + GeneratorBox.ShowLines := False; + GeneratorBox.WantTabs := True; + GeneratorBox.Parent := GeneratorPage.Surface; + GeneratorBox.AddGroup(CustomMessage('SelectCompiler'), '', 0, nil); + GeneratorBox.AddRadioButton('Visual Studio 9 2008', '', 0, True, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 9 2008 Win64', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 8 2005', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 8 2005 Win64', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 7 .NET 2003', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 7', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Visual Studio 6', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('NMake', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('MinGW', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Borland', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('MSYS', '', 0, False, True, nil); + GeneratorBox.AddRadioButton('Watcom WMake', '', 0, False, True, nil); + + + BuildProcessPage := CreateCustomPage({#launchBuildWizardPageIndex},CustomMessage('GenCMakeFiles'),CustomMessage('BuildProcess')); + + BuildModePage := CreateCustomPage({#buildModeWizardPageIndex}, CustomMessage('BuildMode'), ''); + BuildModeBox := TNewCheckListBox.Create(BuildModePage); + BuildModeBox.Top := ScaleY(0); + BuildModeBox.Width := BuildModePage.SurfaceWidth; + BuildModeBox.Height := ScaleY(80); + BuildModeBox.BorderStyle := bsNone; + BuildModeBox.ParentColor := True; + BuildModeBox.MinItemHeight := WizardForm.TasksList.MinItemHeight; + BuildModeBox.ShowLines := False; + BuildModeBox.WantTabs := True; + BuildModeBox.Parent := BuildModePage.Surface; + BuildModeBox.AddGroup(CustomMessage('SelectBuildMode'), '', 0, nil); + BuildModeBox.AddRadioButton('Normal = Release ' + CustomMessage('Recommended'), '', 0, True, True, nil); + BuildModeBox.AddRadioButton('Debug', '', 0, False, True, nil); + + SendReportBox := TCheckBox.Create(BuildModePage); + SendReportBox.Top := BuildModeBox.Top + BuildModeBox.Height + ScaleY(90); + SendReportBox.Width := BuildModePage.SurfaceWidth; + SendReportBox.Height := ScaleY(15); + SendReportBox.Caption := CustomMessage('AcceptSendReport'); + SendReportBox.Checked := True; + SendReportBox.Parent := BuildModePage.Surface; + SendReportBox.Font.Size := 7; + + Lbl1 := TLabel.Create(BuildModePage); + Lbl1.Top := SendReportBox.Top + SendReportBox.Height + ScaleY(5); + Lbl1.Caption := CustomMessage('NoInfoSend1'); + Lbl1.AutoSize := True; + Lbl1.Parent := BuildModePage.Surface; + Lbl1.Font.Size := 7 ; + Lbl1.Left := 15; + + Lbl2 := TLabel.Create(BuildModePage); + Lbl2.Top := Lbl1.Top + Lbl1.Height + ScaleY(5); + Lbl2.Caption := CustomMessage('NoInfoSend2'); + Lbl2.AutoSize := True; + Lbl2.Parent := BuildModePage.Surface; + Lbl2.Font.Size := 7 ; + Lbl2.Left := 15; + + Lbl3 := TLabel.Create(BuildProcessPage); + Lbl3.Top := ScaleY(20); + Lbl3.Caption :=CustomMessage('NextGenCaption'); + Lbl3.AutoSize := True; + Lbl3.Parent := BuildProcessPage.Surface; + + Lbl5 := TLabel.Create(BuildProcessPage); + Lbl5.Top := ScaleY(40); + Lbl5.Left := ScaleX(-3); + Lbl5.Caption :=CustomMessage('NextGenCaptionPgmBegin'); + Lbl5.AutoSize := True; + Lbl5.Parent := BuildProcessPage.Surface; + + ProgressPage := CreateOutputProgressPage(CustomMessage('ProcessingCMake'),CustomMessage('BuildProcess')); +end; + +procedure AboutButtonOnClick(Sender: TObject); +begin + MsgBox(CustomMessage('DolphinMsg'), mbInformation, mb_Ok); +end; + + +procedure URLLabelOnClick(Sender: TObject); +var + ErrorCode: Integer; +begin + ShellExec('open', 'http://paradiseo.gforge.inria.fr', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); +end; + + +procedure InitializeWizard(); +var + AboutButton, CancelButton: TButton; + URLLabel: TNewStaticText; +begin + CreateTheWizardPages; + CancelButton := WizardForm.CancelButton; + + AboutButton := TButton.Create(WizardForm); + AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width - ScaleX(5); + AboutButton.Top := CancelButton.Top; + AboutButton.Width := CancelButton.Width; + AboutButton.Height := CancelButton.Height; + AboutButton.Caption := '&About...'; + AboutButton.OnClick := @AboutButtonOnClick; + AboutButton.Parent := WizardForm; + + URLLabel := TNewStaticText.Create(WizardForm); + URLLabel.Caption := 'http://paradiseo.gforge.inria.fr'; + URLLabel.Cursor := crHand; + URLLabel.OnClick := @URLLabelOnClick; + URLLabel.Parent := WizardForm; + URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline]; + URLLabel.Font.Color := clBlue; + URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2; + URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(10); +end; + +procedure CurStepChanged(CurStep: TSetupStep); +begin + if CurStep = ssDone then + OkToCopyLog := True; +end; + + +procedure DeinitializeSetup(); +begin + if OkToCopyLog then + FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\logs\install-') + GetTodaysName ('') + '.log' , FALSE); + RestartReplace (ExpandConstant ('{log}'), ''); +end; + + +[UninstallDelete] +Type: files; Name: "{app}\*" +Type: filesandordirs; Name: "{app}\*"