summaryrefslogtreecommitdiff
path: root/tools/innosetup/code.iss
diff options
context:
space:
mode:
Diffstat (limited to 'tools/innosetup/code.iss')
-rwxr-xr-xtools/innosetup/code.iss363
1 files changed, 363 insertions, 0 deletions
diff --git a/tools/innosetup/code.iss b/tools/innosetup/code.iss
new file mode 100755
index 000000000..1b98cce53
--- /dev/null
+++ b/tools/innosetup/code.iss
@@ -0,0 +1,363 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) DIGITEO - 2010-2012 - Allan CORNET
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+//
+//------------------------------------------------------------------------------
+// Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+//
+//------------------------------------------------------------------------------
+
+function IsProcessorFeaturePresent(ProcessorFeature: DWORD): Boolean;
+external 'IsProcessorFeaturePresent@kernel32.dll stdcall';
+
+function GetModuleHandle(lpModuleName: LongInt): LongInt;
+external 'GetModuleHandleA@kernel32.dll stdcall';
+
+var
+ AboutModulesButton: TButton;
+ OriginalOnTypesComboChange: TNotifyEvent;
+
+//------------------------------------------------------------------------------
+function isCLIType(): Boolean;
+ begin
+ Result := true;
+ if (IsComponentSelected( ExpandConstant('{#COMPN_JVM_MODULE}'))) then
+ begin
+ Result := false;
+ end;
+ end;
+//------------------------------------------------------------------------------
+function getExecNameForDesktop(Param: String): String;
+ begin
+ if (isCLIType() = true) then
+ begin
+ Result := ExpandConstant('{app}') + '\bin\scilex.exe';
+ end
+ else
+ begin
+ Result := ExpandConstant('{app}') + '\bin\wscilex.exe';
+ end;
+ end;
+//------------------------------------------------------------------------------
+function DoTaskInstall_MKL: Boolean;
+ begin
+ Result := true;
+ if (IsComponentSelected( ExpandConstant('{#COMPN_MKL_CPU_LIBRARY}') ) = true) then
+ begin
+ Result := Install_commons_MKL();
+ if (Result = true) then
+ begin
+ Result := Install_MKL();
+ end
+ end;
+ end;
+//------------------------------------------------------------------------------
+function DoTaskInstall_MKL_FFTW: Boolean;
+ begin
+ Result := true;
+ if (IsComponentSelected( ExpandConstant('{#COMPN_FFTW_MKL_LIBRARY}') ) = true) then
+ begin
+ Result := Install_MKL_FFTW();
+ end;
+ end;
+//------------------------------------------------------------------------------
+function DoTasksJustAfterInstall: Boolean;
+ begin
+ Result := true;
+ Result := CreateModulesFile();
+ Result := DoTaskInstall_MKL();
+ Result := DoTaskInstall_MKL_FFTW();
+ end;
+//------------------------------------------------------------------------------
+function GetJREVersion(): String;
+begin
+ Result := '';
+
+ if Is64BitInstallMode() or not IsWin64() then
+ begin
+ //64 bits installation or 32 bits OS -> same registry path
+ RegQueryStringValue( HKLM, 'SOFTWARE\JavaSoft\Java Runtime Environment', 'CurrentVersion', Result );
+ end else begin
+ // Scilab 32 bits sur Windows 64 bits
+ RegQueryStringValue( HKLM, 'SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment', 'CurrentVersion', Result );
+ end
+end;
+//------------------------------------------------------------------------------
+ function CheckJREVersion(): Boolean;
+ var
+ jreVersion: String;
+ minJREVersionRegistry: String;
+ begin
+ //
+ // Initialize min java version constant
+ //
+ minJREVersionRegistry := ExpandConstant('{#javaSpecificationVersion}');
+ //
+ // now we check the version of the installed JRE
+ //
+ jreVersion := GetJREVersion();
+ if ( jreVersion = '' ) then begin
+ Result := false;
+ end else if ( jreVersion < minJREVersionRegistry ) then begin
+ Result := false;
+ end else begin
+ Result := true;
+ end;
+ end;
+//------------------------------------------------------------------------------
+ function VerifyJREVersion() : Boolean;
+ var
+ bJREVersion: Boolean;
+ begin
+ bJREVersion := CheckJREVersion();
+
+ if ( bJREVersion <> true ) then begin
+ SuppressibleMsgBox( CustomMessage('MsgBoxJavaDetection1') + #13 +
+ CustomMessage('MsgBoxJavaDetection2') + ExpandConstant('{#javaSpecificationVersion}') + '.',
+ mbError, MB_OK, MB_OK );
+ end;
+
+ Result := bJREVersion;
+ end;
+//------------------------------------------------------------------------------
+procedure ButtonAboutModulesOnClick(Sender: TObject);
+var
+ ErrorCode: Integer;
+
+begin
+ if not ShellExec('', ExpandConstant('{#MODULES_LIST_WEB_PAGE}'),
+ '', '', SW_SHOW, ewNoWait, ErrorCode) then
+ begin
+ // handle failure if necessary
+ SuppressibleMsgBox( CustomMessage('MsgBoxWebOpen'),mbError, MB_OK, MB_OK );
+ end;
+end;
+//------------------------------------------------------------------------------
+ function BackButtonClick(CurPageID: Integer): Boolean;
+ begin
+ Result := true;
+ if (CurPageId = wpSelectProgramGroup) then
+ begin
+ AboutModulesButton.Visible := true;
+ end else begin
+ AboutModulesButton.Visible := false;
+ end;
+ end;
+//------------------------------------------------------------------------------
+function NextButtonClick_Download_MKL(): Boolean;
+ Var
+ bRes : Boolean;
+ begin
+ Result := true;
+ if (IsComponentSelected( ExpandConstant('{#COMPN_MKL_CPU_LIBRARY}') ) = true) then
+ begin
+ bRes := Download_commons_MKL();
+ if ( bRes = true ) then
+ begin
+ bRes := Download_MKL();
+ end;
+ end;
+ end;
+//------------------------------------------------------------------------------
+function NextButtonClick_Download_MKL_FFTW(): Boolean;
+ Var
+ bRes : Boolean;
+ begin
+ Result := true;
+ if (IsComponentSelected( ExpandConstant('{#COMPN_FFTW_MKL_LIBRARY}') ) = true) then
+ begin
+ bRes := Download_MKL_FFTW();
+ end;
+ end;
+//------------------------------------------------------------------------------
+function NextButtonClick(CurPageID: Integer): Boolean;
+ Var
+ bRes : Boolean;
+
+ begin
+ Result := true;
+
+ if (CurPageID = wpWelcome) then
+ begin
+ if (Is64BitInstallMode() = false) then
+ begin
+ if IsWin64() then
+ begin
+ SuppressibleMsgBox(CustomMessage('MsgBoxX64Ready'), mbInformation, MB_OK, MB_OK );
+ end;
+ end;
+
+ if (IsProcessorFeaturePresent(10) = false) then
+ begin
+ bRes := false;
+ SuppressibleMsgBox(CustomMessage('MsgBoxSSERequired'), mbError, MB_OK, MB_OK );
+ Result := false;
+ end;
+ end;
+
+ if (CurPageId = wpSelectDir) then
+ begin
+ AboutModulesButton.Visible := true;
+ end else begin
+ AboutModulesButton.Visible := false;
+ end;
+
+ if (CurPageID = wpReady) then
+ begin
+ bRes := NextButtonClick_Download_MKL();
+ bRes := NextButtonClick_Download_MKL_FFTW();
+ end;
+
+ if (CurPageId = wpSelectComponents) then
+ begin
+ if ( IsComponentSelected( ExpandConstant('{#COMPN_JRE}') ) = false ) then
+ begin
+ bRes := VerifyJREVersion();
+ if ( bRes = false ) then
+ begin
+ Result := false;
+ end;
+ end;
+
+ if ( (IsComponentSelected( ExpandConstant('{#COMPN_DEVTOOLS}') ) = false) and (IsComponentSelected( ExpandConstant('{#COMPN_TOOLBOX_SKELETON}') ) = true) ) then
+ begin
+ SuppressibleMsgBox( CustomMessage('MsgBoxDevToolsRequired1') + #13 +
+ CustomMessage('MsgBoxDevToolsRequired2'),
+ mbError, MB_OK, MB_OK );
+ Result := false;
+ end;
+
+ if ( (IsComponentSelected( ExpandConstant('{#COMPN_DEVTOOLS}') ) = false) and (IsComponentSelected( ExpandConstant('{#COMPN_TESTS}') ) = true) ) then
+ begin
+ SuppressibleMsgBox( CustomMessage('MsgBoxDevToolsRequired3') + #13 +
+ CustomMessage('MsgBoxDevToolsRequired2'),
+ mbError, MB_OK, MB_OK );
+ Result := false;
+ end;
+
+ end;
+ end;
+//------------------------------------------------------------------------------
+procedure DeinitializeUninstall;
+var
+ Names: TArrayOfString;
+ iLen: Integer;
+begin
+ //read registry to find others scilab installation in the same arch
+ if RegGetSubkeyNames(HKLM, 'Software\Scilab', Names) then
+ begin
+ iLen := length(Names);
+ if iLen > 0 then
+ begin
+ RegWriteStringValue(HKLM, 'Software\Scilab', 'LASTINSTALL', Names[iLen - 1]);
+ end else begin
+ //no other install in the same arch
+ //remove LASTINSTALL key and Scilab registry folder ( auto )
+ RegDeleteValue(HKLM, 'Software\Scilab', 'LASTINSTALL');
+ end;
+ end;
+end;
+//------------------------------------------------------------------------------
+function InitializeSetup: Boolean;
+ Var
+ Version: TWindowsVersion;
+#ifdef SCILAB_WITHOUT_JRE
+ bRes : Boolean;
+#endif
+ begin
+ Result := True;
+ GetWindowsVersionEx(Version);
+
+ if Version.NTPlatform and (Version.Major > 4) then
+ begin
+ Result := True;
+ end else begin
+ SuppressibleMsgBox(CustomMessage('MsgBoxWinVer'), mbCriticalError, MB_OK, MB_OK);
+ Result := False;
+ Exit;
+ end
+#ifdef SCILAB_WITHOUT_JRE
+ bRes := CheckJREVersion();
+ if ( bRes = false ) then
+ begin
+ SuppressibleMsgBox(CustomMessage('MsgBoxJRENotFound')+ '(' +ExpandConstant('{#javaSpecificationVersion}') + ')' + #13 +
+ CustomMessage('MsgBoxJREURL')+ #13 +
+ CustomMessage('MsgBoxJREReinstall')
+ , mbCriticalError, MB_OK, MB_OK);
+ Result := False;
+ Exit;
+ end else begin
+ Result := True;
+ end
+#endif
+ end;
+//------------------------------------------------------------------------------
+procedure OnTypesComboChange(Sender: TObject);
+var
+ ItemIndex: Integer;
+ Res: Boolean;
+begin
+ OriginalOnTypesComboChange(Sender);
+end;
+//------------------------------------------------------------------------------
+procedure CreateTheWizardPages;
+var
+ CancelButton: TButton;
+begin
+ CancelButton := WizardForm.CancelButton;
+
+ AboutModulesButton := TButton.Create(WizardForm);
+ AboutModulesButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
+ AboutModulesButton.Top := CancelButton.Top;
+ AboutModulesButton.Width := CancelButton.Width * 2;
+
+ AboutModulesButton.Caption := CustomMessage('ButtonAboutModules');
+
+ AboutModulesButton.Height := CancelButton.Height;
+
+ AboutModulesButton.OnClick := @ButtonAboutModulesOnClick;
+ AboutModulesButton.Parent := CancelButton.Parent;
+ AboutModulesButton.Visible := false;
+
+ CreateOfflineInstallationCheckBox;
+
+ OriginalOnTypesComboChange := WizardForm.TypesCombo.OnChange;
+ WizardForm.TypesCombo.OnChange := @OnTypesComboChange;
+end;
+//------------------------------------------------------------------------------
+procedure InitializeWizard();
+begin
+ CreateTheWizardPages;
+end;
+//------------------------------------------------------------------------------
+//convert Boolean expresion in string ( debug function )
+function BoolToStr(Value : Boolean) : String;
+begin
+ if Value then
+ result := 'true'
+ else
+ result := 'false';
+end;
+//------------------------------------------------------------------------------
+//check user rights
+function IsAdminUser(): Boolean;
+begin
+ Result := (IsAdminLoggedOn or IsPowerUserLoggedOn);
+end;
+//------------------------------------------------------------------------------
+//returns default install path ( take care of user rights )
+function DefDirRoot(Param: String): String;
+begin
+ if IsAdminUser then
+ //program files path
+ Result := ExpandConstant('{pf}')
+ else
+ //local app data path
+ Result := ExpandConstant('{localappdata}')
+end;