I would like to disable and set to gray color, or set to readonly, some task checkboxes, the checkboxes that are checked in this image:
I'm not looking for other kind of approach, I want to make visible those Tasks but make their checkboxes uncheckeable, that's all, this way the user can see what is going to be installed and what is restricted by default.
My Install script looks like this:
[Tasks]
; VS Optional Features
Name: blend; Description: Blend; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: foundationclass; Description: Microsoft Foundation Classes for C++; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: lightswitch; Description: Microsoft LightSwitch; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: officedevelopertools; Description: Microsoft Office Developer Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: sqldatatools; Description: Microsoft SQL Server Data Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: webdevelopertools; Description: Microsoft Web Developer Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: silverlightsdk; Description: SilverLight Developer Kit; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: Win8SDK; Description: Tools For Maintaining Store Apps For Windows 8; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: WindowsPhone80; Description: Windows Phone 8.0 SDK; GroupDescription: VS Optional Features:; Flags: Unchecked
; VS Hidden Features
Name: netfx4; Description: .NET FX 4; GroupDescription: VS Hidden Features:
Name: netfx45; Description: .NET FX 4.5; GroupDescription: VS Hidden Features:
Name: bliss; Description: Bliss; GroupDescription: VS Hidden Features:
Name: helpviewer; Description: Microsoft Help Viewer 2.1; GroupDescription: VS Hidden Features:
Name: portablelibrary; Description: Microsoft Portable Library Multi-Targeting Pack; GroupDescription: VS Hidden Features:
Name: report; Description: Microsoft Report Viewer Add-On for Visual Studio 2013; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: silverlight; Description: Microsoft Silverlight 5 SDK; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqldac; Description: Microsoft SQL DAC; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqldom; Description: Microsoft SQL DOM; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqllocaldb; Description: Microsoft SQL Server 2013 Express LocalDB; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlmanagementobjects; Description: Microsoft SQL Server 2013 Management Objects; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlclr; Description: Microsoft SQL Server 2013 System CLR Types; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqltran; Description: Microsoft SQL Server 2013 Transact-SQL; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlce; Description: Microsoft SQL Server Compact Edition; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_compilers; Description: Microsoft Visual C++ 2013 Compilers; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_core; Description: Microsoft Visual C++ 2013 Core Libraries; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_debug; Description: Microsoft Visual C++ 2013 Debug Runtime; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_designtime; Description: Microsoft Visual C++ 2013 Designtime; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_extendedlibraries; Description: Microsoft Visual C++ 2013 Extended Libraries; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: intellitrace; Description: Microsoft Visual Studio 2013 IntelliTrace; GroupDescription: VS Hidden Features:
Name: storyboarding; Description: Microsoft Visual Studio Team Foundation Server 2013 Storyboarding; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sdk3; Description: SDK Tools 3; GroupDescription: VS Hidden Features:
Name: sdk4; Description: SDK Tools 4; GroupDescription: VS Hidden Features:
Name: analytics; Description: Visual Studio Analytics; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: dotfuscator; Description: Visual Studio Dotfuscator; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: javascript; Description: Visual Studio Extensions for Windows Library for JavaScript; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: profiler; Description: Visual Studio Profiler; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: winsdk; Description: Windows Software Development Kit; GroupDescription: VS Hidden Features:; Flags: Unchecked
Is this possibly to accomplish?
I didn't found any Task flag that helps me to do this, in the other hand, I've seen other questions in StackOverflow but are related to readonly checkboxes and it uses pascal-script code, I'm not a pascal script code and I'm not sure whether that is what I need to do because I'm not creating and instancing manually the checkboxes in the Form, I mean that I don't have any control on those checkboxes+labels, I'm just adding tasks in the Task
section.
UPDATE
I'm using the pascal-script code below to disable the desired items, but when I run my installer I get this error, it says that the index is out of bounds, why?, I'm using the proper chekbox indexes and I've verified the indexes seeying the resulting task page... I think that the problem is the wpSelectTasks, it is an integrated constant?, anyways I've tried to specify a constant with the pagenumber of the tasks page and I still get the same error, and the error occurs when I change the selected page using the 'Next' button (not 'Back'):
// Disable Tasks
procedure CurPageChanged(CurPageID: Integer);
begin
// if we have entered the tasks selection page, disable the specified Tasks.
if CurPageID = wpSelectTasks then
WizardForm.TasksList.ItemEnabled[11] := False;
WizardForm.TasksList.ItemEnabled[12] := False;
WizardForm.TasksList.ItemEnabled[13] := False;
WizardForm.TasksList.ItemEnabled[14] := False;
WizardForm.TasksList.ItemEnabled[15] := False;
WizardForm.TasksList.ItemEnabled[30] := False;
WizardForm.TasksList.ItemEnabled[32] := False;
WizardForm.TasksList.ItemEnabled[33] := False;
end;
// Disable Tasks - END
I have more code for UI customizations and I don't know if some thing is in conflict with the other procedure, the entire [Code]
section is this:
[Code]
// Disable Tasks
procedure CurPageChanged(CurPageID: Integer);
begin
// if we have entered the tasks selection page, disable the specified Tasks.
if CurPageID = wpSelectTasks then
WizardForm.TasksList.ItemEnabled[11] := False;
WizardForm.TasksList.ItemEnabled[12] := False;
WizardForm.TasksList.ItemEnabled[13] := False;
WizardForm.TasksList.ItemEnabled[14] := False;
WizardForm.TasksList.ItemEnabled[15] := False;
WizardForm.TasksList.ItemEnabled[30] := False;
WizardForm.TasksList.ItemEnabled[32] := False;
WizardForm.TasksList.ItemEnabled[33] := False;
end;
// Disable Tasks - END
// Installer UI Customizations
const
Custom_Height = 570;
Page_Color = $7b2b68;
Page_Color_Alternative1 = clblack;
Page_Color_Alternative2 = clwhite;
Font_Color = $fffbff;
var
DefaultTop,
DefaultLeft,
DefaultHeight,
DefaultBackTop,
DefaultNextTop,
DefaultCancelTop,
DefaultBevelTop,
DefaultOuterHeight: Integer;
procedure InitializeWizard();
begin
DefaultTop := WizardForm.Top;
DefaultLeft := WizardForm.Left;
DefaultHeight := WizardForm.Height;
DefaultBackTop := WizardForm.BackButton.Top;
DefaultNextTop := WizardForm.NextButton.Top;
DefaultCancelTop := WizardForm.CancelButton.Top;
DefaultBevelTop := WizardForm.Bevel.Top;
DefaultOuterHeight := WizardForm.OuterNotebook.Height;
// Page sizes
WizardForm.Height := Custom_Height;
WizardForm.InnerPage.Height := WizardForm.InnerPage.Height + (Custom_Height - DefaultHeight);
WizardForm.LicensePage.Height := WizardForm.LicensePage.Height + (Custom_Height - DefaultHeight);
// Control locations
WizardForm.BackButton.Top := DefaultBackTop + (Custom_Height - DefaultHeight);
WizardForm.Bevel.Top := DefaultBevelTop + (Custom_Height - DefaultHeight);
WizardForm.CancelButton.Top := DefaultCancelTop + (Custom_Height - DefaultHeight);
WizardForm.LicenseAcceptedRadio.Top := WizardForm.LicenseAcceptedRadio.Top + (Custom_Height - DefaultHeight);
WizardForm.LicenseNotAcceptedRadio.Top := WizardForm.LicenseNotAcceptedRadio.Top + (Custom_Height - DefaultHeight);
WizardForm.NextButton.Top := DefaultNextTop + (Custom_Height - DefaultHeight);
WizardForm.Top := DefaultTop - (Custom_Height - DefaultHeight) div 2;
// Control Sizes
WizardForm.InfoBeforeMemo.Height := (Custom_Height - (DefaultHeight / 2));
WizardForm.InnerNotebook.Height := WizardForm.InnerNotebook.Height + (Custom_Height - DefaultHeight);
WizardForm.LicenseMemo.Height := WizardForm.LicenseMemo.Height + (Custom_Height - DefaultHeight);
WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height + (Custom_Height - DefaultHeight);
WizardForm.Taskslist.Height := (Custom_Height - (DefaultHeight / 2));
WizardForm.WizardBitmapImage.Height := (Custom_Height - (DefaultHeight / 5));
// Page colos
WizardForm.color := Page_Color_Alternative1;
WizardForm.FinishedPage.Color := Page_Color;
WizardForm.InfoBeforeMemo.Color := clGray;
WizardForm.InnerPage.Color := Page_Color;
WizardForm.LicensePage.Color := Page_Color;
WizardForm.MainPanel.Color := Page_Color;
WizardForm.SelectComponentsPage.Color := Page_Color;
WizardForm.SelectDirPage.Color := Page_Color;
WizardForm.Taskslist.Color := Page_Color;
WizardForm.WelcomePage.color := Page_Color;
// Font colors
WizardForm.Font.color := Font_Color;
//WizardForm.InfoBeforeMemo.font.Color := Font_Color;
WizardForm.Licensememo.font.Color := Font_Color;
WizardForm.MainPanel.font.Color := Font_Color;
WizardForm.PageDescriptionLabel.font.color := Font_Color;
WizardForm.PageNameLabel.font.color := Font_Color;
WizardForm.Taskslist.font.Color := Font_Color;
WizardForm.WelcomeLabel1.font.color := Font_Color;
WizardForm.WelcomeLabel2.font.color := Font_Color;
end;
// Installer UI Customizations - END
The current solution for this, is specified by a @Tlama's answer in this question.