Last active
November 29, 2024 21:27
-
-
Save craeckor/179c1ced5896270012e905aaa7bc1530 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } | |
| Write-Host "Microsoft Store Installer" | |
| Write-Host "Select, if you want to install only the Microsoft Store or the Microsoft Store and all requirements." | |
| Write-Host "Warning: Only select the option 1 if you are sure that all requirements are already installed or if you using one of my images." | |
| Write-Host "1. Install only the Microsoft Store" | |
| Write-Host "2. Install the Microsoft Store and all requirements" | |
| $selection = Read-Host "Select an option: " | |
| if ($selection -eq "1") { | |
| $InstallAllRequirements = $false | |
| } elseif ($selection -eq "2") { | |
| $InstallAllRequirements = $true | |
| } else { | |
| Write-Host "Invalid option. Aborting..." | |
| exit | |
| } | |
| $foldername = Get-Date -Format yyyyMMdd_HHmmss | |
| $workpath = "$env:TEMP\$foldername" | |
| # Create a temporary folder | |
| New-Item -Path $workpath -ItemType Directory -Force | Out-Null | |
| Start-Sleep -Seconds 3 | |
| Set-Location -Path $workpath | |
| $b64 = "$workpath\b64" | |
| $zipf = "$workpath\f.zip" | |
| "UEsDBBQAAAAIAAKZN1nYfb8auQEAAKwDAAAQAAAAZGlzYWJsZS1pcHY2LnBzMZVSwWrbQBC9G/wPD1eHFrqGXEIpFOpaSXAojqkKvRTCRhrZm6531d2JU0jz752Vpbpq7UPZg8TMm3lv3kxBrD76UrPxDmqleYNsVRRlMA1/8p7HoxdY6cA4g0Juor6zhMVqdw7tKsw32q0J+bIYjxIyp9o4gkaTGrFHZB8IPpi1cdoiErNx6zgeZf3vpbHU0r7DZMD8VVe6YQpFB5zeR+8me54rYpQPIZDjgxhR8SdBT9rXC8H7p/EIQFtyCKduakk82/N9MK6SBNTcbxvvhGKRYxtvuWxMc942SFS/67sGuYtzawRdUNhRmFVVoCg6nveKC7074kOySOO6uFmiFh9Q+4BAUp6ysFrkHJvkJ+beJdRnr67FFQmkPUqQRUC3xn8cboUMdyil2lo44kcfvqFzXFT/jyXC/mVDgdTN3T2VjKfsdnrhEkkFRd+RcXigZ0Fd+nChy02P65ZRHKda6i1BOqXvKWLV02S1tpEOZhPD0WN3EWkdES/ph942lt7iyvu1pZR8JeYKLm2zQ8kRnk3bN3mNyZtp++ToBhs+PcrJO4BaOKZQ65Jm1uiYJvsrogYFFDGUJsP9AlBLAQI/ABQAAAAIAAKZN1nYfb8auQEAAKwDAAAQACQAAAAAAAAAIAAAAAAAAABkaXNhYmxlLWlwdjYucHMxCgAgAAAAAAABABgA6HbgJdsN2wEAAAAAAAAAAAAAAAAAAAAAUEsFBgAAAAABAAEAYgAAAOcBAAAAAA==" > $b64 | |
| [System.IO.File]::WriteAllBytes("$zipf", [System.Convert]::FromBase64String((Get-Content -Path $b64 -Raw))) | |
| Expand-Archive -Path $zipf -DestinationPath $workpath -Force | |
| # Network-Check | |
| do { | |
| Clear-Host | |
| $check = 0 | |
| # Repeat the ping check 10 times | |
| for ($i = 1; $i -le 10; $i++) { | |
| Start-Sleep -Seconds 1 | |
| if (-not (Test-Connection -ComputerName 1.1.1.1 -Count 1 -Quiet)) { | |
| $check++ | |
| } | |
| } | |
| # Check the value of check variable | |
| if ($check -ge 1) { | |
| Write-Host "Please connect your Laptop or PC to the internet." | |
| Write-Host "Waiting 10 Seconds..." | |
| Start-Sleep -Seconds 10 | |
| } | |
| } while ($check -ge 1) | |
| Start-Process -Wait powershell -ArgumentList "-ExecutionPolicy Bypass -File $workpath\disable-ipv6.ps1" -WindowStyle Hidden | |
| try { | |
| Invoke-RestMethod -Uri "https://store.rg-adguard.net/api/GetFiles" -Method Post | Out-Null | |
| } catch { | |
| Write-Host "https://store.rg-adguard.net/api/GetFiles is not reachable." | |
| Write-Host "Some important services are down. Aborting..." | |
| exit | |
| } | |
| try { | |
| Invoke-RestMethod -Uri "https://cdn1.craeckor.ch/data/.ping.txt" | Out-Null | |
| } catch { | |
| Write-Host "https://cdn1.craeckor.ch is not reachable." | |
| Write-Host "Some important services are down. Aborting..." | |
| exit | |
| } | |
| try { | |
| Invoke-RestMethod -Uri "https://cdn2.craeckor.ch" | Out-Null | |
| } catch { | |
| Write-Host "https://cdn2.craeckor.ch is not reachable." | |
| Write-Host "Some important services are down. Aborting..." | |
| exit | |
| } | |
| Write-Host "Everything is online. Continue..." | |
| # Download Get-AppxPackage-DownloadLinks-Function and Install-AppxProvisionedPackage-Function and Get-CurlDownload-Function | |
| $maxRetries = 10 | |
| $retryDelay = 10 | |
| $retryCount = 0 | |
| $FileAdded = $false | |
| while ($retryCount -lt $maxRetries -and -not $FileAdded) { | |
| curl.exe -k -s -L --connect-timeout 45 --retry 5 --retry-max-time 120 --retry-connrefused -o "$workpath\data.zip" -X GET "https://cdn2.craeckor.ch/global/uploads/data/new-win10iotltscc/additional.zip" | |
| Start-Sleep -Seconds 3 | |
| if ($LASTEXITCODE -eq 0) { | |
| if (Test-Path -Path $workpath\data.zip) { | |
| $FileAdded = $true | |
| } else { | |
| Start-Sleep -Seconds $retryDelay | |
| $retryCount++ | |
| } | |
| } else { | |
| Start-Sleep -Seconds $retryDelay | |
| $retryCount++ | |
| } | |
| } | |
| # Extract Get-AppxPackage-DownloadLinks-Function and Install-AppxProvisionedPackage-Function | |
| Expand-Archive -Path $workpath\data.zip -DestinationPath $workpath\data -Force | |
| Start-Sleep -Seconds 3 | |
| # Import Get-AppxPackage-DownloadLinks-Function | |
| Import-Module $workpath\data\Get-AppxPackage-DownloadLinks-Function.ps1 | |
| Import-Module $workpath\data\Install-AppxProvisionedPackage-Function.ps1 | |
| Import-Module $workpath\data\Get-CurlDownload-Function.ps1 | |
| Start-Sleep -Seconds 3 | |
| if ($InstallAllRequirements) { | |
| $download = @() | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.WindowsStore_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Framework*x86*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Framework*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Runtime*x86*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Runtime*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.UI.Xaml.2.8*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.UI.Xaml.2.8*x86*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00.UWPDesktop*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00.UWPDesktop*x86*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00_*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00_*x86*.appx*"}).DownloadLink | |
| # Download and install the required dependencies | |
| $packagePath = "$workpath\package.appx" | |
| $download | ForEach-Object { | |
| Get-CurlDownload -URL $_ -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| } | |
| # Instsall Microsoft Windows AppRuntime | |
| $download = @() | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.WindowsAppRuntime.1.5_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.5*x86*.msix*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.5*x64*.msix*"}).DownloadLink | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.WindowsAppRuntime.1.6_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.6*x86*.msix*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.6*x64*.msix*"}).DownloadLink | |
| # Download and install Microsoft Windows AppRuntime | |
| $packagePath = "$workpath\package.msix" | |
| $download | ForEach-Object { | |
| Get-CurlDownload -URL $_ -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| } | |
| $download = @() | |
| # Download and install Microsoft Service Store Engagement | |
| # Get the download link for Microsoft Service Store Engagement | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.Services.Store.Engagement_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.Services.Store.Engagement*x64*.appx*"}).DownloadLink | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.Services.Store.Engagement*x86*.appx*"}).DownloadLink | |
| # Download and install Microsoft Service Store Engagement | |
| $download | ForEach-Object { | |
| Get-CurlDownload -URL $_ -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| } | |
| $download = @() | |
| # Download and install Microsoft Store Purchase App | |
| # Get the download link for Microsoft Store Purchase App | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.StorePurchaseApp_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download = ($data | Where-Object {$_.PackageName -like "*Microsoft.StorePurchaseApp*.appxbundle*"}).DownloadLink | |
| # Download and install Microsoft Store Purchase App | |
| $packagePath = "$workpath\package.appxbundle" | |
| Get-CurlDownload -URL $download -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| # Download and install winget | |
| # Get the download link for winget | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.DesktopAppInstaller_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download = ($data | Where-Object {$_.PackageName -like "*Microsoft.DesktopAppInstaller*.msixbundle*"}).DownloadLink | |
| # download and install winget | |
| $packagePath = "$workpath\package.msixbundle" | |
| Get-CurlDownload -URL $download -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| # Register all provisioned packages | |
| $appxope = Get-AppxProvisionedPackage -Online | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Framework*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Framework*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Runtime*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.NET.Native.Runtime*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.UI.Xaml.2.8*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.UI.Xaml.2.8*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00.UWPDesktop*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00.UWPDesktop*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00_*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.VCLibs.140.00_*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.5*x86*.msix*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.5*x64*.msix*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.6*x86*.msix*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.WindowsAppRuntime.1.6*x64*.msix*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.Services.Store.Engagement*x64*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.Services.Store.Engagement*x86*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.StorePurchaseApp*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| $appxope | Where-Object {$_.PackageName -like "*Microsoft.DesktopAppInstaller*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| } | |
| # Download required dependencies for Xbox | |
| $download = @() | |
| $data = Get-AppxPackage-DownloadLinks -PackageFamilyName Microsoft.WindowsStore_8wekyb3d8bbwe -IgnoreEmptyList | |
| $download += ($data | Where-Object {$_.PackageName -like "*Microsoft.WindowsStore*.msixbundle*"}).DownloadLink | |
| # Download and install Xbox and Microsoft Store | |
| $packagePath = "$workpath\package.msixbundle" | |
| $download | ForEach-Object { | |
| Get-CurlDownload -URL $_ -OutFile $packagePath | |
| Install-AppxProvisionedPackage -PackagePath $packagePath | |
| Remove-Item -Path $packagePath -Force | |
| Start-Sleep -Seconds 3 | |
| } | |
| # Register all provisioned packages | |
| $appxop = Get-AppxProvisionedPackage -Online | |
| $appxop | Where-Object {$_.PackageName -like "*Microsoft.WindowsStore*"} | ForEach-Object {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)" | Out-Null} | |
| Copy-Item -Path $workpath\data\enable-ipv6.ps1 -Destination $workpath -Force | |
| Start-Sleep -Seconds 3 | |
| Start-Process -Wait powershell -ArgumentList "-ExecutionPolicy Bypass -File $workpath\enable-ipv6.ps1" -WindowStyle Hidden | |
| # Clean up | |
| Set-Location -Path $env:TEMP | |
| Remove-Item -Path $workpath -Recurse -Force |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment