param(
    $Action,
    [hashtable] $Arguments
)

& {
    param($parameters)

    . "$PSScriptRoot/../../../Common/Scripts/BrowserAutomation.ps1";
    . "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
    . "$PSScriptRoot/../../../Common/Scripts/System.ps1";

    [System.Tuple[string, string, string][]] $versions = @(
        [System.Tuple]::Create("visualstudio2019enterprise", "VisualStudio.16.Release", "Microsoft.VisualStudio.Product.Enterprise"),
        [System.Tuple]::Create("visualstudio2019community", "VisualStudio.16.Release", "Microsoft.VisualStudio.Product.Community"),
        [System.Tuple]::Create("visualstudio2022enterprise", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Enterprise"),
        [System.Tuple]::Create("visualstudio2022community", "VisualStudio.17.Release", "Microsoft.VisualStudio.Product.Community")
    );

    Start-SoftwareInstaller @parameters `
        -Installer {
            foreach ($version in $versions) {
                $packageName = $version[0];
                Write-Host "Installing ``$packageName``…";
                Install-ChocoPackage $packageName;
                Remove-DesktopIcon "CocosCreator*";
                Remove-DesktopIcon "Unity Hub*";
            }
        };

    # ToDo: Add restoration
} $PSBoundParameters;