/**************************************************************************** ** ** Copyright (C) 2025 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the FOO module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ /******************** Vendor specific components *******************/ // For this vendor we manage adding the box using dummy virtual // component that is available if user access control is set var vendor_tria = "tria" // For these vendors add main component that needs to be available // for the default install view var vendor_renesas = "embedded.b2qt.658.smarcrzg2l"; // var vendor_infineon = "mcu.02101.tviic2d4m"; var vendor_infineon = "infineon"; /******************** Desktop **************************************/ var qt6Init = "qt.qt6" var qt6Version = "690" var qt6DisplayVersion = "6.9" var desktop6 = qt6Init + "." + qt6Version; var mobileiOS = desktop6 + ".ios" var mobileAndroid = desktop6 + ".android" var desktop6macOS = desktop6 + ".clang_64" var desktop6Windows = ""; var desktop6Linux = ""; if (systemInfo.currentCpuArchitecture == "arm64") { desktop6Windows = desktop6 + ".win64_msvc2022_arm64"; desktop6Linux = desktop6 + ".linux_gcc_arm64"; } else { desktop6Windows = desktop6 + ".win64_mingw"; desktop6Linux = desktop6 + ".linux_gcc_64"; } //dependencies for Qt6 examples var qt6AddonDependencyQuick3D = desktop6 + ".addons.qtquick3d"; var qt6AddonDependencyShaderTools = desktop6 + ".addons.qtshadertools"; var qt6AddonDependencyMultimedia = desktop6 + ".addons.qtmultimedia"; var qt6AddonDependencyCharts = desktop6 + ".addons.qtcharts"; // tool dependencies for Qt6 desktop default selection var qt6QtCreatorDependency = "qt.tools.qtcreator_gui" var qt6CMakeDependency = "qt.tools.cmake" var qt6NinjaDependency = "qt.tools.ninja" /******************** Qt for Android Automotive ********************/ var androidAutomotive = "android_automotive" + "." + "690" var qtAAQtModuleDependencyBase = qt6Init + "." + "690"; var qtAAQtAndroidDependency = qtAAQtModuleDependencyBase + ".android" var qtAADisplayVersion = "6.9" var qtAAQuickTimeLine = qtAAQtModuleDependencyBase + ".addons.qtquicktimeline" var qtAAMultimedia = qtAAQtModuleDependencyBase + ".addons.qtmultimedia" var qtAARemoteObjects = qtAAQtModuleDependencyBase + ".addons.qtremoteobjects" var qtAAInterfaceFramework = qtAAQtModuleDependencyBase + ".addons.qtinterfaceframework" /******************** B2Qt ****************************************/ var qt6EmbeddedInit = "embedded.b2qt" var qt6EmbeddedVersion = "690" var qt6EmbeddedDisplayVersion = "6.9" //name field is just a placeholder, the actual text is read from package DisplayName var b2qtTargetsInPreferredOrderJSON = '{ "items" : [' + '{ "id":"am62xxevm" , "name":"TI SK-AM62" },' + '{ "id":"imx8qmmek" , "name":"NXP i.MX 8QuadMax MEK" },' + '{ "id":"imx8mmlpddr4evk" , "name":"NXP i.MX 8M Mini LPDDR4 EVK" },' + '{ "id":"imx8mnlpddr4evk" , "name":"NXP i.MX 8M Nano LPDDR4 EVK" },' + '{ "id":"imx8mplpddr4evk" , "name":"NXP i.MX 8M Plus LPDDR4 EVK" },' + '{ "id":"apalisimx6" , "name":"Toradex Apalis iMX6" },' + '{ "id":"apalisimx8" , "name":"Toradex Apalis iMX8" },' + '{ "id":"colibriimx6ull" , "name":"Toradex Colibri iMX6 ULL" },' + '{ "id":"jetsonagxorindevkit" , "name":"NVIDIA Jetson AGX Orin Developer Kit" },' + '{ "id":"jetsonorinnanodevkit" , "name":"NVIDIA Jetson Orin Nano Developer Kit" },' + '{ "id":"intelskylake64" , "name":"Intel NUC" },' + '{ "id":"raspberrypiarmv8" , "name":"Raspberry Pi Development Boards (64-bit)" },' + '{ "id":"stm32mp15disco" , "name":"ST STM32MP15 Discovery" },' + '{ "id":"stm32mp15eval" , "name":"ST STM32MP15 Evaluation" },' + '{ "id":"imx9311x11lpddr4xevk" , "name":"NXP i.MX 93 11x11 LPDDR4X EVK" },' + '{ "id":"imx9519x19verdin", "name":"Toradex Verdin iMX95 Verdin" },' + '{ "id":"qcs6490rb3gen2visionkit", "name":"Qualcomm RB3 Gen 2 Vision Kit" },' + '{ "id":"visionfive2" , "name":"StarFive VisionFive 2" }' + ']}'; var b2Qt6 = qt6EmbeddedInit + "." + qt6EmbeddedVersion; /******************** MCU *****************************************/ var mcuInit = "mcu" var mcuVersion = "02101" //name field is just a placeholder, the actual text is read from package DisplayName var mcuTargetsInPreferredOrderJSON = '{ "items" : [' + '{ "id":"common_files" , "name":"Desktop target and host tools only" },' + '{ "id":"tviic2d4m" , "name":"Infineon TRAVEO T2G Cluster 4M eval kit" },' + '{ "id":"tviic2d4mlite" , "name":"Infineon TRAVEO T2G Cluster 4M Lite eval kit" },' + '{ "id":"tviic2d6m" , "name":"Infineon TRAVEO T2G Cluster 6M eval kit" },' + '{ "id":"tviic2d6mlite" , "name":"Infineon TRAVEO T2G Cluster 6M Lite eval kit" },' + '{ "id":"imx93_evk", "name":"NXP i.MX 93 EVK" },' + '{ "id":"mimxrt1050_evk" , "name":"NXP i.MX RT1050 EVK" },' + '{ "id":"mimxrt1060_evkb" , "name":"NXP i.MX RT1060 EVKB" },' + '{ "id":"mimxrt1064_evk" , "name":"NXP i.MX RT1064 EVK" },' + '{ "id":"mimxrt1170_evkb" , "name":"NXP i.MX RT1170 EVKB" },' + '{ "id":"ek_ra8d1" , "name":"Renesas EK-RA8D1" },' + '{ "id":"rh850_d1m1a" , "name":"Renesas RH850 D1M1A" },' + '{ "id":"rh850_d1m1a_autosar" , "name":"Renesas RH850 D1M1A AUTOSAR" },' + '{ "id":"stm32f769i_discovery" , "name":"STM32F769I Discovery" },' + '{ "id":"stm32h750b_discovery" , "name":"STM32H750B Discovery" } ]}'; var mcu = mcuInit + "." + mcuVersion /******************** Design Studio *****************************************/ var toolsDesignStudio = "qt.tools.qtdesignstudio" /******************** GENERAL ***********************************************/ var targetPlaceholderText = QT_TR_NOOP("Select target device") var qt6DesktopDescription = QT_TR_NOOP("Create applications from one codebase to multiple desktop platforms."); var qt6EmbeddedDescription = QT_TR_NOOP("Create solutions for embedded hardware."); var qt6MCUDescription = QT_TR_NOOP("Create solutions for microcontroller hardware."); var qt6MobileDescription = QT_TR_NOOP("Create applications from one codebase to all mobile platforms."); var designStudioDescription = QT_TR_NOOP("Turn design visions into functional products & working prototypes."); var androidAutomotiveDescription = QT_TR_NOOP("Create applications to Android Automotive targets."); var productTypeDev = QT_TR_NOOP("Developer tools"); var productTypeDesign = QT_TR_NOOP("Visual creation tools"); var customInstall = QT_TR_NOOP("Custom Installation"); var customInstallDescription = QT_TR_NOOP("User selectable packages. Host platform and developer license restrictions apply."); var desktopDevelopment = QT_TR_NOOP("Qt %1 for desktop development"); var androidAutomotiveDevelopment = QT_TR_NOOP("Qt %1 for Android Automotive"); var designTools = QT_TR_NOOP("Qt Design Studio"); var embeddedDevelopment = QT_TR_NOOP("Qt %1 for embedded development"); var mcuDevelopment = QT_TR_NOOP("Qt for MCU development"); var mobileDevelopment = QT_TR_NOOP("Qt %1 for mobile development"); /******************** Vendor names & descriptions ***********************************/ var vendor_tria_box_heading = QT_TR_NOOP("Exclusive Evaluation") var vendor_tria_info = QT_TR_NOOP("Tria") var vendor_tria_description = QT_TR_NOOP("Qt Creator and Design Studio for Tria evaluation hardware.") var vendor_renesas_box_heading = QT_TR_NOOP("Exclusive Evaluation"); var vendor_renesas_info = QT_TR_NOOP("Renesas"); var vendor_renesas_description = QT_TR_NOOP("Board support package and Qt tools for Renesas evaluation hardware."); var vendor_infineon_box_heading = QT_TR_NOOP("Exclusive Evaluation"); var vendor_infineon_info = QT_TR_NOOP("Infineon"); var vendor_infineon_description = QT_TR_NOOP("Qt for MCU package and Qt tools for Infineon evaluation hardware."); var mainTargetsJSON = '{ "items" : [' + '{ "id": "' + vendor_tria + '" , "name": "' + vendor_tria_info + '", "description": "' + vendor_tria_description + '" },' + '{ "id": "' + vendor_renesas + '" , "name": "' + vendor_renesas_info + '", "description": "' + vendor_renesas_description + '" },' + '{ "id": "' + vendor_infineon + '" , "name": "' + vendor_infineon_info + '", "description": "' + vendor_infineon_description + '" },' + '{ "id": "' + desktop6Windows + '", "name": "' + qsTranslate("installscript", desktopDevelopment).arg(qt6DisplayVersion) + '", "description": "' + qt6DesktopDescription + '" },' + '{ "id": "' + desktop6macOS + '", "name": "' + qsTranslate("installscript", desktopDevelopment).arg(qt6DisplayVersion) + '", "description": "' + qt6DesktopDescription + '" },' + '{ "id": "' + desktop6Linux + '", "name": "' + qsTranslate("installscript", desktopDevelopment).arg(qt6DisplayVersion) + '", "description": "' + qt6DesktopDescription + '" },' + '{ "id": "' + androidAutomotive + '", "name": "' + qsTranslate("installscript", androidAutomotiveDevelopment).arg(qtAADisplayVersion) + '" , "description": "' + androidAutomotiveDescription + '" },' + '{ "id": "' + toolsDesignStudio + '", "name": "' + designTools + '" , "description": "' + designStudioDescription + '" },' + '{ "id": "' + b2Qt6 + '", "name": "' + qsTranslate("installscript", embeddedDevelopment).arg(qt6EmbeddedDisplayVersion) + '", "description": "' + qt6EmbeddedDescription + '" },' + '{ "id": "' + mcu + '" , "name": "' + mcuDevelopment + '", "description": "' + qt6MCUDescription + '" },' + '{ "id": "' + mobileiOS + '", "name": "' + qsTranslate("installscript", mobileDevelopment).arg(qt6DisplayVersion) + '", "description": "' + qt6MobileDescription + '" },' + '{ "id": "' + mobileAndroid + '", "name": "' + qsTranslate("installscript", mobileDevelopment).arg(qt6DisplayVersion) + '", "description": "' + qt6MobileDescription + '" } ]}'; /******************** INTERNAL *************************************/ var mainTargets = JSON.parse(mainTargetsJSON); var b2qtTargets = JSON.parse(b2qtTargetsInPreferredOrderJSON); var mcuTargets = JSON.parse(mcuTargetsInPreferredOrderJSON); function getItemValueForTarget(id, prop){ for (var i =0; i < mainTargets.items.length; i++){ if (mainTargets.items[i].id === id) { if (mainTargets.items[i].hasOwnProperty(prop) === true) return mainTargets.items[i][prop]; else return ""; } } return ""; } var selectionWidget; var componentsToInstall = []; // vendor specific definitions var vendor_tria_dependencies = ["qt.tools.qtcreator_gui", "qt.tools.qtdesignstudio"]; var vendor_renesas_components = []; var vendor_infineon_components = []; // var qt6DesktopAndAddonDependencies = []; var androidAutomotiveComponents = []; var qt6MobileComponents = []; var qt6EmbeddedComponent; var qtMCUComponent; var qtDesignStudioComponent; var ifwVersion; var selectedFrames = []; var oldPageId = 0; function Component() { // This repository contains feature that is available only from IFW 4.1.1 onwards (QTIFW-2225) // Stop supporting default install view for versions earlier than IFW 4.7.0 ifwVersion = installer.value("FrameworkVersion"); if (!installer.isInstaller() || installer.versionMatches(ifwVersion, "<4.7.0")) return; if (installer.isCommandLineDefaultInstall()) { var installComponent; if (installer.value("os") == "win") installComponent = Component.prototype.getComponent(desktop6Windows); else if (installer.value("os") == "mac") installComponent = Component.prototype.getComponent(desktop6macOS); else installComponent = Component.prototype.getComponent(desktop6Linux); if (installComponent != "") installer.componentByName(installComponent).setValue("Default", "true"); } else if (installer.addWizardPageItem(component, "InstallTypeWidgetFrame", QInstaller.TargetDirectory, 0)) component.loaded.connect(this, Component.prototype.loaded); } Component.prototype.getAvailableTargets = function(qtVersionId, targets) { var availableTargets = []; if (!targets) return availableTargets; var components = installer.components(qtVersionId); for (i = 0; i < targets.items.length; i++) { for (j = 0; j < components.length; j++) { var componentName = components[j].name; var componentId = componentName.slice(qtVersionId.length + 1); if (componentId == targets.items[i].id) { targets.items[i].name = components[j].displayName; var availableTargetItem = {}; availableTargetItem.name = components[j].displayName; availableTargetItem.id = componentId; availableTargets.push(availableTargetItem); break; } } } return availableTargets; } Component.prototype.deselectAllComponents = function() { for (i = 0; i < componentsToInstall.length; i++) { var component = installer.componentByName(componentsToInstall[i]); if (component) { installer.deselectComponent(componentsToInstall[i]); installer.componentByName(componentsToInstall[i]).setValue("Default", "false"); } } } Component.prototype.componentSelected = function(id, isSelected) { if (id.trim().length <=0) return; Component.prototype.deselectAllComponents(); if (isSelected && !selectedFrames.includes(id)) { selectedFrames.push(id) } else if (!isSelected) { var index = selectedFrames.indexOf(id); if (index != -1) selectedFrames.splice(index, 1); } installer.setValue("QtInstallerDefaultSelectionFrames", selectedFrames) if (id == "custom") { // Below version 4.9.0, if custom is clicked then all other boxes cannot be selected, // and we show the component tree. // After 4.9.0, both custom and other boxes can be selected, then we show the component tree // with the components preselected from the boxes if (installer.versionMatches(ifwVersion, "<4.9.0")) { componentsToInstall = []; var designStudioComponent = installer.componentByName(toolsDesignStudio); if (designStudioComponent && designStudioComponent.value("Default") == "true") installer.selectComponent(toolsDesignStudio); installer.clearComponentsToInstallCalculated(); installer.calculateComponentsToInstall(); } else { installer.setDefaultPageVisible(QInstaller.ComponentSelection, isSelected); } } else if (id == "desktop") { if (isSelected) { componentsToInstall = componentsToInstall.concat(qt6DesktopAndAddonDependencies); } else { componentsToInstall = componentsToInstall.filter(function (x) { return qt6DesktopAndAddonDependencies.indexOf(x) < 0; }); } } else if (id == "androidAutomotive") { if (isSelected) { componentsToInstall = componentsToInstall.concat(androidAutomotiveComponents); } else { componentsToInstall = componentsToInstall.filter(function (x) { return androidAutomotiveComponents.indexOf(x) < 0; }); } } else if (id == "mobile") { if (isSelected) { componentsToInstall = componentsToInstall.concat(qt6MobileComponents); } else { componentsToInstall = componentsToInstall.filter(function (x) { return qt6MobileComponents.indexOf(x) < 0; }); } } else if (id == vendor_tria) { if (isSelected) { componentsToInstall = componentsToInstall.concat(vendor_tria_dependencies); } else { componentsToInstall = componentsToInstall.filter(function (x) { return vendor_tria_dependencies.indexOf(x) < 0; }); } } else if (id == vendor_renesas) { if (isSelected) { componentsToInstall = componentsToInstall.concat(vendor_renesas_components); } else { componentsToInstall = componentsToInstall.filter(function (x) { return vendor_renesas_components.indexOf(x) < 0; }); } } else if (id == vendor_infineon) { if (isSelected) { componentsToInstall = componentsToInstall.concat(vendor_infineon_components); } else { componentsToInstall = componentsToInstall.filter(function (x) { return vendor_infineon_components.indexOf(x) < 0; }); } } else { if (isSelected) { componentsToInstall.push(id); } else { var index = componentsToInstall.indexOf(id); if (index != -1) componentsToInstall.splice(index, 1); } } if (installer.versionMatches(ifwVersion, "<4.9.0")) { if (componentsToInstall.length == 0) { installer.setDefaultPageVisible(QInstaller.ComponentSelection, true); } else { installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); } } Component.prototype.selectComponentsForInstallation(); } Component.prototype.getComponent = function(qtVersionId, targets) { var selectedComponent = ""; if (targets == undefined) { if (installer.componentByName(qtVersionId) != null) selectedComponent = qtVersionId; } else { var components = installer.components(qtVersionId); loop1: for (i = 0; i < targets.items.length; i++) { loop2: for (j = 0; j < components.length; j++) { var componentName = components[j].name; var componentId = componentName.slice(qtVersionId.length + 1); if (componentId == targets.items[i].id) { selectedComponent = componentName; break loop1; } } } } return selectedComponent; } Component.prototype.initFrameItem = function(objectName, productTypeStr, qtVersionId, targets) { var selectedComponent = Component.prototype.getComponent(qtVersionId, targets); if (selectedComponent != "") { var titleText = qsTranslate("installscript", getItemValueForTarget(qtVersionId, "name")); var description = qsTranslate("installscript", getItemValueForTarget(qtVersionId, "description")); var availableTargets = Component.prototype.getAvailableTargets(qtVersionId, targets); if (installer.versionMatches(ifwVersion, "<4.9.0")) selectionWidget.addItem(objectName, qtVersionId, productTypeStr, titleText, description, availableTargets); else selectionWidget.addItem(objectName, qtVersionId, productTypeStr, titleText, description, availableTargets, targetPlaceholderText); } } Component.prototype.initMobileItemsAndFrame = function(objectName, productTypeStr, id, dependencies) { var selectedComponents = []; var components = []; for (i = 0; i < dependencies.length; i++) components = components.concat(installer.components(dependencies[i] + "$")); for (j = 0; j < components.length; j++) { var componentName = components[j].name; selectedComponents.push(componentName); } if (selectedComponents.length > 0) { var titleText = qsTranslate("installscript", getItemValueForTarget(dependencies[0], "name")); var description = qsTranslate("installscript", getItemValueForTarget(dependencies[0], "description")); selectionWidget.addItem(objectName, id, productTypeStr, titleText, description); } return selectedComponents; } Component.prototype.loaded = function() { selectionWidget = component.userInterface("InstallTypeWidgetFrame").defaultInstall; var desktopDependencies = [qt6AddonDependencyQuick3D, qt6AddonDependencyMultimedia, qt6AddonDependencyShaderTools, qt6AddonDependencyCharts, qt6QtCreatorDependency, qt6CMakeDependency, qt6NinjaDependency]; if (selectionWidget != null) { selectionWidget.selectedChanged.connect(Component.prototype.componentSelected); // Custom installation selectionWidget.addItem("custom", "custom", "", qsTr(customInstall), qsTr(customInstallDescription)); if (installer.value("os") == "win") desktopDependencies.unshift(desktop6Windows); else if (installer.value("os") == "mac") desktopDependencies.unshift(desktop6macOS); else desktopDependencies.unshift(desktop6Linux); qt6DesktopAndAddonDependencies = desktopDependencies.slice(); // Vendor specific items populate first boxes // Begin Component.prototype.initFrameItem("vendor_tria", qsTr(vendor_tria_box_heading), vendor_tria); if (installer.componentByName(vendor_renesas)) { var vendor_renesas_dependencies = [vendor_renesas, "qt.tools.qtcreator_gui"]; vendor_renesas_components = Component.prototype.initMobileItemsAndFrame("vendor_renesas", qsTr(vendor_renesas_box_heading), vendor_renesas, vendor_renesas_dependencies); } if (installer.componentByName(vendor_infineon)) { var vendor_infineon_dependencies = [vendor_infineon, "mcu.02101.tviic2d4m", "qt.tools.qtcreator_gui", "qt.tools.qtcreatorcdbext", "qt.tools.windows_kits_debuggers"]; vendor_infineon_components = Component.prototype.initMobileItemsAndFrame("vendor_infineon", qsTr(vendor_infineon_box_heading), vendor_infineon, vendor_infineon_dependencies); } // End Component.prototype.initMobileItemsAndFrame("desktop", qsTr(productTypeDev), "desktop", qt6DesktopAndAddonDependencies); Component.prototype.initFrameItem("b2qt", qsTr(productTypeDev), b2Qt6, b2qtTargets); Component.prototype.initFrameItem("mcu", qsTr(productTypeDev), mcu, mcuTargets); var androidAutomotiveDependencies = [androidAutomotive, qtAAQtAndroidDependency, qtAAQuickTimeLine, qtAARemoteObjects, qtAAInterfaceFramework, qtAAMultimedia] androidAutomotiveComponents = Component.prototype.initMobileItemsAndFrame("android", qsTr(productTypeDev), "androidAutomotive", androidAutomotiveDependencies); var mobileTargets = [mobileAndroid, mobileiOS] qt6MobileComponents = Component.prototype.initMobileItemsAndFrame("mobile", qsTr(productTypeDev), "mobile", mobileTargets); Component.prototype.initFrameItem("designstudio", qsTr(productTypeDesign), toolsDesignStudio); } else { console.log("Selection widget not found"); } if (installer.versionMatches(ifwVersion, ">=4.9.0")) { selectionWidget.addSpaceInformationWidget(installer); installer.finishedCalculateComponentsToInstall.connect(Component.prototype.updateSpaceRequiredText); installer.finishAllComponentsReset.connect(Component.prototype.selectInitialFrame); installer.currentPageChanged.connect(Component.prototype.currentPageChanged); } } Component.prototype.currentPageChanged = function(newId) { if (oldPageId == QInstaller.ComponentSelection && newId == QInstaller.TargetDirectory) { // We have returned from component selection page, frames are still selected but user // might have deselected the components in previous page. Reselect the components. Component.prototype.selectComponentsForInstallation(); } oldPageId = newId; } Component.prototype.selectInitialFrame = function() { // We have once selected the frames, reselect after category fetch if (installer.containsValue("QtInstallerDefaultPageInitialized")) { if (!installer.containsValue("QtInstallerDefaultSelectionFrames")) return; var framesSelected = installer.value("QtInstallerDefaultSelectionFrames").split(","); selectionWidget.selectItems(framesSelected); return; } function hide_component_selection_page() { installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); } // Check if vendor specific items available, set as default // Only one vendor specific box should be available var vendorItemSet = false; if (selectionWidget.selectItem(vendor_renesas)) { vendorItemSet = true; hide_component_selection_page(); } if (selectionWidget.selectItem(vendor_infineon)) { vendorItemSet = true; hide_component_selection_page(); } if (selectionWidget.selectItem(vendor_tria)) { vendorItemSet = true; hide_component_selection_page(); } // Try selecting desktop item first. If not found, then select custom installation. // If user has typed --nd when running installer, custom is selected. var selectCustomInstallation = false; if (vendorItemSet === false) { if (installer.noDefaultInstallation() || selectionWidget.selectItem("desktop") === false) selectCustomInstallation = true; if (selectCustomInstallation) selectionWidget.selectItem("custom"); else hide_component_selection_page(); } // Set helper value so that installer can reselect the frames after category fetch installer.setValue("QtInstallerDefaultPageInitialized", true) } Component.prototype.updateSpaceRequiredText = function() { if (selectionWidget != null) selectionWidget.updateSpaceRequiredText(); } Component.prototype.selectComponentsForInstallation = function() { for (j = 0; j < componentsToInstall.length; j++) { var component = installer.componentByName(componentsToInstall[j]); if (component) { installer.selectComponent(componentsToInstall[j]); installer.componentByName(componentsToInstall[j]).setValue("Default", "true"); } else { console.log("Component not found " + componentsToInstall[j]); } } if ((componentsToInstall.length == 1) && (componentsToInstall[0] == toolsDesignStudio)) installer.setValue("DesignStudioInstallOnly", true); else installer.setValue("DesignStudioInstallOnly", false); installer.clearComponentsToInstallCalculated(); installer.calculateComponentsToInstall() }