* Bug #10862 fixed - Add a without internet connection installation 99/10499/3
Simon Marchetto [Fri, 15 Feb 2013 15:21:38 +0000 (16:21 +0100)]
                     global configuration on the installer

New check box for Offline mode in Select Destination page
MKL, FFTW, and CHM components are unchecked in offline mode
(MKL is replaced by ATLAS)

Change-Id: I8068e42eee2d83a8514371f8c80bca2ab2e6ff04

scilab/CHANGES_5.5.X
scilab/tools/innosetup/Scilab.iss
scilab/tools/innosetup/code.iss
scilab/tools/innosetup/code_offline_installation.iss [new file with mode: 0644]

index f2d5522..e83624f 100644 (file)
@@ -36,3 +36,10 @@ Xcos
 ====
 
 * Update Sundials to lastest "2.5.0", keeping our modifications
+
+
+Bug fixes
+==========
+
+* Bug #10862 fixed - Add a without internet connection installation
+                     global configuration on the installer
index 3debfcb..1016868 100644 (file)
@@ -71,6 +71,7 @@
 #include BinariesSourcePath + "\tools\innosetup\code_unzip.iss"
 #include BinariesSourcePath + "\tools\innosetup\code_download.iss"
 #include BinariesSourcePath + "\tools\innosetup\code_modules.iss"
+#include BinariesSourcePath + "\tools\innosetup\code_offline_installation.iss"
 #include BinariesSourcePath + "\tools\innosetup\code.iss"
 [Run]
 ;-------------------------------------------------------------------------------
index 9203a10..43b78d0 100644 (file)
@@ -21,6 +21,8 @@ external 'GetModuleHandleA@kernel32.dll stdcall';
 
 var
     AboutModulesButton: TButton;
+    OriginalOnTypesComboChange: TNotifyEvent;
+
 //------------------------------------------------------------------------------
 function isCLIType(): Boolean;
   begin
@@ -305,12 +307,33 @@ function InitializeSetup: Boolean;
 #endif
   end;
 //------------------------------------------------------------------------------
+procedure OnTypesComboChange(Sender: TObject);
+var
+  ItemIndex: Integer;
+  Res: Boolean;
+begin
+  OriginalOnTypesComboChange(Sender);
+
+  // Prevent CHM to be checked by switching to Full installation in Offline mode
+  if OfflineInstallCheckBox.Checked then
+  begin
+    ItemIndex := (Sender as TNewComboBox).ItemIndex;
+    if ItemIndex = 0 then
+    begin
+      Res := SetComponentState('DescriptionCHM', False, False);
+      if not Res then
+      begin
+        Log('OnTypesComboChange: ' +
+          'Error while changing components intallation.');
+      end;
+    end;
+  end;
+end;
+//------------------------------------------------------------------------------
 procedure CreateTheWizardPages;
 var
   CancelButton: TButton;
-
 begin
-
   CancelButton := WizardForm.CancelButton;
 
   AboutModulesButton := TButton.Create(WizardForm);
@@ -325,10 +348,14 @@ begin
   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;
diff --git a/scilab/tools/innosetup/code_offline_installation.iss b/scilab/tools/innosetup/code_offline_installation.iss
new file mode 100644 (file)
index 0000000..577e4fe
--- /dev/null
@@ -0,0 +1,108 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) DIGITEO - 2010-2011 - 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-en.txt
+//
+//------------------------------------------------------------------------------
+// Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+//
+//------------------------------------------------------------------------------
+
+var
+  OfflineInstallCheckBox: TNewCheckBox;
+
+//------------------------------------------------------------------------------
+// Sets the state of a component given by its english name
+function SetComponentState(ComponentEnglishName: String;
+  Checked: Boolean; Enabled: Boolean): Boolean;
+var
+  ComponentLocalizedName: String;
+  Index: Integer;
+begin
+  ComponentLocalizedName := CustomMessage(ComponentEnglishName);
+  Index := WizardForm.ComponentsList.Items.IndexOf(ComponentLocalizedName);
+  if Index <> -1 then
+  begin
+    WizardForm.ComponentsList.Checked[Index] := Checked;
+    WizardForm.ComponentsList.ItemEnabled[Index] := Enabled;
+    Result := True;
+  end else
+  begin
+    Log('SetComponentState: cannot find component ' + ComponentEnglishName);
+    Result := False;
+  end;
+end;
+//------------------------------------------------------------------------------
+// Offline installation option is checked : disable the components needing
+// to be downloaded (MKL, FFTW, CHM)
+procedure OnOfflineInstallCheckBoxClick(Sender: TObject);
+var
+  IsOnline: Boolean;
+  Res: Boolean;
+begin
+  // Bug: IsOnline := not ((Sender as TNewCheckBox).Checked) provokes errors
+  If (Sender as TNewCheckBox).Checked then
+    IsOnline := False
+  else
+    IsOnline := True;
+
+  // CPU Optimization
+  Res := SetComponentState('DescriptionMKLLibrary', IsOnline, IsOnline);
+  if not IsOnline then
+  begin
+#ifndef SCILAB_X64
+    Res := Res and SetComponentState('DescriptionATLASLibrary', True, True);
+#else
+    Res := Res and SetComponentState('DescriptionRefBlasLibrary', True, True);
+#endif
+  end;
+
+  // FFTW
+  Res := Res and SetComponentState('DescriptionFftwMKLDownload', IsOnline,
+    IsOnline);
+  if not IsOnline then
+  begin
+    Res := Res and SetComponentState('DescriptionRefFftwLibrary', True, True);
+  end;
+
+  // CHM
+  Res := Res and SetComponentState('DescriptionCHM', IsOnline, IsOnline);
+
+  if not Res then
+  begin
+    Log('OfflineInstallCheckBoxOnClick: ' +
+      'Error while changing components intallation.');
+  end;
+
+  // Refresh installation type (Online => Full, Offline => Custom)
+  if IsOnline then
+    WizardForm.TypesCombo.ItemIndex := 0
+  else
+    WizardForm.TypesCombo.ItemIndex := 2;
+
+  // Bug: need to trigger manually the TypesCombo.OnChange event
+  WizardForm.TypesCombo.OnChange(WizardForm);
+end;
+//------------------------------------------------------------------------------
+// Adds an "Offline installation" option (check box)in the Select Location panel
+procedure CreateOfflineInstallationCheckBox;
+var
+  LastControl: TWinControl;
+begin
+  LastControl := WizardForm.DirEdit;
+
+  OfflineInstallCheckBox := TNewCheckBox.Create(WizardForm);
+  OfflineInstallCheckBox.Parent := WizardForm.SelectDirPage;
+  OfflineInstallCheckBox.Top := LastControl.Top +
+    LastControl.Height + ScaleY(8);
+  OfflineInstallCheckBox.Width := WizardForm.SelectDirPage.Width;
+  OfflineInstallCheckBox.Caption :=
+    'Installation without an Internet connection';
+  OfflineInstallCheckBox.OnClick := @OnOfflineInstallCheckBoxClick;
+end;
+