* Bug #10862 fixed - Add a without internet connection installation
[scilab.git] / scilab / tools / innosetup / code_offline_installation.iss
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 //
11 //------------------------------------------------------------------------------
12 // Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
13 //
14 //------------------------------------------------------------------------------
15
16 var
17   OfflineInstallCheckBox: TNewCheckBox;
18
19 //------------------------------------------------------------------------------
20 // Sets the state of a component given by its english name
21 function SetComponentState(ComponentEnglishName: String;
22   Checked: Boolean; Enabled: Boolean): Boolean;
23 var
24   ComponentLocalizedName: String;
25   Index: Integer;
26 begin
27   ComponentLocalizedName := CustomMessage(ComponentEnglishName);
28   Index := WizardForm.ComponentsList.Items.IndexOf(ComponentLocalizedName);
29   if Index <> -1 then
30   begin
31     WizardForm.ComponentsList.Checked[Index] := Checked;
32     WizardForm.ComponentsList.ItemEnabled[Index] := Enabled;
33     Result := True;
34   end else
35   begin
36     Log('SetComponentState: cannot find component ' + ComponentEnglishName);
37     Result := False;
38   end;
39 end;
40 //------------------------------------------------------------------------------
41 // Offline installation option is checked : disable the components needing
42 // to be downloaded (MKL, FFTW, CHM)
43 procedure OnOfflineInstallCheckBoxClick(Sender: TObject);
44 var
45   IsOnline: Boolean;
46   Res: Boolean;
47 begin
48   // Bug: IsOnline := not ((Sender as TNewCheckBox).Checked) provokes errors
49   If (Sender as TNewCheckBox).Checked then
50     IsOnline := False
51   else
52     IsOnline := True;
53
54   // CPU Optimization
55   Res := SetComponentState('DescriptionMKLLibrary', IsOnline, IsOnline);
56   if not IsOnline then
57   begin
58 #ifndef SCILAB_X64
59     Res := Res and SetComponentState('DescriptionATLASLibrary', True, True);
60 #else
61     Res := Res and SetComponentState('DescriptionRefBlasLibrary', True, True);
62 #endif
63   end;
64
65   // FFTW
66   Res := Res and SetComponentState('DescriptionFftwMKLDownload', IsOnline,
67     IsOnline);
68   if not IsOnline then
69   begin
70     Res := Res and SetComponentState('DescriptionRefFftwLibrary', True, True);
71   end;
72
73   // CHM
74   Res := Res and SetComponentState('DescriptionCHM', IsOnline, IsOnline);
75
76   if not Res then
77   begin
78     Log('OfflineInstallCheckBoxOnClick: ' +
79       'Error while changing components intallation.');
80   end;
81
82   // Refresh installation type (Online => Full, Offline => Custom)
83   if IsOnline then
84     WizardForm.TypesCombo.ItemIndex := 0
85   else
86     WizardForm.TypesCombo.ItemIndex := 2;
87
88   // Bug: need to trigger manually the TypesCombo.OnChange event
89   WizardForm.TypesCombo.OnChange(WizardForm);
90 end;
91 //------------------------------------------------------------------------------
92 // Adds an "Offline installation" option (check box)in the Select Location panel
93 procedure CreateOfflineInstallationCheckBox;
94 var
95   LastControl: TWinControl;
96 begin
97   LastControl := WizardForm.DirEdit;
98
99   OfflineInstallCheckBox := TNewCheckBox.Create(WizardForm);
100   OfflineInstallCheckBox.Parent := WizardForm.SelectDirPage;
101   OfflineInstallCheckBox.Top := LastControl.Top +
102     LastControl.Height + ScaleY(8);
103   OfflineInstallCheckBox.Width := WizardForm.SelectDirPage.Width;
104   OfflineInstallCheckBox.Caption :=
105     'Installation without an Internet connection';
106   OfflineInstallCheckBox.OnClick := @OnOfflineInstallCheckBoxClick;
107 end;
108