scripts/Windows/install_qt_fast_windows.ps1

Write-Host "Installing Qt 5.x, 6.x ..." -ForegroundColor Cyan

. "$PSScriptRoot\install_qt_module.ps1"

$installDir = "C:\Qt"
#$component_groups = @()
$component_groups = @(
    @{
        version    = "6.8.1"
        components = @(
            "win64_mingw",
            "win64_msvc2022_64",
            "win64_msvc2022_arm64_cross_compiled",
            "debug_info",
            "debug_info.win64_mingw",
            "debug_info.win64_msvc2022_64",
            "debug_info.win64_msvc2022_arm64_cross_compiled",       

            "addons.qt3d",
            "addons.qt3d.win64_mingw",
            "addons.qt3d.win64_msvc2022_64",
            "addons.qt3d.win64_msvc2022_arm64_cross_compiled",

            "addons.qtactiveqt",
            "addons.qtactiveqt.win64_mingw",
            "addons.qtactiveqt.win64_msvc2022_64",
            "addons.qtactiveqt.win64_msvc2022_arm64_cross_compiled",

            "addons.qtcharts",
            "addons.qtcharts.win64_mingw",
            "addons.qtcharts.win64_msvc2022_64",
            "addons.qtcharts.win64_msvc2022_arm64_cross_compiled",

            "addons.qtconnectivity",
            "addons.qtconnectivity.win64_mingw",
            "addons.qtconnectivity.win64_msvc2022_64",
            "addons.qtconnectivity.win64_msvc2022_arm64_cross_compiled",

            "addons.qtdatavis3d",
            "addons.qtdatavis3d.win64_mingw",
            "addons.qtdatavis3d.win64_msvc2022_64",
            "addons.qtdatavis3d.win64_msvc2022_arm64_cross_compiled",

            "addons.qtgraphs",
            "addons.qtgraphs.win64_mingw",
            "addons.qtgraphs.win64_msvc2022_64",
            "addons.qtgraphs.win64_msvc2022_arm64_cross_compiled",

            "addons.qtgrpc",
            "addons.qtgrpc.win64_mingw",
            "addons.qtgrpc.win64_msvc2022_64",
            "addons.qtgrpc.win64_msvc2022_arm64_cross_compiled",

            "addons.qthttpserver",
            "addons.qthttpserver.win64_mingw",
            "addons.qthttpserver.win64_msvc2022_64",
            "addons.qthttpserver.win64_msvc2022_arm64_cross_compiled",

            "addons.qtimageformats",
            "addons.qtimageformats.win64_mingw",
            "addons.qtimageformats.win64_msvc2022_64",
            "addons.qtimageformats.win64_msvc2022_arm64_cross_compiled",

            "addons.qtlanguageserver",
            "addons.qtlanguageserver.win64_mingw",
            "addons.qtlanguageserver.win64_msvc2022_64",
            "addons.qtlanguageserver.win64_msvc2022_arm64_cross_compiled",

            "addons.qtlocation",
            "addons.qtlocation.win64_mingw",
            "addons.qtlocation.win64_msvc2022_64",
            "addons.qtlocation.win64_msvc2022_arm64_cross_compiled",

            "addons.qtlottie",
            "addons.qtlottie.win64_mingw",
            "addons.qtlottie.win64_msvc2022_64",
            "addons.qtlottie.win64_msvc2022_arm64_cross_compiled",

            "addons.qtmultimedia",
            "addons.qtmultimedia.win64_mingw",
            "addons.qtmultimedia.win64_msvc2022_64",
            "addons.qtmultimedia.win64_msvc2022_arm64_cross_compiled",

            "addons.qtnetworkauth",
            "addons.qtnetworkauth.win64_mingw",
            "addons.qtnetworkauth.win64_msvc2022_64",
            "addons.qtnetworkauth.win64_msvc2022_arm64_cross_compiled",

            #"addons.qtpdf",
            #"addons.qtpdf.win64_msvc2022_64",

            "addons.qtpositioning",
            "addons.qtpositioning.win64_mingw",
            "addons.qtpositioning.win64_msvc2022_64",
            "addons.qtpositioning.win64_msvc2022_arm64_cross_compiled",

            "addons.qtquick3dphysics",
            "addons.qtquick3dphysics.win64_mingw",
            "addons.qtquick3dphysics.win64_msvc2022_64",
            "addons.qtquick3dphysics.win64_msvc2022_arm64_cross_compiled",

            "addons.qtquickeffectmaker",
            "addons.qtquickeffectmaker.win64_mingw",
            "addons.qtquickeffectmaker.win64_msvc2022_64",

            "addons.qtremoteobjects",
            "addons.qtremoteobjects.win64_mingw",
            "addons.qtremoteobjects.win64_msvc2022_64",
            "addons.qtremoteobjects.win64_msvc2022_arm64_cross_compiled",

            "addons.qtscxml",
            "addons.qtscxml.win64_mingw",
            "addons.qtscxml.win64_msvc2022_64",
            "addons.qtscxml.win64_msvc2022_arm64_cross_compiled",

            "addons.qtsensors",
            "addons.qtsensors.win64_mingw",
            "addons.qtsensors.win64_msvc2022_64",
            "addons.qtsensors.win64_msvc2022_arm64_cross_compiled",

            "addons.qtserialbus",
            "addons.qtserialbus.win64_mingw",
            "addons.qtserialbus.win64_msvc2022_64",
            "addons.qtserialbus.win64_msvc2022_arm64_cross_compiled",

            "addons.qtserialport",
            "addons.qtserialport.win64_mingw",
            "addons.qtserialport.win64_msvc2022_64",
            "addons.qtserialport.win64_msvc2022_arm64_cross_compiled",

            "addons.qtspeech",
            "addons.qtspeech.win64_mingw",
            "addons.qtspeech.win64_msvc2022_64",
            "addons.qtspeech.win64_msvc2022_arm64_cross_compiled",

            "addons.qtvirtualkeyboard",
            "addons.qtvirtualkeyboard.win64_mingw",
            "addons.qtvirtualkeyboard.win64_msvc2022_64",
            "addons.qtvirtualkeyboard.win64_msvc2022_arm64_cross_compiled",

            "addons.qtwebchannel",
            "addons.qtwebchannel.win64_mingw",
            "addons.qtwebchannel.win64_msvc2022_64",
            "addons.qtwebchannel.win64_msvc2022_arm64_cross_compiled",

            #"addons.qtwebengine",
            #"addons.qtwebengine.win64_msvc2022_64",

            "addons.qtwebsockets",
            "addons.qtwebsockets.win64_mingw",
            "addons.qtwebsockets.win64_msvc2022_64",
            "addons.qtwebsockets.win64_msvc2022_arm64_cross_compiled",

            "addons.qtwebview",
            "addons.qtwebview.win64_mingw",
            "addons.qtwebview.win64_msvc2022_64",

            "addons.qt5compat",
            "addons.qt5compat.win64_mingw",
            "addons.qt5compat.win64_msvc2022_64",
            "addons.qt5compat.win64_msvc2022_arm64_cross_compiled",

            "addons.qtquick3d",
            "addons.qtquick3d.win64_mingw",
            "addons.qtquick3d.win64_msvc2022_64",
            "addons.qtquick3d.win64_msvc2022_arm64_cross_compiled",

            "addons.qtquicktimeline",
            "addons.qtquicktimeline.win64_mingw",
            "addons.qtquicktimeline.win64_msvc2022_64",
            "addons.qtquicktimeline.win64_msvc2022_arm64_cross_compiled",

            "addons.qtshadertools",
            "addons.qtshadertools.win64_mingw",
            "addons.qtshadertools.win64_msvc2022_64",
            "addons.qtshadertools.win64_msvc2022_arm64_cross_compiled"

        )
    }
)

