From 76e0c21886a7d5498180032bd941dc8bf09c8d6c Mon Sep 17 00:00:00 2001 From: he3als <65787561+he3als@users.noreply.github.com> Date: Fri, 4 Oct 2024 23:26:29 +0100 Subject: [PATCH] feat(unfinished): some initial work --- .../Disable Microsoft Copilot (default).ps1 | 24 +++++++ .../Enable Microsoft Copilot.ps1 | 44 +++++++++++++ .../AtlasModules/Other/atlas-script.ico | Bin 0 -> 188143 bytes .../Scripts/Modules/Edge/Edge.psm1 | 60 +++++++++++++++++ .../Scripts/Modules/Explorer/Explorer.psm1 | 30 +++++++++ .../Scripts/Modules/WinGet/WinGet.psm1 | 62 ++++++++++++++++++ .../AtlasModules/Scripts/WingetCheck.ps1 | 58 ++++++++++++++++ 7 files changed, 278 insertions(+) create mode 100644 src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Disable Microsoft Copilot (default).ps1 create mode 100644 src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Enable Microsoft Copilot.ps1 create mode 100644 src/playbook/Executables/AtlasModules/Other/atlas-script.ico create mode 100644 src/playbook/Executables/AtlasModules/Scripts/Modules/Edge/Edge.psm1 create mode 100644 src/playbook/Executables/AtlasModules/Scripts/Modules/Explorer/Explorer.psm1 create mode 100644 src/playbook/Executables/AtlasModules/Scripts/Modules/WinGet/WinGet.psm1 create mode 100644 src/playbook/Executables/AtlasModules/Scripts/WingetCheck.ps1 diff --git a/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Disable Microsoft Copilot (default).ps1 b/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Disable Microsoft Copilot (default).ps1 new file mode 100644 index 0000000000..e8990ea58e --- /dev/null +++ b/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Disable Microsoft Copilot (default).ps1 @@ -0,0 +1,24 @@ +#Requires -RunAsAdministrator + +param ( + [switch]$NonInteractive +) + +$windir = [Environment]::GetFolderPath('Windows') +& "$windir\AtlasModules\initPowerShell.ps1" + +# Remove PWA/app version +Get-AppxPackage -AllUsers Microsoft.Copilot* | Remove-AppxPackage -AllUsers + +# Kill Explorer to ensure Registry changes apply +$exp = Stop-Explorer + +# Registry changes +Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowCopilotButton" -Value 0 -Force -EA 0 +New-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -PropertyType DWord -Value 1 -Force + +# Start Explorer again +Restart-Explorer -ExplorerStarted $exp + +Write-Host "Finished, changes are applied." -ForegroundColor Green +Read-Pause \ No newline at end of file diff --git a/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Enable Microsoft Copilot.ps1 b/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Enable Microsoft Copilot.ps1 new file mode 100644 index 0000000000..2bd6151da1 --- /dev/null +++ b/src/playbook/Executables/AtlasDesktop/3. General Configuration/Microsoft Copilot/Enable Microsoft Copilot.ps1 @@ -0,0 +1,44 @@ +#Requires -RunAsAdministrator + +param ( + [switch]$NonInteractive +) + +$windir = [Environment]::GetFolderPath('Windows') +& "$windir\AtlasModules\initPowerShell.ps1" + +# Check if Edge is installed +$edgeArgs = @{ + OnlyEdge = $true + NonInteractive = $NonInteractive +} +Invoke-EdgeTest @edgeArgs + +# Decide if Copilot is available +# If not, it could be 24H2 (which replaces it with an app) +try { + $copilotAvailable = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\Shell\Copilot" -Name "IsCopilotAvailable" -EA 0 +} catch { + $appText = "You can find the Copilot app in your Start Menu." +} + +if ($copilotAvailable -eq 0) { + Write-Warning "Copilot on the taskbar isn't available, the app will be installed instead." + & "$winver\AtlasModules\Scripts\wingetCheck.cmd" /nodashes $(if ($NonInteractive) { '/silent' }) + if ($LASTEXITCODE -ne 0) { exit 1 } + + Write-Output "Installing Copilot..." + winget install -e --id 9NHT9RB2F4HD --uninstall-previous -h --accept-source-agreements --accept-package-agreements --force --disable-interactivity | Out-Null +} else { + # Show in taskbar + Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowCopilotButton" -Value 1 -EA 0 +} + +# Delete policy +Remove-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -Force -EA 0 + +# Restart Explorer to apply changes +Restart-Explorer + +Write-Host "Finished, changes are applied. $appText" -ForegroundColor Green +Read-Pause \ No newline at end of file diff --git a/src/playbook/Executables/AtlasModules/Other/atlas-script.ico b/src/playbook/Executables/AtlasModules/Other/atlas-script.ico new file mode 100644 index 0000000000000000000000000000000000000000..ce240d6805ddd74bf84264d75f75320b599b141f GIT binary patch literal 188143 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 i@$bI>Psaqo-$null + return $true +} + +Export-ModuleMember -Function Get-ExplorerStatus, Restart-Explorer, Start-Explorer, Stop-Explorer \ No newline at end of file diff --git a/src/playbook/Executables/AtlasModules/Scripts/Modules/WinGet/WinGet.psm1 b/src/playbook/Executables/AtlasModules/Scripts/Modules/WinGet/WinGet.psm1 new file mode 100644 index 0000000000..b980967abe --- /dev/null +++ b/src/playbook/Executables/AtlasModules/Scripts/Modules/WinGet/WinGet.psm1 @@ -0,0 +1,62 @@ +function Invoke-WinGetCheck { + param ( + [switch]$NonInteractive, + [switch]$NoDashes, + [switch]$NonFatal + ) + + $dashes = '-' * 101 + if (!$Silent -and !$NoDashes) { + Write-Host $dashes + } + + # Check internet by pinging Microsoft + if (!(Test-Connection -ComputerName "www.microsoft.com" -Count 1 -Quiet)) { + if ($NonFatal) { return $false } + + Write-Error "You must have an internet connection to continue." + if (!$NonInteractive) { Read-Pause } + + exit 2 + } + + Write-Host "Checking for WinGet..." + + function WingetError($uri, $action) { + Write-Host @" +You need the latest version of WinGet to use this script. +WinGet is included with 'App Installer' on the Microsoft Store, it's also on GitHub. +"@ -ForegroundColor Yellow + + choice /c:yn /n /m "Would you like to open the Microsoft Store to $action it? [Y/N] " + if ($LASTEXITCODE -eq 1) { + Start-Process $uri + } + exit 3 + } + + # Check if WinGet is installed + if (!(Get-Command "winget" -EA 0)) { + if ($NonFatal) { return $false } + + # Open Microsoft Store for App Installer if not installed + WingetError "ms-windows-store://pdp/?ProductId=9NBLGGH4NNS1" "install" + } + + # Check WinGet functionality by searching for VSCode + winget search "Microsoft Visual Studio Code" --accept-source-agreements --disable-interactivity --ignore-warnings *>$null + if (!$?) { + if ($Silent) { exit 1 } + + # Open Microsoft Store to update apps if search fails + WingetError "ms-windows-store://downloadsandupdates" "update" + } + + if (!$NoDashes) { + Write-Host "$dashes`n" + } + + return $true +} + +Export-ModuleMember -Function Invoke-WinGetCheck \ No newline at end of file diff --git a/src/playbook/Executables/AtlasModules/Scripts/WingetCheck.ps1 b/src/playbook/Executables/AtlasModules/Scripts/WingetCheck.ps1 new file mode 100644 index 0000000000..3ae0bfe6f9 --- /dev/null +++ b/src/playbook/Executables/AtlasModules/Scripts/WingetCheck.ps1 @@ -0,0 +1,58 @@ +param ( + [switch]$NonInteractive, + [switch]$NoDashes, + [switch]$NonFatal +) + +$dashes = '-' * 101 +if (!$Silent -and !$NoDashes) { + Write-Output $dashes +} + +# Check internet by pinging Microsoft +if (!(Test-Connection -ComputerName "www.microsoft.com" -Count 1 -Quiet)) { + if ($NonFatal) { return $false } + + Write-Error "You must have an internet connection to continue." + if (!$NonInteractive) { Read-Pause } + + exit 2 +} + +Write-Output "Checking for WinGet..." + +function WingetError($uri, $action) { + Write-Host @" +You need the latest version of WinGet to use this script. +WinGet is included with 'App Installer' on the Microsoft Store. +"@ -ForegroundColor Yellow + + choice /c:yn /n /m "Would you like to open the Microsoft Store to $action it? [Y/N] " + if ($LASTEXITCODE -eq 1) { + Start-Process $uri + } + exit 3 +} + +# Check if WinGet is installed +if (!(Get-Command "winget" -EA 0)) { + if ($NonFatal) { return $false } + + # Open Microsoft Store for App Installer if not installed + WingetError "ms-windows-store://pdp/?ProductId=9NBLGGH4NNS1" "install" +} + +# Check WinGet functionality by searching for VSCode +winget search "Microsoft Visual Studio Code" --accept-source-agreements --disable-interactivity --ignore-warnings *>$null +if (!$?) { + if ($Silent) { exit 1 } + + # Open Microsoft Store to update apps if search fails + WingetError "ms-windows-store://downloadsandupdates" "update" +} + +if (!$NoDashes) { + Write-Output "$dashes`n" +} + +return $true \ No newline at end of file