# if (-not $env:INSTALL_LATEST_ONLY) {
# $component_groups += @(
# @{
# version = "6.5.3"
# components = @(
# "win64_msvc2019_64",
# "win64_mingw",
# "debug_info",
# "debug_info.win64_mingw",
# "debug_info.win64_msvc2019_64",
# "debug_info.win64_msvc2019_arm64",
    
# "addons.qt3d",
# "addons.qt3d.win64_mingw",
# "addons.qt3d.win64_msvc2019_64",
# "addons.qt3d.win64_msvc2019_arm64",
    
# "addons.qtactiveqt",
# "addons.qtactiveqt.win64_mingw",
# "addons.qtactiveqt.win64_msvc2019_64",
# "addons.qtactiveqt.win64_msvc2019_arm64",
    
# "addons.qtcharts",
# "addons.qtcharts.win64_mingw",
# "addons.qtcharts.win64_msvc2019_64",
# "addons.qtcharts.win64_msvc2019_arm64",
    
# "addons.qtconnectivity",
# "addons.qtconnectivity.win64_mingw",
# "addons.qtconnectivity.win64_msvc2019_64",
# "addons.qtconnectivity.win64_msvc2019_arm64",
    
# "addons.qtdatavis3d",
# "addons.qtdatavis3d.win64_mingw",
# "addons.qtdatavis3d.win64_msvc2019_64",
# "addons.qtdatavis3d.win64_msvc2019_arm64",
    
# "addons.qthttpserver",
# "addons.qthttpserver.win64_mingw",
# "addons.qthttpserver.win64_msvc2019_64",
# "addons.qthttpserver.win64_msvc2019_arm64",
    
# "addons.qtimageformats",
# "addons.qtimageformats.win64_mingw",
# "addons.qtimageformats.win64_msvc2019_64",
# "addons.qtimageformats.win64_msvc2019_arm64",
    
# "addons.qtlanguageserver",
# "addons.qtlanguageserver.win64_mingw",
# "addons.qtlanguageserver.win64_msvc2019_64",
# "addons.qtlanguageserver.win64_msvc2019_arm64",
    
# "addons.qtlottie",
# "addons.qtlottie.win64_mingw",
# "addons.qtlottie.win64_msvc2019_64",
# "addons.qtlottie.win64_msvc2019_arm64",
    
# "addons.qtmultimedia",
# "addons.qtmultimedia.win64_mingw",
# "addons.qtmultimedia.win64_msvc2019_64",
# "addons.qtmultimedia.win64_msvc2019_arm64",
    
# "addons.qtnetworkauth",
# "addons.qtnetworkauth.win64_mingw",
# "addons.qtnetworkauth.win64_msvc2019_64",
# "addons.qtnetworkauth.win64_msvc2019_arm64",
    
# "addons.qtpdf",
# "addons.qtpdf.win64_msvc2019_64",
    
# "addons.qtpositioning",
# "addons.qtpositioning.win64_mingw",
# "addons.qtpositioning.win64_msvc2019_64",
# "addons.qtpositioning.win64_msvc2019_arm64",
    
# "addons.qtquick3dphysics",
# "addons.qtquick3dphysics.win64_mingw",
# "addons.qtquick3dphysics.win64_msvc2019_64",
# "addons.qtquick3dphysics.win64_msvc2019_arm64",
    
# "addons.qtremoteobjects",
# "addons.qtremoteobjects.win64_mingw",
# "addons.qtremoteobjects.win64_msvc2019_64",
# "addons.qtremoteobjects.win64_msvc2019_arm64",
                
# "addons.qtscxml",
# "addons.qtscxml.win64_mingw",
# "addons.qtscxml.win64_msvc2019_64",
# "addons.qtscxml.win64_msvc2019_arm64",
    
# "addons.qtsensors",
# "addons.qtsensors.win64_mingw",
# "addons.qtsensors.win64_msvc2019_64",
# "addons.qtsensors.win64_msvc2019_arm64",
    
# "addons.qtserialbus",
# "addons.qtserialbus.win64_mingw",
# "addons.qtserialbus.win64_msvc2019_64",
# "addons.qtserialbus.win64_msvc2019_arm64",
                
# "addons.qtserialport",
# "addons.qtserialport.win64_mingw",
# "addons.qtserialport.win64_msvc2019_64",
# "addons.qtserialport.win64_msvc2019_arm64",
    
# "addons.qtspeech",
# "addons.qtspeech.win64_mingw",
# "addons.qtspeech.win64_msvc2019_64",
# "addons.qtspeech.win64_msvc2019_arm64",
    
# "addons.qtvirtualkeyboard",
# "addons.qtvirtualkeyboard.win64_mingw",
# "addons.qtvirtualkeyboard.win64_msvc2019_64",
# "addons.qtvirtualkeyboard.win64_msvc2019_arm64",
    
# "addons.qtwebchannel",
# "addons.qtwebchannel.win64_mingw",
# "addons.qtwebchannel.win64_msvc2019_64",
# "addons.qtwebchannel.win64_msvc2019_arm64",
    
# "addons.qtwebengine",
# "addons.qtwebengine.win64_msvc2019_64",
                
# "addons.qtwebsockets",
# "addons.qtwebsockets.win64_mingw",
# "addons.qtwebsockets.win64_msvc2019_64",
# "addons.qtwebsockets.win64_msvc2019_arm64",
    
# "addons.qtwebview",
# "addons.qtwebview.win64_mingw",
# "addons.qtwebview.win64_msvc2019_64",
    
# "qt5compat",
# "qt5compat.win64_mingw",
# "qt5compat.win64_msvc2019_64",
# "qt5compat.win64_msvc2019_arm64",
    
# "qtquick3d",
# "qtquick3d.win64_mingw",
# "qtquick3d.win64_msvc2019_64",
# "qtquick3d.win64_msvc2019_arm64",
            
# "qtquicktimeline",
# "qtquicktimeline.win64_mingw",
# "qtquicktimeline.win64_msvc2019_64",
# "qtquicktimeline.win64_msvc2019_arm64",
    
# "qtshadertools",
# "qtshadertools.win64_mingw",
# "qtshadertools.win64_msvc2019_64",
# "qtshadertools.win64_msvc2019_arm64"
# )
# }
# @{
# version = "6.2.4"
# components = @(
# "win64_msvc2019_64",
# "win64_mingw",
# "debug_info",
# "debug_info.win64_mingw",
# "debug_info.win64_msvc2019_64",
# "debug_info.win64_msvc2019_arm64",
    
# "addons.qt3d",
# "addons.qt3d.win64_mingw",
# "addons.qt3d.win64_msvc2019_64",
# "addons.qt3d.win64_msvc2019_arm64",
    
# "addons.qtactiveqt",
# "addons.qtactiveqt.win64_mingw",
# "addons.qtactiveqt.win64_msvc2019_64",
# "addons.qtactiveqt.win64_msvc2019_arm64",
    
# "addons.qtcharts",
# "addons.qtcharts.win64_mingw",
# "addons.qtcharts.win64_msvc2019_64",
# "addons.qtcharts.win64_msvc2019_arm64",
    
# "addons.qtconnectivity",
# "addons.qtconnectivity.win64_mingw",
# "addons.qtconnectivity.win64_msvc2019_64",
# "addons.qtconnectivity.win64_msvc2019_arm64",
    
# "addons.qtdatavis3d",
# "addons.qtdatavis3d.win64_mingw",
# "addons.qtdatavis3d.win64_msvc2019_64",
# "addons.qtdatavis3d.win64_msvc2019_arm64",
                
# "addons.qtimageformats",
# "addons.qtimageformats.win64_mingw",
# "addons.qtimageformats.win64_msvc2019_64",
# "addons.qtimageformats.win64_msvc2019_arm64",
    
# "addons.qtlottie",
# "addons.qtlottie.win64_mingw",
# "addons.qtlottie.win64_msvc2019_64",
# "addons.qtlottie.win64_msvc2019_arm64",
    
# "addons.qtmultimedia",
# "addons.qtmultimedia.win64_mingw",
# "addons.qtmultimedia.win64_msvc2019_64",
# "addons.qtmultimedia.win64_msvc2019_arm64",
    
# "addons.qtnetworkauth",
# "addons.qtnetworkauth.win64_mingw",
# "addons.qtnetworkauth.win64_msvc2019_64",
# "addons.qtnetworkauth.win64_msvc2019_arm64",
    
# "addons.qtpositioning",
# "addons.qtpositioning.win64_mingw",
# "addons.qtpositioning.win64_msvc2019_64",
# "addons.qtpositioning.win64_msvc2019_arm64",
    
# "addons.qtremoteobjects",
# "addons.qtremoteobjects.win64_mingw",
# "addons.qtremoteobjects.win64_msvc2019_64",
# "addons.qtremoteobjects.win64_msvc2019_arm64",
                
# "addons.qtscxml",
# "addons.qtscxml.win64_mingw",
# "addons.qtscxml.win64_msvc2019_64",
# "addons.qtscxml.win64_msvc2019_arm64",
    
# "addons.qtsensors",
# "addons.qtsensors.win64_mingw",
# "addons.qtsensors.win64_msvc2019_64",
# "addons.qtsensors.win64_msvc2019_arm64",
    
# "addons.qtserialbus",
# "addons.qtserialbus.win64_mingw",
# "addons.qtserialbus.win64_msvc2019_64",
# "addons.qtserialbus.win64_msvc2019_arm64",
                
# "addons.qtserialport",
# "addons.qtserialport.win64_mingw",
# "addons.qtserialport.win64_msvc2019_64",
# "addons.qtserialport.win64_msvc2019_arm64",
    
# "addons.qtvirtualkeyboard",
# "addons.qtvirtualkeyboard.win64_mingw",
# "addons.qtvirtualkeyboard.win64_msvc2019_64",
# "addons.qtvirtualkeyboard.win64_msvc2019_arm64",
    
# "addons.qtwebchannel",
# "addons.qtwebchannel.win64_mingw",
# "addons.qtwebchannel.win64_msvc2019_64",
# "addons.qtwebchannel.win64_msvc2019_arm64",
    
# "addons.qtwebengine",
# "addons.qtwebengine.win64_msvc2019_64",
                
# "addons.qtwebsockets",
# "addons.qtwebsockets.win64_mingw",
# "addons.qtwebsockets.win64_msvc2019_64",
# "addons.qtwebsockets.win64_msvc2019_arm64",
    
# "addons.qtwebview",
# "addons.qtwebview.win64_mingw",
# "addons.qtwebview.win64_msvc2019_64",
    
# "qt5compat",
# "qt5compat.win64_mingw",
# "qt5compat.win64_msvc2019_64",
# "qt5compat.win64_msvc2019_arm64",
    
# "qtquick3d",
# "qtquick3d.win64_mingw",
# "qtquick3d.win64_msvc2019_64",
# "qtquick3d.win64_msvc2019_arm64",
            
# "qtquicktimeline",
# "qtquicktimeline.win64_mingw",
# "qtquicktimeline.win64_msvc2019_64",
# "qtquicktimeline.win64_msvc2019_arm64",
    
# "qtshadertools",
# "qtshadertools.win64_mingw",
# "qtshadertools.win64_msvc2019_64",
# "qtshadertools.win64_msvc2019_arm64"
# )
# }
# # @{
# # version = "5.15.2"
# # components = @(
# # "win32_msvc2019",
# # "win64_msvc2019_64",
# # "win32_mingw81",
# # "win64_mingw81",
# # "debug_info",
# # "debug_info.win32_msvc2019",
# # "debug_info.win64_msvc2019_64",
# # "qtcharts",
# # "qtcharts.win32_mingw81",
# # "qtcharts.win32_msvc2019",
# # "qtcharts.win64_mingw81",
# # "qtcharts.win64_msvc2019_64",
            
# # "qtquick3d",
# # "qtquick3d.win32_mingw81",
# # "qtquick3d.win32_msvc2019",
# # "qtquick3d.win64_mingw81",
# # "qtquick3d.win64_msvc2019_64",
            
# # "qtdatavis3d",
# # "qtdatavis3d.win32_mingw81",
# # "qtdatavis3d.win32_msvc2019",
# # "qtdatavis3d.win64_mingw81",
# # "qtdatavis3d.win64_msvc2019_64",
# # "qtlottie",
# # "qtlottie.win32_mingw81",
# # "qtlottie.win32_msvc2019",
# # "qtlottie.win64_mingw81",
# # "qtlottie.win64_msvc2019_64",
# # "qtnetworkauth",
# # "qtnetworkauth.win32_mingw81",
# # "qtnetworkauth.win32_msvc2019",
# # "qtnetworkauth.win64_mingw81",
# # "qtnetworkauth.win64_msvc2019_64",
# # "qtpurchasing",
# # "qtpurchasing.win32_mingw81",
# # "qtpurchasing.win32_msvc2019",
# # "qtpurchasing.win64_mingw81",
# # "qtpurchasing.win64_msvc2019_64",
# # "qtscript",
# # "qtscript.win32_mingw81",
# # "qtscript.win32_msvc2019",
# # "qtscript.win64_mingw81",
# # "qtscript.win64_msvc2019_64",
# # "qtvirtualkeyboard",
# # "qtvirtualkeyboard.win32_mingw81",
# # "qtvirtualkeyboard.win32_msvc2019",
# # "qtvirtualkeyboard.win64_mingw81",
# # "qtvirtualkeyboard.win64_msvc2019_64",
# # "qtwebengine",
# # "qtwebengine.win32_msvc2019",
# # "qtwebengine.win64_msvc2019_64",
# # "qtwebglplugin",
# # "qtwebglplugin.win32_mingw81",
# # "qtwebglplugin.win32_msvc2019",
# # "qtwebglplugin.win64_mingw81",
# # "qtwebglplugin.win64_msvc2019_64",
            
# # "qtquicktimeline",
# # "qtquicktimeline.win32_mingw81",
# # "qtquicktimeline.win32_msvc2019",
# # "qtquicktimeline.win64_mingw81",
# # "qtquicktimeline.win64_msvc2019_64"
# # )
# # }
# )
# }

# $component_groups += @(
# @{
# components = @(
# "qt.tools.win32_mingw530",
# "qt.tools.win32_mingw810",
# "qt.tools.win64_mingw810",
# "qt.tools.win64_mingw900",
# "qt.tools.ifw.47",
# "qt.license.thirdparty"
# )
# }
# )

# install components
foreach ($componentGroup in $component_groups) {
    if ($componentGroup.version -and $componentGroup.version -ge "6.8.0") {
        $newPath = [IO.Path]::Combine($installDir, $componentGroup.version)
        foreach ($component in $componentGroup.components) {
            Write-Host("6.8 and up")
            Install-QtComponent -Version $componentGroup.version -Name $component -Path "$newPath"
        }
        ConfigureQtVersion $installDir $componentGroup.version
    }
    elseif ($componentGroup.version) {
        foreach ($component in $componentGroup.components) {
            Write-Host("component: $component")
            Write-Host("installDir: $installDir")
            Install-QtComponent -Version $componentGroup.version -Name $component -Path $installDir
        }
        ConfigureQtVersion $installDir $componentGroup.version

    }
    else {
        foreach ($component in $componentGroup.components) {
            Install-QtComponent -Id $component -Path $installDir
        }
    }
}

# compressing folder
Write-Host "Compacting C:\Qt..." -NoNewline
compact /c /i /s:C:\Qt | Out-Null
Write-Host "OK" -ForegroundColor Green

# set aliases
$sym_links = @{
    #"latest" = "5.15.2"
    "6.8"    = "6.8.1"
    #"6.5" = "6.5.3"
    #"6.2" = "6.2.4"
    #"5.15" = "5.15.2"
    #"5.9" = "5.9.9"
}

foreach ($link in $sym_links.Keys) {
    $target = $sym_links[$link]
    New-Item -ItemType SymbolicLink -Path "$installDir\$link" -Target "$installDir\$target" -Force | Out-Null
}

Write-Host "Qt 5.x installed" -ForegroundColor Green