Skip to content

Update Fleet-maintained apps - #46386

Closed
fleet-release wants to merge 1 commit into
mainfrom
fma-2605282044
Closed

Update Fleet-maintained apps#46386
fleet-release wants to merge 1 commit into
mainfrom
fma-2605282044

Conversation

@fleet-release

@fleet-release fleet-release commented May 28, 2026

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

Release Notes

  • Chores
    • Updated version metadata and installation packages for multiple applications including Arc, Brave Browser, Camtasia, Claude, Dialpad, Grammarly, Granola, Notepad++, Parallels Desktop, Power BI, and Canva to their latest releases.

Review Change Stack

Generated automatically with cmd/maintained-apps.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/arc/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/brave-browser/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/camtasia/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/canva/windows.json

=== Install Script (no changes) ===
=== Uninstall // 58022dd8 -> f683286d ===

--- /tmp/old.k8Ugbb	2026-05-28 20:48:04.119491983 +0000
+++ /tmp/new.3AJKR1	2026-05-28 20:48:04.120491987 +0000
@@ -32,7 +32,7 @@
 # Parse the uninstall string. Handle both quoted and unquoted exe paths.
 if ($uninstallString -match '^"([^"]+)"(.*)') {
     $exePath = $matches[1]
-} elseif ($uninstallString -match '^([^\s]+)(.*)') {
+} elseif ($uninstallString -match '^(.+?\.exe)(.*)$') {
     $exePath = $matches[1]
 } else {
     Write-Host "Error: Could not parse uninstall string: $uninstallString"

ee/maintained-apps/outputs/claude/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/dialpad/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/grammarly-desktop/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/granola/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/granola/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/notepad++/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/parallels/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/power-bi/windows.json

=== Install // ee068356 -> 4be62464 ===

--- /tmp/old.iVcndz	2026-05-28 20:48:04.408493365 +0000
+++ /tmp/new.R7xWBU	2026-05-28 20:48:04.408493365 +0000
@@ -1,12 +1,8 @@
-# Learn more about .exe install scripts:
-# http://fleetdm.com/learn-more-about/exe-install-scripts
-
 $exeFilePath = "${env:INSTALLER_PATH}"
 
 try {
 
 # Add argument to install silently
-# Asana uses --silent for silent installation
 $processOptions = @{
   FilePath = "$exeFilePath"
   ArgumentList = "/silent", "/norestart", "ACCEPT_EULA=1"

=== Uninstall // fa3b8ea6 -> 201475bb ===

--- /tmp/old.HbuBlI	2026-05-28 20:48:04.429493465 +0000
+++ /tmp/new.5zmvDi	2026-05-28 20:48:04.429493465 +0000
@@ -8,13 +8,16 @@
 # Removing the MSI directly orphans the bundle: its uninstall then no-ops
 # (returns 0) and leaves the "Microsoft PowerBI Desktop (x64)" registration
 # behind, which is what Fleet's osquery-based validator keeps detecting.
-# Correct approach: uninstall via the BUNDLE first; it removes the MSI and its
-# own registration. Burn relaunches a cached copy of itself + spawns msiexec
-# asynchronously, so wait for those to finish.
+#
+# Correct approach: uninstall via the BUNDLE first. It removes both the MSI and
+# its own registration. Burn relaunches a cached copy of itself and spawns
+# msiexec asynchronously, so wait for those to finish.
 
 $ExpectedExitCodes = @(0, 1605, 1641, 3010)
 $exitCode = 0
 
+# Power BI's default install folder; used as a safety check before deleting any
+# stale registration that survives a successful uninstall.
 $installDirs = @(
     (Join-Path $env:ProgramFiles 'Microsoft Power BI Desktop'),
     (Join-Path ${env:ProgramFiles(x86)} 'Microsoft Power BI Desktop')
@@ -58,6 +61,8 @@
 }
 
 try {
+
+    # Uninstall roots across all hives (matches osquery's "programs" table).
     $roots = [System.Collections.Generic.List[string]]::new()
     $roots.Add('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
     $roots.Add('HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall')
@@ -77,20 +82,23 @@
         Stop-Process -Name $proc -Force -ErrorAction SilentlyContinue
     }
 
-    # Phase 1: uninstall via the Burn bundle bootstrapper(s) FIRST.
+    # --- Phase 1: uninstall via the Burn bundle bootstrapper(s) FIRST. ---
     foreach ($e in ($entries | Where-Object { $_.Command -match "(?i)PBIDesktopSetup.*\.exe" })) {
         $exe = Get-ExePath $e.Command
         if (-not $exe) { Write-Host "Could not parse bundle exe from: $($e.Command)"; continue }
         if (-not (Test-Path -LiteralPath $exe)) { Write-Host "Bundle exe missing: $exe"; continue }
 
         Write-Host "Uninstalling bundle: '$($e.DisplayName)'"
+        Write-Host "  Command: $exe"
+        Write-Host "  Args: /uninstall /quiet /norestart"
         $p = Start-Process -FilePath $exe -ArgumentList "/uninstall /quiet /norestart" -PassThru -Wait
         Write-Host "  Exit code: $($p.ExitCode)"
         if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }
+
         Wait-ForProcessExit -Names @("PBIDesktopSetup_x64", "PBIDesktopSetup", "msiexec") -TimeoutSeconds 240
     }
 
-    # Phase 2: remove any MSI entries the bundle didn't clean up.
+    # --- Phase 2: remove any MSI entries the bundle didn't clean up. ---
     foreach ($e in (Get-PowerBIEntries -Roots $roots)) {
         $msiCode = $null
         if ($e.Command -match "(?i)MsiExec\.exe\s+/[IX]\s*(\{[A-F0-9-]+\})") { $msiCode = $Matches[1] }
@@ -104,16 +112,22 @@
         if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }
     }
 
-    # Phase 3: safety net for stale registration when product files are gone.
+    # --- Phase 3: safety net. If the product files are gone but a stale ARP
+    # registration lingers, remove the orphaned key so detection clears. Gated
+    # on the install folder being absent so we never hide a real install. ---
     $productGone = -not ($installDirs | Where-Object { $_ -and (Test-Path -LiteralPath $_) })
     foreach ($e in (Get-PowerBIEntries -Roots $roots)) {
-        if ($productGone) {
+        $isMachineKey = $e.KeyPath -like 'Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\*'
+        if ($productGone -and $isMachineKey) {
             Write-Host "Removing orphaned registration: '$($e.DisplayName)' ($($e.KeyPath))"
             Remove-Item -Path $e.KeyPath -Recurse -Force -ErrorAction SilentlyContinue
         } else {
             Write-Host "WARNING: entry still present and product files remain: '$($e.DisplayName)'"
             if ($exitCode -eq 0) { $exitCode = 1 }
         }
+            Write-Host "WARNING: entry still present and product files remain: '$($e.DisplayName)'"
+            if ($exitCode -eq 0) { $exitCode = 1 }
+        }
     }
 
 } catch {

@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request updates maintained-app manifest metadata across 12 applications spanning macOS and Windows platforms. Most updates are straightforward version bumps with corresponding changes to installer URLs, SHA256 checksums, and version-comparison thresholds in patched queries. The Canva Windows update refines uninstall script path parsing logic by changing from whitespace-based to .exe-anchored regex matching. The Power BI Windows update includes new install and uninstall script references with revised logic, though the uninstall script introduces a duplicated warning block in its Phase 3 fallback path that warrants verification.

Possibly related PRs

  • fleetdm/fleet#46127: Updates ee/maintained-apps/outputs/claude/darwin.json with version and installer metadata changes following the same pattern as this PR.
  • fleetdm/fleet#44962: Batch maintained-apps manifest updates for multiple apps including Arc and Brave Browser with version and installer changes.
  • fleetdm/fleet#45026: Updates Granola macOS manifest version, patched thresholds, and installer metadata similar to the Granola changes in this PR.
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is minimal and generic, stating only 'Automated ingestion of latest Fleet-maintained app data' without addressing any sections from the repository's PR template or providing substantive context about the changes. Add a more detailed description including what apps were updated, version numbers changed, and whether testing was performed. Address relevant checklist items from the PR template, particularly the testing and changes file sections.
Title check ❓ Inconclusive The title 'Update Fleet-maintained apps' is general and relates to the changeset, but it is vague and does not clearly convey the specific nature of the changes (version updates across multiple applications). Consider a more specific title like 'Update Fleet-maintained apps to latest versions' or listing key apps being updated to better communicate the changeset's scope.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fma-2605282044

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/maintained-apps/outputs/power-bi/windows.json`:
- Line 19: Phase 3 contains duplicated warning lines and an extra closing brace
causing a parse error; inside the loop over (Get-PowerBIEntries -Roots $roots)
that checks $productGone and $isMachineKey (the if/else under "Phase 3"), remove
the duplicated Write-Host and if ($exitCode -eq 0) { $exitCode = 1 } lines that
appear after the else block and delete the unmatched extra "}" so the if/else
for removing orphaned registration remains the only code path; verify braces
balance and that $productGone and $isMachineKey logic is unchanged in
Get-PowerBIEntries/Phase 3.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8848f5b4-8c2e-4b2e-ae97-2aff9c1124e8

📥 Commits

Reviewing files that changed from the base of the PR and between 9b65497 and 8394dce.

📒 Files selected for processing (12)
  • ee/maintained-apps/outputs/arc/darwin.json
  • ee/maintained-apps/outputs/brave-browser/darwin.json
  • ee/maintained-apps/outputs/camtasia/darwin.json
  • ee/maintained-apps/outputs/canva/windows.json
  • ee/maintained-apps/outputs/claude/darwin.json
  • ee/maintained-apps/outputs/dialpad/darwin.json
  • ee/maintained-apps/outputs/grammarly-desktop/darwin.json
  • ee/maintained-apps/outputs/granola/darwin.json
  • ee/maintained-apps/outputs/granola/windows.json
  • ee/maintained-apps/outputs/notepad++/windows.json
  • ee/maintained-apps/outputs/parallels/darwin.json
  • ee/maintained-apps/outputs/power-bi/windows.json

"refs": {
"ee068356": "# Learn more about .exe install scripts:\n# http://fleetdm.com/learn-more-about/exe-install-scripts\n\n$exeFilePath = \"${env:INSTALLER_PATH}\"\n\ntry {\n\n# Add argument to install silently\n# Asana uses --silent for silent installation\n$processOptions = @{\n FilePath = \"$exeFilePath\"\n ArgumentList = \"/silent\", \"/norestart\", \"ACCEPT_EULA=1\"\n PassThru = $true\n Wait = $true\n}\n\n# Start process and track exit code\n$process = Start-Process @processOptions\n$exitCode = $process.ExitCode\n\n# Prints the exit code\nWrite-Host \"Install exit code: $exitCode\"\nExit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"fa3b8ea6": "# Power BI Desktop's EXE installer is a WiX \"Burn\" bundle. It registers TWO\n# uninstall entries:\n# * \"Microsoft PowerBI Desktop (x64)\" -> the bundle bootstrapper\n# (...\\Package Cache\\{afa18d15-...}\\PBIDesktopSetup_x64.exe)\n# * \"Microsoft Power BI Desktop (x64)\" -> the MSI the bundle installed\n# (MsiExec.exe /X{c7d2053f-...})\n#\n# Removing the MSI directly orphans the bundle: its uninstall then no-ops\n# (returns 0) and leaves the \"Microsoft PowerBI Desktop (x64)\" registration\n# behind, which is what Fleet's osquery-based validator keeps detecting.\n# Correct approach: uninstall via the BUNDLE first; it removes the MSI and its\n# own registration. Burn relaunches a cached copy of itself + spawns msiexec\n# asynchronously, so wait for those to finish.\n\n$ExpectedExitCodes = @(0, 1605, 1641, 3010)\n$exitCode = 0\n\n$installDirs = @(\n (Join-Path $env:ProgramFiles 'Microsoft Power BI Desktop'),\n (Join-Path ${env:ProgramFiles(x86)} 'Microsoft Power BI Desktop')\n)\n\nfunction Wait-ForProcessExit {\n param([string[]]$Names, [int]$TimeoutSeconds = 240)\n $elapsed = 0\n while ($elapsed -lt $TimeoutSeconds) {\n $running = $Names | Where-Object { Get-Process -Name $_ -ErrorAction SilentlyContinue }\n if (-not $running) { break }\n Start-Sleep -Seconds 3\n $elapsed += 3\n }\n}\n\nfunction Get-PowerBIEntries {\n param([string[]]$Roots)\n $list = @()\n foreach ($root in $Roots) {\n foreach ($sub in (Get-ChildItem -Path $root -ErrorAction SilentlyContinue)) {\n $key = Get-ItemProperty $sub.PSPath -ErrorAction SilentlyContinue\n if (-not $key.DisplayName) { continue }\n if (-not (($key.DisplayName -replace '\\s', '').ToLower().Contains(\"powerbidesktop\"))) { continue }\n $list += [PSCustomObject]@{\n DisplayName = $key.DisplayName\n KeyPath = $sub.PSPath\n KeyName = $sub.PSChildName\n Command = if ($key.QuietUninstallString) { $key.QuietUninstallString } else { $key.UninstallString }\n }\n }\n }\n return $list\n}\n\nfunction Get-ExePath {\n param([string]$Command)\n if ($Command -match '\"([^\"]+\\.exe)\"') { return $Matches[1] }\n if ($Command -match '(?i)([A-Z]:\\\\[^\"]+?\\.exe)') { return $Matches[1] }\n return $null\n}\n\ntry {\n $roots = [System.Collections.Generic.List[string]]::new()\n $roots.Add('HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall')\n $roots.Add('HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall')\n foreach ($hive in (Get-ChildItem 'Registry::HKEY_USERS' -ErrorAction SilentlyContinue)) {\n if ($hive.Name -match '_Classes$') { continue }\n $roots.Add(\"Registry::$($hive.Name)\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\")\n $roots.Add(\"Registry::$($hive.Name)\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\")\n }\n\n $entries = Get-PowerBIEntries -Roots $roots\n if ($entries.Count -eq 0) {\n Write-Host \"No Power BI Desktop entries found (already removed).\"\n Exit 0\n }\n\n foreach ($proc in @(\"PBIDesktop\", \"msmdsrv\", \"Microsoft.Mashup.Container\")) {\n Stop-Process -Name $proc -Force -ErrorAction SilentlyContinue\n }\n\n # Phase 1: uninstall via the Burn bundle bootstrapper(s) FIRST.\n foreach ($e in ($entries | Where-Object { $_.Command -match \"(?i)PBIDesktopSetup.*\\.exe\" })) {\n $exe = Get-ExePath $e.Command\n if (-not $exe) { Write-Host \"Could not parse bundle exe from: $($e.Command)\"; continue }\n if (-not (Test-Path -LiteralPath $exe)) { Write-Host \"Bundle exe missing: $exe\"; continue }\n\n Write-Host \"Uninstalling bundle: '$($e.DisplayName)'\"\n $p = Start-Process -FilePath $exe -ArgumentList \"/uninstall /quiet /norestart\" -PassThru -Wait\n Write-Host \" Exit code: $($p.ExitCode)\"\n if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }\n Wait-ForProcessExit -Names @(\"PBIDesktopSetup_x64\", \"PBIDesktopSetup\", \"msiexec\") -TimeoutSeconds 240\n }\n\n # Phase 2: remove any MSI entries the bundle didn't clean up.\n foreach ($e in (Get-PowerBIEntries -Roots $roots)) {\n $msiCode = $null\n if ($e.Command -match \"(?i)MsiExec\\.exe\\s+/[IX]\\s*(\\{[A-F0-9-]+\\})\") { $msiCode = $Matches[1] }\n elseif ($e.KeyName -match \"(?i)^\\{[A-F0-9-]+\\}$\") { $msiCode = $e.KeyName }\n if (-not $msiCode) { continue }\n\n Write-Host \"Removing leftover MSI: '$($e.DisplayName)' ($msiCode)\"\n $p = Start-Process -FilePath \"MsiExec.exe\" -ArgumentList \"/X $msiCode /qn /norestart\" -PassThru -Wait\n Write-Host \" Exit code: $($p.ExitCode)\"\n Wait-ForProcessExit -Names @(\"msiexec\") -TimeoutSeconds 180\n if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }\n }\n\n # Phase 3: safety net for stale registration when product files are gone.\n $productGone = -not ($installDirs | Where-Object { $_ -and (Test-Path -LiteralPath $_) })\n foreach ($e in (Get-PowerBIEntries -Roots $roots)) {\n if ($productGone) {\n Write-Host \"Removing orphaned registration: '$($e.DisplayName)' ($($e.KeyPath))\"\n Remove-Item -Path $e.KeyPath -Recurse -Force -ErrorAction SilentlyContinue\n } else {\n Write-Host \"WARNING: entry still present and product files remain: '$($e.DisplayName)'\"\n if ($exitCode -eq 0) { $exitCode = 1 }\n }\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n}\n\nif ($ExpectedExitCodes -contains $exitCode) { Exit 0 } else { Exit $exitCode }\n"
"201475bb": "# Power BI Desktop's EXE installer is a WiX \"Burn\" bundle. It registers TWO\n# uninstall entries:\n# * \"Microsoft PowerBI Desktop (x64)\" -> the bundle bootstrapper\n# (...\\Package Cache\\{afa18d15-...}\\PBIDesktopSetup_x64.exe)\n# * \"Microsoft Power BI Desktop (x64)\" -> the MSI the bundle installed\n# (MsiExec.exe /X{c7d2053f-...})\n#\n# Removing the MSI directly orphans the bundle: its uninstall then no-ops\n# (returns 0) and leaves the \"Microsoft PowerBI Desktop (x64)\" registration\n# behind, which is what Fleet's osquery-based validator keeps detecting.\n#\n# Correct approach: uninstall via the BUNDLE first. It removes both the MSI and\n# its own registration. Burn relaunches a cached copy of itself and spawns\n# msiexec asynchronously, so wait for those to finish.\n\n$ExpectedExitCodes = @(0, 1605, 1641, 3010)\n$exitCode = 0\n\n# Power BI's default install folder; used as a safety check before deleting any\n# stale registration that survives a successful uninstall.\n$installDirs = @(\n (Join-Path $env:ProgramFiles 'Microsoft Power BI Desktop'),\n (Join-Path ${env:ProgramFiles(x86)} 'Microsoft Power BI Desktop')\n)\n\nfunction Wait-ForProcessExit {\n param([string[]]$Names, [int]$TimeoutSeconds = 240)\n $elapsed = 0\n while ($elapsed -lt $TimeoutSeconds) {\n $running = $Names | Where-Object { Get-Process -Name $_ -ErrorAction SilentlyContinue }\n if (-not $running) { break }\n Start-Sleep -Seconds 3\n $elapsed += 3\n }\n}\n\nfunction Get-PowerBIEntries {\n param([string[]]$Roots)\n $list = @()\n foreach ($root in $Roots) {\n foreach ($sub in (Get-ChildItem -Path $root -ErrorAction SilentlyContinue)) {\n $key = Get-ItemProperty $sub.PSPath -ErrorAction SilentlyContinue\n if (-not $key.DisplayName) { continue }\n if (-not (($key.DisplayName -replace '\\s', '').ToLower().Contains(\"powerbidesktop\"))) { continue }\n $list += [PSCustomObject]@{\n DisplayName = $key.DisplayName\n KeyPath = $sub.PSPath\n KeyName = $sub.PSChildName\n Command = if ($key.QuietUninstallString) { $key.QuietUninstallString } else { $key.UninstallString }\n }\n }\n }\n return $list\n}\n\nfunction Get-ExePath {\n param([string]$Command)\n if ($Command -match '\"([^\"]+\\.exe)\"') { return $Matches[1] }\n if ($Command -match '(?i)([A-Z]:\\\\[^\"]+?\\.exe)') { return $Matches[1] }\n return $null\n}\n\ntry {\n\n # Uninstall roots across all hives (matches osquery's \"programs\" table).\n $roots = [System.Collections.Generic.List[string]]::new()\n $roots.Add('HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall')\n $roots.Add('HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall')\n foreach ($hive in (Get-ChildItem 'Registry::HKEY_USERS' -ErrorAction SilentlyContinue)) {\n if ($hive.Name -match '_Classes$') { continue }\n $roots.Add(\"Registry::$($hive.Name)\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\")\n $roots.Add(\"Registry::$($hive.Name)\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\")\n }\n\n $entries = Get-PowerBIEntries -Roots $roots\n if ($entries.Count -eq 0) {\n Write-Host \"No Power BI Desktop entries found (already removed).\"\n Exit 0\n }\n\n foreach ($proc in @(\"PBIDesktop\", \"msmdsrv\", \"Microsoft.Mashup.Container\")) {\n Stop-Process -Name $proc -Force -ErrorAction SilentlyContinue\n }\n\n # --- Phase 1: uninstall via the Burn bundle bootstrapper(s) FIRST. ---\n foreach ($e in ($entries | Where-Object { $_.Command -match \"(?i)PBIDesktopSetup.*\\.exe\" })) {\n $exe = Get-ExePath $e.Command\n if (-not $exe) { Write-Host \"Could not parse bundle exe from: $($e.Command)\"; continue }\n if (-not (Test-Path -LiteralPath $exe)) { Write-Host \"Bundle exe missing: $exe\"; continue }\n\n Write-Host \"Uninstalling bundle: '$($e.DisplayName)'\"\n Write-Host \" Command: $exe\"\n Write-Host \" Args: /uninstall /quiet /norestart\"\n $p = Start-Process -FilePath $exe -ArgumentList \"/uninstall /quiet /norestart\" -PassThru -Wait\n Write-Host \" Exit code: $($p.ExitCode)\"\n if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }\n\n Wait-ForProcessExit -Names @(\"PBIDesktopSetup_x64\", \"PBIDesktopSetup\", \"msiexec\") -TimeoutSeconds 240\n }\n\n # --- Phase 2: remove any MSI entries the bundle didn't clean up. ---\n foreach ($e in (Get-PowerBIEntries -Roots $roots)) {\n $msiCode = $null\n if ($e.Command -match \"(?i)MsiExec\\.exe\\s+/[IX]\\s*(\\{[A-F0-9-]+\\})\") { $msiCode = $Matches[1] }\n elseif ($e.KeyName -match \"(?i)^\\{[A-F0-9-]+\\}$\") { $msiCode = $e.KeyName }\n if (-not $msiCode) { continue }\n\n Write-Host \"Removing leftover MSI: '$($e.DisplayName)' ($msiCode)\"\n $p = Start-Process -FilePath \"MsiExec.exe\" -ArgumentList \"/X $msiCode /qn /norestart\" -PassThru -Wait\n Write-Host \" Exit code: $($p.ExitCode)\"\n Wait-ForProcessExit -Names @(\"msiexec\") -TimeoutSeconds 180\n if (($ExpectedExitCodes -notcontains $p.ExitCode) -and ($exitCode -eq 0)) { $exitCode = $p.ExitCode }\n }\n\n # --- Phase 3: safety net. If the product files are gone but a stale ARP\n # registration lingers, remove the orphaned key so detection clears. Gated\n # on the install folder being absent so we never hide a real install. ---\n $productGone = -not ($installDirs | Where-Object { $_ -and (Test-Path -LiteralPath $_) })\n foreach ($e in (Get-PowerBIEntries -Roots $roots)) {\n $isMachineKey = $e.KeyPath -like 'Microsoft.PowerShell.Core\\Registry::HKEY_LOCAL_MACHINE\\*'\n if ($productGone -and $isMachineKey) {\n Write-Host \"Removing orphaned registration: '$($e.DisplayName)' ($($e.KeyPath))\"\n Remove-Item -Path $e.KeyPath -Recurse -Force -ErrorAction SilentlyContinue\n } else {\n Write-Host \"WARNING: entry still present and product files remain: '$($e.DisplayName)'\"\n if ($exitCode -eq 0) { $exitCode = 1 }\n }\n Write-Host \"WARNING: entry still present and product files remain: '$($e.DisplayName)'\"\n if ($exitCode -eq 0) { $exitCode = 1 }\n }\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n}\n\nif ($ExpectedExitCodes -contains $exitCode) { Exit 0 } else { Exit $exitCode }\n",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Syntax error: duplicated code block with unbalanced brace in Phase 3.

The uninstall script has a critical bug in the Phase 3 safety-net section. After the if-else block closes, the warning/exit-code lines are duplicated and followed by an extra closing brace } that has no matching opener:

        } else {
            Write-Host "WARNING: entry still present..."
            if ($exitCode -eq 0) { $exitCode = 1 }
        }
            Write-Host "WARNING: entry still present..."  # ← duplicated, runs unconditionally
            if ($exitCode -eq 0) { $exitCode = 1 }        # ← duplicated
        }  # ← EXTRA BRACE - no matching opener
    }

This will cause a PowerShell parse error, preventing the uninstall script from executing at all.

🐛 Proposed fix: remove the duplicated block

Remove the duplicated lines and extra brace so the structure is:

         } else {
             Write-Host \"WARNING: entry still present and product files remain: '$($e.DisplayName)'\"
             if ($exitCode -eq 0) { $exitCode = 1 }
         }
-            Write-Host \"WARNING: entry still present and product files remain: '$($e.DisplayName)'\"
-            if ($exitCode -eq 0) { $exitCode = 1 }
-        }
     }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ee/maintained-apps/outputs/power-bi/windows.json` at line 19, Phase 3
contains duplicated warning lines and an extra closing brace causing a parse
error; inside the loop over (Get-PowerBIEntries -Roots $roots) that checks
$productGone and $isMachineKey (the if/else under "Phase 3"), remove the
duplicated Write-Host and if ($exitCode -eq 0) { $exitCode = 1 } lines that
appear after the else block and delete the unmatched extra "}" so the if/else
for removing orphaned registration remains the only code path; verify braces
balance and that $productGone and $isMachineKey logic is unchanged in
Get-PowerBIEntries/Phase 3.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: test-fma-pr-only

Failed stage: Filter apps.json and verify changed apps [❌]

Failed test name: ""

Failure summary:

The action failed during Windows maintained-app validation because the uninstall step for Power BI
(power-bi/windows) errored out.
- The validator reported Error uninstalling app: exit status 1 for
Power BI.
- The underlying failure is a PowerShell parse error in the generated temp script
C:\Users\runneradmin\AppData\Local\Temp\fma-validate-1482974656\script.ps1:
- script.ps1:131The
Try statement is missing its Catch or Finally block.
- script.ps1:133Unexpected token '}' in
expression or statement.
- As a result, only 3 out of 4 apps validated successfully, and the job
exited with status 1, causing the GitHub Action step to fail.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

118:  * [new branch]            11938-loadtesting-branch    -> origin/11938-loadtesting-branch
119:  * [new branch]            12007-ui-idp-metadata       -> origin/12007-ui-idp-metadata
120:  * [new branch]            12351-try-fix-for-fleet-desktop -> origin/12351-try-fix-for-fleet-desktop
121:  * [new branch]            12356-puppet-callback       -> origin/12356-puppet-callback
122:  * [new branch]            12375-query-bulk-action     -> origin/12375-query-bulk-action
123:  * [new branch]            12474-documentation         -> origin/12474-documentation
124:  * [new branch]            12614-federated-auth-support -> origin/12614-federated-auth-support
125:  * [new branch]            12687-host-issues-query     -> origin/12687-host-issues-query
126:  * [new branch]            12696-loadtest-cis-changes  -> origin/12696-loadtest-cis-changes
127:  * [new branch]            12842-fleetd-bitlocker-management -> origin/12842-fleetd-bitlocker-management
128:  * [new branch]            12842-fleetd-bitlocker-table -> origin/12842-fleetd-bitlocker-table
129:  * [new branch]            12889-faster-software       -> origin/12889-faster-software
130:  * [new branch]            13287-loadtest-changes      -> origin/13287-loadtest-changes
131:  * [new branch]            13288-poc-fleet-fips        -> origin/13288-poc-fleet-fips
132:  * [new branch]            13485-query-reports-migration -> origin/13485-query-reports-migration
133:  * [new branch]            13574-cache-failed-policy-counts -> origin/13574-cache-failed-policy-counts
134:  * [new branch]            13657-docs                  -> origin/13657-docs
...

146:  * [new branch]            146orch                     -> origin/146orch
147:  * [new branch]            14753-windows-ps1-api       -> origin/14753-windows-ps1-api
148:  * [new branch]            14957-test-dep-screen       -> origin/14957-test-dep-screen
149:  * [new branch]            14957-test-dep-screen-patch -> origin/14957-test-dep-screen-patch
150:  * [new branch]            15068-disk-encryption-ii    -> origin/15068-disk-encryption-ii
151:  * [new branch]            15082-download-api-docs     -> origin/15082-download-api-docs
152:  * [new branch]            15082-make-endpoints-consistent -> origin/15082-make-endpoints-consistent
153:  * [new branch]            15082-update-download-endpoints -> origin/15082-update-download-endpoints
154:  * [new branch]            15380-hosts-api-doc         -> origin/15380-hosts-api-doc
155:  * [new branch]            15461-ui-dep-assign-profile-responses -> origin/15461-ui-dep-assign-profile-responses
156:  * [new branch]            15463-msi-fix               -> origin/15463-msi-fix
157:  * [new branch]            15559-move-scep             -> origin/15559-move-scep
158:  * [new branch]            15633                       -> origin/15633
159:  * [new branch]            15770-mac-os-vuln           -> origin/15770-mac-os-vuln
160:  * [new branch]            15801-migration             -> origin/15801-migration
161:  * [new branch]            15912-password-reset-error-code -> origin/15912-password-reset-error-code
162:  * [new branch]            16182-log-root              -> origin/16182-log-root
...

594:  * [new branch]            7765-frontend               -> origin/7765-frontend
595:  * [new branch]            7766-backend-final-main-merge -> origin/7766-backend-final-main-merge
596:  * [new branch]            7766-backend-test           -> origin/7766-backend-test
597:  * [new branch]            7766-frontend               -> origin/7766-frontend
598:  * [new branch]            7993-figure-out-the-limits-of-our-current-search-approach -> origin/7993-figure-out-the-limits-of-our-current-search-approach
599:  * [new branch]            8021-orbit-use-specified-identifier -> origin/8021-orbit-use-specified-identifier
600:  * [new branch]            8186-vulnerable-software-false-positive-docker -> origin/8186-vulnerable-software-false-positive-docker
601:  * [new branch]            8593-gitops                 -> origin/8593-gitops
602:  * [new branch]            8708-docs                   -> origin/8708-docs
603:  * [new branch]            8708-encryption-key-api     -> origin/8708-encryption-key-api
604:  * [new branch]            8708-ingest-file-vault      -> origin/8708-ingest-file-vault
605:  * [new branch]            8708-ingest-macos-encription-key -> origin/8708-ingest-macos-encription-key
606:  * [new branch]            8708-ingest-macos-encription-key-ii -> origin/8708-ingest-macos-encription-key-ii
607:  * [new branch]            8974-native-smbios-uuid-support -> origin/8974-native-smbios-uuid-support
608:  * [new branch]            9260-cis-checks-5.10.x      -> origin/9260-cis-checks-5.10.x
609:  * [new branch]            9394-failed-to-create-device-auth-token-due-to-duplicate-key-errors -> origin/9394-failed-to-create-device-auth-token-due-to-duplicate-key-errors
610:  * [new branch]            9590-schema                 -> origin/9590-schema
...

841:  * [new branch]            allenhouchins-update-dmg-install-script -> origin/allenhouchins-update-dmg-install-script
842:  * [new branch]            allenhouchins-update-patch-policy-generation -> origin/allenhouchins-update-patch-policy-generation
843:  * [new branch]            allenhouchins-warp          -> origin/allenhouchins-warp
844:  * [new branch]            allenhouchins-windows-net-runtime-6 -> origin/allenhouchins-windows-net-runtime-6
845:  * [new branch]            allenhouchins-zoom-fma      -> origin/allenhouchins-zoom-fma
846:  * [new branch]            allenhouchins-zoom-logo-mac -> origin/allenhouchins-zoom-logo-mac
847:  * [new branch]            allenhouchins-zoom-policy-fix -> origin/allenhouchins-zoom-policy-fix
848:  * [new branch]            allenhouchins/fix-security-review-must-fixes -> origin/allenhouchins/fix-security-review-must-fixes
849:  * [new branch]            always-create-event-next-thu -> origin/always-create-event-next-thu
850:  * [new branch]            amazon-workspaces-client-windows-fma -> origin/amazon-workspaces-client-windows-fma
851:  * [new branch]            and_osq_proj                -> origin/and_osq_proj
852:  * [new branch]            andrey/loadtest-oval-vulns  -> origin/andrey/loadtest-oval-vulns
853:  * [new branch]            android-app-install-activity -> origin/android-app-install-activity
854:  * [new branch]            android-cofniguration-profiles-research -> origin/android-cofniguration-profiles-research
855:  * [new branch]            android-enroll-note         -> origin/android-enroll-note
856:  * [new branch]            android-enrollment-error    -> origin/android-enrollment-error
857:  * [new branch]            android-manual-enrollment-button -> origin/android-manual-enrollment-button
...

905:  * [new branch]            await-configuration-docs    -> origin/await-configuration-docs
906:  * [new branch]            aws-licensing-integration-proposal -> origin/aws-licensing-integration-proposal
907:  * [new branch]            backport-a41fb63            -> origin/backport-a41fb63
908:  * [new branch]            backport-c02af              -> origin/backport-c02af
909:  * [new branch]            backport-e65d6cf            -> origin/backport-e65d6cf
910:  * [new branch]            backport-ef07a406cc8dbccb4914bbd27631df74e5b13b49 -> origin/backport-ef07a406cc8dbccb4914bbd27631df74e5b13b49
911:  * [new branch]            backport-vpp-fix            -> origin/backport-vpp-fix
912:  * [new branch]            base-software-titles-loadtest -> origin/base-software-titles-loadtest
913:  * [new branch]            base-software-titles-loadtest-2 -> origin/base-software-titles-loadtest-2
914:  * [new branch]            beekeeper-fma-initial       -> origin/beekeeper-fma-initial
915:  * [new branch]            bettapizza                  -> origin/bettapizza
916:  * [new branch]            bettapizza--ghost-testimonial-update -> origin/bettapizza--ghost-testimonial-update
917:  * [new branch]            bettapizza-patch-1          -> origin/bettapizza-patch-1
918:  * [new branch]            bettapizza-patch-2          -> origin/bettapizza-patch-2
919:  * [new branch]            bettapizza-patch-3          -> origin/bettapizza-patch-3
920:  * [new branch]            better-byod-error           -> origin/better-byod-error
921:  * [new branch]            blog/canary-fleet-for-fleed-updates -> origin/blog/canary-fleet-for-fleed-updates
...

955:  * [new branch]            cherry-pick-41914-to-rc-v4.83.0 -> origin/cherry-pick-41914-to-rc-v4.83.0
956:  * [new branch]            cherry-pick-42773-vitals-constants -> origin/cherry-pick-42773-vitals-constants
957:  * [new branch]            cherry-pick-8750-into-rc-minor-fleet-v4.60.0 -> origin/cherry-pick-8750-into-rc-minor-fleet-v4.60.0
958:  * [new branch]            cherry-pick-dogfood-change  -> origin/cherry-pick-dogfood-change
959:  * [new branch]            cherry-pick-dogfood-env-vars -> origin/cherry-pick-dogfood-env-vars
960:  * [new branch]            cherry-pick-fleetctl-changes-to-allow-testing -> origin/cherry-pick-fleetctl-changes-to-allow-testing
961:  * [new branch]            cherry-pick-mac-address-vital -> origin/cherry-pick-mac-address-vital
962:  * [new branch]            cherry-pick-patches         -> origin/cherry-pick-patches
963:  * [new branch]            cherry-pick-remove-overrides-in-dev-mode -> origin/cherry-pick-remove-overrides-in-dev-mode
964:  * [new branch]            cherry-pick-util            -> origin/cherry-pick-util
965:  * [new branch]            cherry-pick-webhooks        -> origin/cherry-pick-webhooks
966:  * [new branch]            cherrypick-v4.85.0-version-bump-into-main -> origin/cherrypick-v4.85.0-version-bump-into-main
967:  * [new branch]            chore-UI-update-for-CSP     -> origin/chore-UI-update-for-CSP
968:  * [new branch]            chore-add-specific-yarn-version -> origin/chore-add-specific-yarn-version
969:  * [new branch]            chore-backend-api-patterns  -> origin/chore-backend-api-patterns
970:  * [new branch]            chore-change-error-message-custom-profile -> origin/chore-change-error-message-custom-profile
971:  * [new branch]            chore-cp-chage-status-code-turn-off-mdm -> origin/chore-cp-chage-status-code-turn-off-mdm
...

1011:  * [new branch]            claude/serene-borg          -> origin/claude/serene-borg
1012:  * [new branch]            claude/slack-add-fma-foxit-pdf-9UpRv -> origin/claude/slack-add-fma-foxit-pdf-9UpRv
1013:  * [new branch]            claude/slack-session-Yw6M0  -> origin/claude/slack-session-Yw6M0
1014:  * [new branch]            claude/sub-pr-42006         -> origin/claude/sub-pr-42006
1015:  * [new branch]            claude/update-mock-fixtures-for-ipolicy -> origin/claude/update-mock-fixtures-for-ipolicy
1016:  * [new branch]            claude/update-mock-fixtures-policy-interface -> origin/claude/update-mock-fixtures-policy-interface
1017:  * [new branch]            cli-update-fleetd-naming    -> origin/cli-update-fleetd-naming
1018:  * [new branch]            clone-423                   -> origin/clone-423
1019:  * [new branch]            close-product-designer-position -> origin/close-product-designer-position
1020:  * [new branch]            codeowner-test              -> origin/codeowner-test
1021:  * [new branch]            codeql-icon-fe-fix          -> origin/codeql-icon-fe-fix
1022:  * [new branch]            coderabbit-skip-paths       -> origin/coderabbit-skip-paths
1023:  * [new branch]            collect-abm-apns-expiration-usage-statistics -> origin/collect-abm-apns-expiration-usage-statistics
1024:  * [new branch]            components-in-same-file-instead-of-closures -> origin/components-in-same-file-instead-of-closures
1025:  * [new branch]            conf-2644-branch-from-main  -> origin/conf-2644-branch-from-main
1026:  * [new branch]            consistent-error            -> origin/consistent-error
1027:  * [new branch]            consistent-rest-api-language-part-ii -> origin/consistent-rest-api-language-part-ii
...

1158:  * [new branch]            edwardsb-vuln-processing-fix-sandcastle -> origin/edwardsb-vuln-processing-fix-sandcastle
1159:  * [new branch]            edwardsb-vuln-processing-volume-fix -> origin/edwardsb-vuln-processing-volume-fix
1160:  * [new branch]            edwardsb/deployment-guide-updates -> origin/edwardsb/deployment-guide-updates
1161:  * [new branch]            edwardsb/restrict_console_access -> origin/edwardsb/restrict_console_access
1162:  * [new branch]            elastic_rum                 -> origin/elastic_rum
1163:  * [new branch]            enable-jit-by-default       -> origin/enable-jit-by-default
1164:  * [new branch]            enable-test-go-automation-macos -> origin/enable-test-go-automation-macos
1165:  * [new branch]            enforce-firefox-doh         -> origin/enforce-firefox-doh
1166:  * [new branch]            enforce-firefox-windows     -> origin/enforce-firefox-windows
1167:  * [new branch]            enforce-ios-26.5-update-deadline-july-2026 -> origin/enforce-ios-26.5-update-deadline-july-2026
1168:  * [new branch]            enforce-iso27001-workstations -> origin/enforce-iso27001-workstations
1169:  * [new branch]            enforce-macos-15.5-update-deadline -> origin/enforce-macos-15.5-update-deadline
1170:  * [new branch]            enforce-macos-version-workstations -> origin/enforce-macos-version-workstations
1171:  * [new branch]            enroll-android-feature-guide -> origin/enroll-android-feature-guide
1172:  * [new branch]            ericswenson0-patch-1        -> origin/ericswenson0-patch-1
1173:  * [new branch]            error-counts                -> origin/error-counts
1174:  * [new branch]            errors-perf-testing         -> origin/errors-perf-testing
1175:  * [new branch]            es-reports                  -> origin/es-reports
...

1191:  * [new branch]            eugkuo-patch-6-slugs-FMA    -> origin/eugkuo-patch-6-slugs-FMA
1192:  * [new branch]            example-fleetctl-profiles   -> origin/example-fleetctl-profiles
1193:  * [new branch]            example-payloads-with-gitops -> origin/example-payloads-with-gitops
1194:  * [new branch]            exp-mdbook-docs             -> origin/exp-mdbook-docs
1195:  * [new branch]            experiment-disable-some-deletes -> origin/experiment-disable-some-deletes
1196:  * [new branch]            experiment-hardcode-counters-to-zero -> origin/experiment-hardcode-counters-to-zero
1197:  * [new branch]            experiment-no-txs           -> origin/experiment-no-txs
1198:  * [new branch]            experiment-status-tooltip   -> origin/experiment-status-tooltip
1199:  * [new branch]            experiment-with-two-branches -> origin/experiment-with-two-branches
1200:  * [new branch]            experimental_moveitem       -> origin/experimental_moveitem
1201:  * [new branch]            experimient-no-counts       -> origin/experimient-no-counts
1202:  * [new branch]            expiredcertstool            -> origin/expiredcertstool
1203:  * [new branch]            extra-dep-logs              -> origin/extra-dep-logs
1204:  * [new branch]            f84ee4c5f4                  -> origin/f84ee4c5f4
1205:  * [new branch]            faf-doc-clarification       -> origin/faf-doc-clarification
1206:  * [new branch]            failing-test                -> origin/failing-test
1207:  * [new branch]            faster-ci-checks            -> origin/faster-ci-checks
...

1245:  * [new branch]            feature-gkarr-testing2      -> origin/feature-gkarr-testing2
1246:  * [new branch]            feature-hydrant-ca          -> origin/feature-hydrant-ca
1247:  * [new branch]            feature-idp-byod            -> origin/feature-idp-byod
1248:  * [new branch]            feature-orbit-find          -> origin/feature-orbit-find
1249:  * [new branch]            feature-prioritization      -> origin/feature-prioritization
1250:  * [new branch]            feature-v4.44.1-live-queries -> origin/feature-v4.44.1-live-queries
1251:  * [new branch]            feature-windows-mdm-policy-extraction -> origin/feature-windows-mdm-policy-extraction
1252:  * [new branch]            feature/add-blank-to-osquer-link -> origin/feature/add-blank-to-osquer-link
1253:  * [new branch]            feature_14722-activity-feed-webhooks -> origin/feature_14722-activity-feed-webhooks
1254:  * [new branch]            feature_18115-crit-vuln-issues -> origin/feature_18115-crit-vuln-issues
1255:  * [new branch]            feature_19010-ipad-ios-lock-wipe-backend-changes -> origin/feature_19010-ipad-ios-lock-wipe-backend-changes
1256:  * [new branch]            feature_22078               -> origin/feature_22078
1257:  * [new branch]            fix                         -> origin/fix
1258:  * [new branch]            fix-35118-cis-win10-v4      -> origin/fix-35118-cis-win10-v4
1259:  * [new branch]            fix-4.84.4-k8s              -> origin/fix-4.84.4-k8s
1260:  * [new branch]            fix-40083-failed-install-retries -> origin/fix-40083-failed-install-retries
1261:  * [new branch]            fix-41290-vpp-added-status  -> origin/fix-41290-vpp-added-status
1262:  * [new branch]            fix-41337-save-env-secrets-dry-run -> origin/fix-41337-save-env-secrets-dry-run
1263:  * [new branch]            fix-43623-fma-patch-policy-gitops -> origin/fix-43623-fma-patch-policy-gitops
1264:  * [new branch]            fix-43673-my-device-sort    -> origin/fix-43673-my-device-sort
1265:  * [new branch]            fix-44199-embedded-app-bundles -> origin/fix-44199-embedded-app-bundles
1266:  * [new branch]            fix-45843-vuln-cursor-pagination-ambiguous-columns -> origin/fix-45843-vuln-cursor-pagination-ambiguous-columns
1267:  * [new branch]            fix-android-unenroll-activities -> origin/fix-android-unenroll-activities
1268:  * [new branch]            fix-blockquotes-google-groups -> origin/fix-blockquotes-google-groups
1269:  * [new branch]            fix-case-in-deploy-config-docs -> origin/fix-case-in-deploy-config-docs
1270:  * [new branch]            fix-cert-details-modal      -> origin/fix-cert-details-modal
1271:  * [new branch]            fix-checkerboard-scroll-to-right -> origin/fix-checkerboard-scroll-to-right
1272:  * [new branch]            fix-checkerboard-tooltip-nowrap -> origin/fix-checkerboard-tooltip-nowrap
1273:  * [new branch]            fix-cloudflare-warp-fma-output-json -> origin/fix-cloudflare-warp-fma-output-json
1274:  * [new branch]            fix-codeql-ci-error         -> origin/fix-codeql-ci-error
1275:  * [new branch]            fix-colima                  -> origin/fix-colima
1276:  * [new branch]            fix-color-for-mobile-sticky-nav -> origin/fix-color-for-mobile-sticky-nav
1277:  * [new branch]            fix-conflict-in-feature_19010-ipad-ios-lock-wipe -> origin/fix-conflict-in-feature_19010-ipad-ios-lock-wipe
1278:  * [new branch]            fix-contrib-docs            -> origin/fix-contrib-docs
1279:  * [new branch]            fix-cve-2026-2792-firefox-esr -> origin/fix-cve-2026-2792-firefox-esr
1280:  * [new branch]            fix-cve-validate-enrichment-canary -> origin/fix-cve-validate-enrichment-canary
1281:  * [new branch]            fix-dashboard-host-count-card-breakpoint -> origin/fix-dashboard-host-count-card-breakpoint
1282:  * [new branch]            fix-docker-publish          -> origin/fix-docker-publish
1283:  * [new branch]            fix-dogfood-workstation     -> origin/fix-dogfood-workstation
1284:  * [new branch]            fix-firefox-cve-2026-2792   -> origin/fix-firefox-cve-2026-2792
1285:  * [new branch]            fix-firefox-fma-conflict-error-msg -> origin/fix-firefox-fma-conflict-error-msg
1286:  * [new branch]            fix-flakey-orbit-test       -> origin/fix-flakey-orbit-test
...

1292:  * [new branch]            fix-host-counts-vpp-software -> origin/fix-host-counts-vpp-software
1293:  * [new branch]            fix-instability-ubuntu-latest -> origin/fix-instability-ubuntu-latest
1294:  * [new branch]            fix-ios-ipados-enrollment-label-42721 -> origin/fix-ios-ipados-enrollment-label-42721
1295:  * [new branch]            fix-list-sw-permissions     -> origin/fix-list-sw-permissions
1296:  * [new branch]            fix-mdm-enrolled-webhook    -> origin/fix-mdm-enrolled-webhook
1297:  * [new branch]            fix-mdm-redirect            -> origin/fix-mdm-redirect
1298:  * [new branch]            fix-mdm-url-truncation      -> origin/fix-mdm-url-truncation
1299:  * [new branch]            fix-missing-test-schema-update -> origin/fix-missing-test-schema-update
1300:  * [new branch]            fix-modernize               -> origin/fix-modernize
1301:  * [new branch]            fix-no-space-left-on-device-failure -> origin/fix-no-space-left-on-device-failure
1302:  * [new branch]            fix-notarization            -> origin/fix-notarization
1303:  * [new branch]            fix-orbit-notarization      -> origin/fix-orbit-notarization
1304:  * [new branch]            fix-os-settings-name-col-truncation -> origin/fix-os-settings-name-col-truncation
1305:  * [new branch]            fix-os-settings-underline-descender-clip -> origin/fix-os-settings-underline-descender-clip
1306:  * [new branch]            fix-pricing-more-info-icon-documentationurl -> origin/fix-pricing-more-info-icon-documentationurl
1307:  * [new branch]            fix-receive-from-github-error -> origin/fix-receive-from-github-error
1308:  * [new branch]            fix-sandbox-local           -> origin/fix-sandbox-local
...

1321:  * [new branch]            fix-ui-turn-on-mdm-external -> origin/fix-ui-turn-on-mdm-external
1322:  * [new branch]            fix-ui-typo-fleet-maintained-empty -> origin/fix-ui-typo-fleet-maintained-empty
1323:  * [new branch]            fix-vpp-edit-fleet-desktop-message -> origin/fix-vpp-edit-fleet-desktop-message
1324:  * [new branch]            fix-win-os-version          -> origin/fix-win-os-version
1325:  * [new branch]            fix_14825                   -> origin/fix_14825
1326:  * [new branch]            fixes-on-minor-fleet-v4.54.0 -> origin/fixes-on-minor-fleet-v4.54.0
1327:  * [new branch]            fixes-plus-4.35.1           -> origin/fixes-plus-4.35.1
1328:  * [new branch]            flaky-tests-nov-6           -> origin/flaky-tests-nov-6
1329:  * [new branch]            fleet-desktop-linux-browser -> origin/fleet-desktop-linux-browser
1330:  * [new branch]            fleet-desktop-version       -> origin/fleet-desktop-version
1331:  * [new branch]            fleet-mdm-server-url        -> origin/fleet-mdm-server-url
1332:  * [new branch]            fleet-multiple-abm-vpp-proposal -> origin/fleet-multiple-abm-vpp-proposal
1333:  * [new branch]            fleet-premium-users-usage-statistics -> origin/fleet-premium-users-usage-statistics
1334:  * [new branch]            fleet-release-infra         -> origin/fleet-release-infra
1335:  * [new branch]            fleet-server-config-1817    -> origin/fleet-server-config-1817
1336:  * [new branch]            fleet-server-log-request-errors -> origin/fleet-server-log-request-errors
1337:  * [new branch]            fleet-ship-rebuild          -> origin/fleet-ship-rebuild
...

2138:  * [new branch]            hotfix-disable-fv-rc        -> origin/hotfix-disable-fv-rc
2139:  * [new branch]            hotfix-failing-tests        -> origin/hotfix-failing-tests
2140:  * [new branch]            hotfix-query-update         -> origin/hotfix-query-update
2141:  * [new branch]            hotfix-revert-sofa-tables   -> origin/hotfix-revert-sofa-tables
2142:  * [new branch]            hotfix-v4.67.2-migration    -> origin/hotfix-v4.67.2-migration
2143:  * [new branch]            hotfix-v4.76.1              -> origin/hotfix-v4.76.1
2144:  * [new branch]            hover-gravatar              -> origin/hover-gravatar
2145:  * [new branch]            hughestaylor-patch-1        -> origin/hughestaylor-patch-1
2146:  * [new branch]            hughestaylor-patch-1-1      -> origin/hughestaylor-patch-1-1
2147:  * [new branch]            ignore-fleetctl-vulnerabilities -> origin/ignore-fleetctl-vulnerabilities
2148:  * [new branch]            improve-flakey-test         -> origin/improve-flakey-test
2149:  * [new branch]            improve-prometheus-metrics  -> origin/improve-prometheus-metrics
2150:  * [new branch]            include-mnt-in-gads-metric  -> origin/include-mnt-in-gads-metric
2151:  * [new branch]            increase-goreleaser-timeout-to-60m -> origin/increase-goreleaser-timeout-to-60m
2152:  * [new branch]            ingress-gateway-support     -> origin/ingress-gateway-support
2153:  * [new branch]            insert-software-installers-retry-error -> origin/insert-software-installers-retry-error
2154:  * [new branch]            integration-ci-debug        -> origin/integration-ci-debug
...

2165:  * [new branch]            irenareedy-patch-10         -> origin/irenareedy-patch-10
2166:  * [new branch]            irenareedy-patch-2          -> origin/irenareedy-patch-2
2167:  * [new branch]            irenareedy-patch-3          -> origin/irenareedy-patch-3
2168:  * [new branch]            irenareedy-patch-4          -> origin/irenareedy-patch-4
2169:  * [new branch]            irenareedy-patch-5          -> origin/irenareedy-patch-5
2170:  * [new branch]            irenareedy-patch-6          -> origin/irenareedy-patch-6
2171:  * [new branch]            irenareedy-patch-7          -> origin/irenareedy-patch-7
2172:  * [new branch]            irenareedy-patch-8          -> origin/irenareedy-patch-8
2173:  * [new branch]            irenareedy-patch-9          -> origin/irenareedy-patch-9
2174:  * [new branch]            irenareedy-thumbtack-case-study -> origin/irenareedy-thumbtack-case-study
2175:  * [new branch]            iso-27001-compliance        -> origin/iso-27001-compliance
2176:  * [new branch]            iso42001-ai-discovery-inventory -> origin/iso42001-ai-discovery-inventory
2177:  * [new branch]            issue-11545-my-device-dep-modal -> origin/issue-11545-my-device-dep-modal
2178:  * [new branch]            issue-2716-specify-query-platforms -> origin/issue-2716-specify-query-platforms
2179:  * [new branch]            issue-3271-rate-limit-distributed-writes -> origin/issue-3271-rate-limit-distributed-writes
2180:  * [new branch]            issue-4361-mail-change-should-error -> origin/issue-4361-mail-change-should-error
2181:  * [new branch]            issue-conf-1968-delete-uninstalled-software-from-main -> origin/issue-conf-1968-delete-uninstalled-software-from-main
...

2376:  * [new branch]            melpike-activity-lock-wipe-41683 -> origin/melpike-activity-lock-wipe-41683
2377:  * [new branch]            melpike-activity-rotate-managed-local-account-password-37142 -> origin/melpike-activity-rotate-managed-local-account-password-37142
2378:  * [new branch]            melpike-add-public-endpoints-44742 -> origin/melpike-add-public-endpoints-44742
2379:  * [new branch]            melpike-api-device-url-43895 -> origin/melpike-api-device-url-43895
2380:  * [new branch]            melpike-api-minimum-version-39085 -> origin/melpike-api-minimum-version-39085
2381:  * [new branch]            melpike-api-py-script-41470 -> origin/melpike-api-py-script-41470
2382:  * [new branch]            melpike-audit-log-mdm-cmd-45021 -> origin/melpike-audit-log-mdm-cmd-45021
2383:  * [new branch]            melpike-audit-recovery-lock-password-rotate -> origin/melpike-audit-recovery-lock-password-rotate
2384:  * [new branch]            melpike-byod-wipe-lock-23242 -> origin/melpike-byod-wipe-lock-23242
2385:  * [new branch]            melpike-byod-wipe-lock-23242-1 -> origin/melpike-byod-wipe-lock-23242-1
2386:  * [new branch]            melpike-byod-wipe-lock-api-23242 -> origin/melpike-byod-wipe-lock-api-23242
2387:  * [new branch]            melpike-byod-wipe-lock-better-23242 -> origin/melpike-byod-wipe-lock-better-23242
2388:  * [new branch]            melpike-byod-wipe-lock-yaml-23242 -> origin/melpike-byod-wipe-lock-yaml-23242
2389:  * [new branch]            melpike-combine-guides-30674 -> origin/melpike-combine-guides-30674
2390:  * [new branch]            melpike-create-managed-local-account-guide-37141 -> origin/melpike-create-managed-local-account-guide-37141
2391:  * [new branch]            melpike-dep-error-messaging-43916 -> origin/melpike-dep-error-messaging-43916
2392:  * [new branch]            melpike-doc-deploy-sw-41470 -> origin/melpike-doc-deploy-sw-41470
...

2529:  * [new branch]            mna-doc-change-api-structure -> origin/mna-doc-change-api-structure
2530:  * [new branch]            mna-experiment-macos-profiles-uuid -> origin/mna-experiment-macos-profiles-uuid
2531:  * [new branch]            mna-fix-22558-windows-installer-stuck-pending -> origin/mna-fix-22558-windows-installer-stuck-pending
2532:  * [new branch]            mna-fix-duplicate-lock-unlock-activity -> origin/mna-fix-duplicate-lock-unlock-activity
2533:  * [new branch]            mna-fix-failing-tests       -> origin/mna-fix-failing-tests
2534:  * [new branch]            mna-fix-flaky-integration-test -> origin/mna-fix-flaky-integration-test
2535:  * [new branch]            mna-fix-oom-fleetctl-test   -> origin/mna-fix-oom-fleetctl-test
2536:  * [new branch]            mna-loadtest-enroll-host-limit -> origin/mna-loadtest-enroll-host-limit
2537:  * [new branch]            mna-orbit-node-key          -> origin/mna-orbit-node-key
2538:  * [new branch]            mna-revert-change-to-autogenerated-activities-doc -> origin/mna-revert-change-to-autogenerated-activities-doc
2539:  * [new branch]            mna-temp-osquery-perf-loadtest -> origin/mna-temp-osquery-perf-loadtest
2540:  * [new branch]            mna11997                    -> origin/mna11997
2541:  * [new branch]            mock-associate-assets-endpoint -> origin/mock-associate-assets-endpoint
2542:  * [new branch]            monitoring-test             -> origin/monitoring-test
2543:  * [new branch]            more-conditional-access-api-updates -> origin/more-conditional-access-api-updates
2544:  * [new branch]            more-fd-errors              -> origin/more-fd-errors
2545:  * [new branch]            move-conditional-access-script-to-testing-qa -> origin/move-conditional-access-script-to-testing-qa
...

3072:  * [new branch]            sgress454/34259-end-user-auth-setup-backend -> origin/sgress454/34259-end-user-auth-setup-backend
3073:  * [new branch]            sgress454/34528-end-user-auth-setup-agent -> origin/sgress454/34528-end-user-auth-setup-agent
3074:  * [new branch]            sgress454/35376             -> origin/sgress454/35376
3075:  * [new branch]            sgress454/35452             -> origin/sgress454/35452
3076:  * [new branch]            sgress454/37127-open-macos-end-user-auth-window -> origin/sgress454/37127-open-macos-end-user-auth-window
3077:  * [new branch]            sgress454/38063-skeleton-server -> origin/sgress454/38063-skeleton-server
3078:  * [new branch]            sgress454/39344-rename-teams-to-fleet-all-changes -> origin/sgress454/39344-rename-teams-to-fleet-all-changes
3079:  * [new branch]            sgress454/39344-rename-teams-to-fleet-api-changes -> origin/sgress454/39344-rename-teams-to-fleet-api-changes
3080:  * [new branch]            sgress454/40642-update-jit-saml-prefix -> origin/sgress454/40642-update-jit-saml-prefix
3081:  * [new branch]            sgress454/43482-re-pin      -> origin/sgress454/43482-re-pin
3082:  * [new branch]            sgress454/44077-disable-datasets-backend -> origin/sgress454/44077-disable-datasets-backend
3083:  * [new branch]            sgress454/44077-disable-datasets-docs -> origin/sgress454/44077-disable-datasets-docs
3084:  * [new branch]            sgress454/44077-disable-datasets-frontend -> origin/sgress454/44077-disable-datasets-frontend
3085:  * [new branch]            sgress454/45290-drop-mobile-from-charting -> origin/sgress454/45290-drop-mobile-from-charting
3086:  * [new branch]            sgress454/add-vex-for-cve-2026-23517 -> origin/sgress454/add-vex-for-cve-2026-23517
3087:  * [new branch]            sgress454/adr-for-error-codes -> origin/sgress454/adr-for-error-codes
3088:  * [new branch]            sgress454/adr-refactor-list-hosts -> origin/sgress454/adr-refactor-list-hosts
...

3140:  * [new branch]            software-titles-loadtest-2  -> origin/software-titles-loadtest-2
3141:  * [new branch]            solutions-folder            -> origin/solutions-folder
3142:  * [new branch]            sort-seen-hosts-before-inserting -> origin/sort-seen-hosts-before-inserting
3143:  * [new branch]            spalmesano0-patch-2         -> origin/spalmesano0-patch-2
3144:  * [new branch]            sperad-props-documentation  -> origin/sperad-props-documentation
3145:  * [new branch]            spike-fleet-lint-plugin     -> origin/spike-fleet-lint-plugin
3146:  * [new branch]            spike-ui-permissions-pattern -> origin/spike-ui-permissions-pattern
3147:  * [new branch]            spokanemac-add-passcode-ddm-profile -> origin/spokanemac-add-passcode-ddm-profile
3148:  * [new branch]            spokanemac-dogfood-additional-apps -> origin/spokanemac-dogfood-additional-apps
3149:  * [new branch]            spokanemac-handbook-release-article -> origin/spokanemac-handbook-release-article
3150:  * [new branch]            spokanemac-macdevops-conference-post -> origin/spokanemac-macdevops-conference-post
3151:  * [new branch]            spokanemac-meetup-template  -> origin/spokanemac-meetup-template
3152:  * [new branch]            spokanemac-migrating-fleetdm-from-dogfood-to-terraform-on-aws -> origin/spokanemac-migrating-fleetdm-from-dogfood-to-terraform-on-aws
3153:  * [new branch]            spokanemac-release-article-issue-template -> origin/spokanemac-release-article-issue-template
3154:  * [new branch]            step4-improvements          -> origin/step4-improvements
3155:  * [new branch]            store-query-execution-and-ingestion-errors -> origin/store-query-execution-and-ingestion-errors
3156:  * [new branch]            support-breaking-osquery-downgrades -> origin/support-breaking-osquery-downgrades
...

3224:  * [new branch]            uniform-brex-spending-limit -> origin/uniform-brex-spending-limit
3225:  * [new branch]            untx-software               -> origin/untx-software
3226:  * [new branch]            upcoming-activities-mdm-commands -> origin/upcoming-activities-mdm-commands
3227:  * [new branch]            upcoming-commands           -> origin/upcoming-commands
3228:  * [new branch]            update-1password-and-safari-policy-versions-2601200025 -> origin/update-1password-and-safari-policy-versions-2601200025
3229:  * [new branch]            update-1password-and-safari-policy-versions-2601200610 -> origin/update-1password-and-safari-policy-versions-2601200610
3230:  * [new branch]            update-1password-and-safari-policy-versions-2602261818 -> origin/update-1password-and-safari-policy-versions-2602261818
3231:  * [new branch]            update-1password-and-safari-policy-versions-2603101819 -> origin/update-1password-and-safari-policy-versions-2603101819
3232:  * [new branch]            update-1password-and-safari-policy-versions-2604080037 -> origin/update-1password-and-safari-policy-versions-2604080037
3233:  * [new branch]            update-1password-and-safari-policy-versions-2604080637 -> origin/update-1password-and-safari-policy-versions-2604080637
3234:  * [new branch]            update-Cloudflare-WARP-FMA-with-UpgradeCode -> origin/update-Cloudflare-WARP-FMA-with-UpgradeCode
3235:  * [new branch]            update-android-mdm-doc      -> origin/update-android-mdm-doc
3236:  * [new branch]            update-article-format       -> origin/update-article-format
3237:  * [new branch]            update-bug-report-template  -> origin/update-bug-report-template
3238:  * [new branch]            update-build-instructions   -> origin/update-build-instructions
3239:  * [new branch]            update-build-script-error-message -> origin/update-build-script-error-message
3240:  * [new branch]            update-cancel-and-done-links -> origin/update-cancel-and-done-links
...

3316:  * [new branch]            update-santa-rules-chrome   -> origin/update-santa-rules-chrome
3317:  * [new branch]            update-solutions-folder     -> origin/update-solutions-folder
3318:  * [new branch]            update-testing-qa-apps-2511191525 -> origin/update-testing-qa-apps-2511191525
3319:  * [new branch]            update-tuf-keys             -> origin/update-tuf-keys
3320:  * [new branch]            update-tuf-md               -> origin/update-tuf-md
3321:  * [new branch]            update-usage-statistics-mobile-devices -> origin/update-usage-statistics-mobile-devices
3322:  * [new branch]            update-user-password-length-validation-test -> origin/update-user-password-length-validation-test
3323:  * [new branch]            update-vex-statements       -> origin/update-vex-statements
3324:  * [new branch]            update-why-this-way         -> origin/update-why-this-way
3325:  * [new branch]            upgrade-eslint              -> origin/upgrade-eslint
3326:  * [new branch]            upgrade-go                  -> origin/upgrade-go
3327:  * [new branch]            upgrade-typescript          -> origin/upgrade-typescript
3328:  * [new branch]            upload-msiexec-install-log  -> origin/upload-msiexec-install-log
3329:  * [new branch]            usage-stats-mobile-devices-count -> origin/usage-stats-mobile-devices-count
3330:  * [new branch]            use-dockerhub-creds         -> origin/use-dockerhub-creds
3331:  * [new branch]            user-channel-error          -> origin/user-channel-error
3332:  * [new branch]            users-table-experiment      -> origin/users-table-experiment
...

3472:  * [new branch]            website-update-vulnerability-dashboard-dri -> origin/website-update-vulnerability-dashboard-dri
3473:  * [new branch]            website-upgrade-mermaid     -> origin/website-upgrade-mermaid
3474:  * [new branch]            website-usage-statistics-patch -> origin/website-usage-statistics-patch
3475:  * [new branch]            website-validate-fleet-versions -> origin/website-validate-fleet-versions
3476:  * [new branch]            wesite-fix-sales-rituals    -> origin/wesite-fix-sales-rituals
3477:  * [new branch]            willmayhone88-patch-1       -> origin/willmayhone88-patch-1
3478:  * [new branch]            win-fma-goland              -> origin/win-fma-goland
3479:  * [new branch]            win-fma-testing             -> origin/win-fma-testing
3480:  * [new branch]            win-mdm-loadtest            -> origin/win-mdm-loadtest
3481:  * [new branch]            windows-baseline            -> origin/windows-baseline
3482:  * [new branch]            windows-firefox-doh-script  -> origin/windows-firefox-doh-script
3483:  * [new branch]            windows-mdm-autopilot       -> origin/windows-mdm-autopilot
3484:  * [new branch]            windows-mdm-c-poc           -> origin/windows-mdm-c-poc
3485:  * [new branch]            windows-mdm-docs-auto-enroll -> origin/windows-mdm-docs-auto-enroll
3486:  * [new branch]            windows-mdm-load-test       -> origin/windows-mdm-load-test
3487:  * [new branch]            windows_enable_and_configure-error-message -> origin/windows_enable_and_configure-error-message
3488:  * [new branch]            workstations-to-use-edge-channels -> origin/workstations-to-use-edge-channels
...

3498:  * [new branch]            zayhanlon-patch-1           -> origin/zayhanlon-patch-1
3499:  * [new branch]            zenity-execuser             -> origin/zenity-execuser
3500:  * [new branch]            zhumo-patch-1               -> origin/zhumo-patch-1
3501:  * [new branch]            zhumo-patch-2               -> origin/zhumo-patch-2
3502:  * [new branch]            zhumo-patch-3               -> origin/zhumo-patch-3
3503:  * [new branch]            zhumo-patch-4               -> origin/zhumo-patch-4
3504:  * [new branch]            zhumo-patch-5               -> origin/zhumo-patch-5
3505:  * [new branch]            zhumo-patch-6               -> origin/zhumo-patch-6
3506:  * [new branch]            zhumo-patch-7               -> origin/zhumo-patch-7
3507:  * [new branch]            zwass-actions-reminders     -> origin/zwass-actions-reminders
3508:  * [new branch]            zwass-improve-macos-cpe     -> origin/zwass-improve-macos-cpe
3509:  * [new branch]            zwass-patch-1               -> origin/zwass-patch-1
3510:  * [new branch]            zwass-patch-2               -> origin/zwass-patch-2
3511:  * [new branch]            zwinnerman-fixup            -> origin/zwinnerman-fixup
3512:  * [new branch]            zwinnerman-livequery-tracing -> origin/zwinnerman-livequery-tracing
3513:  * [new branch]            zwinnerman-redis-error-handling -> origin/zwinnerman-redis-error-handling
3514:  * [new branch]            zwinnerman-test             -> origin/zwinnerman-test
...

4212:  ##[group]Run actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417
4213:  with:
4214:  go-version-file: fleet/go.mod
4215:  check-latest: false
4216:  token: ***
4217:  cache: true
4218:  env:
4219:  GH_TOKEN: ***
4220:  LOG_LEVEL: info
4221:  ##[endgroup]
4222:  Setup go version spec 1.26.3
4223:  Attempting to download 1.26.3...
4224:  matching 1.26.3...
4225:  Acquiring 1.26.3 from https://github.com/actions/go-versions/releases/download/1.26.3-25533533231/go-1.26.3-win32-x64.zip
4226:  Extracting Go...
4227:  [command]"C:\Program Files\PowerShell\7\pwsh.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ; try { [System.IO.Compression.ZipFile]::ExtractToDirectory('D:\a\_temp\go-1.26.3-win32-x64.zip', 'D:\a\_temp\e76206dd-fb7f-4537-850e-9c61100fca69', $true) } catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath 'D:\a\_temp\go-1.26.3-win32-x64.zip' -DestinationPath 'D:\a\_temp\e76206dd-fb7f-4537-850e-9c61100fca69' -Force } else { throw $_ } } ;"
4228:  Successfully extracted go to D:\a\_temp\e76206dd-fb7f-4537-850e-9c61100fca69
4229:  Adding to the cache ...
4230:  Created link C:\hostedtoolcache\windows\go\1.26.3\x64 => D:\hostedtoolcache\windows\go\1.26.3\x64
4231:  Created link C:\hostedtoolcache\windows\go\1.26.3\x64.complete => D:\hostedtoolcache\windows\go\1.26.3\x64.complete
4232:  Successfully cached go to C:\hostedtoolcache\windows\go\1.26.3\x64
4233:  Added go to the path
4234:  Successfully set up Go version 1.26.3
4235:  [command]C:\hostedtoolcache\windows\go\1.26.3\x64\bin\go.exe env GOMODCACHE
4236:  [command]C:\hostedtoolcache\windows\go\1.26.3\x64\bin\go.exe env GOCACHE
4237:  C:\Users\runneradmin\go\pkg\mod
4238:  C:\Users\runneradmin\AppData\Local\go-build
4239:  ##[warning]Restore cache failed: Dependencies file is not found in D:\a\fleet\fleet. Supported file pattern: go.mod
4240:  go version go1.26.3 windows/amd64
...

4324:  Comparing HEAD with origin/main...
4325:  Fetching base branch apps.json from 9b65497b7879134e810ffc8548ca7096a46d5b58...
4326:  Detected changed apps:
4327:  - arc/darwin
4328:  - brave-browser/darwin
4329:  - camtasia/darwin
4330:  - canva/windows
4331:  - claude/darwin
4332:  - dialpad/darwin
4333:  - grammarly-desktop/darwin
4334:  - granola/darwin
4335:  - granola/windows
4336:  - notepad++/windows
4337:  - parallels/darwin
4338:  - power-bi/windows
4339:  ##[group]Run # Default to no changes if detection step failed or didn't set output
4340:  �[36;1m# Default to no changes if detection step failed or didn't set output�[0m
4341:  �[36;1m$hasChanges = "true"�[0m
...

4452:  �[36;1m$changedAppsJson = '["arc/darwin","brave-browser/darwin","camtasia/darwin","canva/windows","claude/darwin","dialpad/darwin","grammarly-desktop/darwin","granola/darwin","granola/windows","notepad++/windows","parallels/darwin","power-bi/windows"]'�[0m
4453:  �[36;1m$windowsSlugs = ($changedAppsJson | ConvertFrom-Json | Where-Object { $_ -like "*/windows" })�[0m
4454:  �[36;1m$windowsSlugsJson = ($windowsSlugs | ConvertTo-Json -Compress)�[0m
4455:  �[36;1mWrite-Host "Filtering apps.json for slugs: $windowsSlugsJson"�[0m
4456:  �[36;1m�[0m
4457:  �[36;1m# Backup original apps.json�[0m
4458:  �[36;1mCopy-Item -Path "ee\maintained-apps\outputs\apps.json" -Destination "ee\maintained-apps\outputs\apps.json.backup"�[0m
4459:  �[36;1m�[0m
4460:  �[36;1m# Create filtered apps.json�[0m
4461:  �[36;1m# Use a fixed path for the temp file to avoid issues with bash�[0m
4462:  �[36;1m$filteredAppsJson = Join-Path $env:TEMP "filtered-apps-$(New-Guid).json"�[0m
4463:  �[36;1mbash .github/scripts/filter-apps-json.sh "$windowsSlugsJson" "$filteredAppsJson"�[0m
4464:  �[36;1m�[0m
4465:  �[36;1m# Verify the filtered file was created�[0m
4466:  �[36;1mif (-not (Test-Path $filteredAppsJson)) {�[0m
4467:  �[36;1m  Write-Host "Error: Filtered apps.json was not created at $filteredAppsJson"�[0m
4468:  �[36;1m  exit 1�[0m
...

4566:  go: downloading github.com/getsentry/sentry-go v0.18.0
4567:  go: downloading go.elastic.co/apm/v2 v2.7.0
4568:  go: downloading go.opentelemetry.io/otel v1.43.0
4569:  go: downloading go.opentelemetry.io/otel/metric v1.43.0
4570:  go: downloading go.opentelemetry.io/otel/trace v1.43.0
4571:  go: downloading github.com/mattn/go-colorable v0.1.13
4572:  go: downloading github.com/edsrzf/mmap-go v1.1.0
4573:  go: downloading github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d
4574:  go: downloading github.com/aws/aws-sdk-go-v2/config v1.32.12
4575:  go: downloading github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.8
4576:  go: downloading github.com/aws/aws-sdk-go-v2 v1.41.5
4577:  go: downloading github.com/spf13/cobra v1.9.1
4578:  go: downloading github.com/spf13/viper v1.20.1
4579:  go: downloading github.com/go-kit/kit v0.12.0
4580:  go: downloading github.com/smallstep/pkcs7 v0.0.0-20240723090913-5e2c6a136dfa
4581:  go: downloading github.com/hashicorp/go-multierror v1.1.1
4582:  go: downloading github.com/micromdm/plist v0.2.3-0.20260123201933-667adaf87d87
4583:  go: downloading github.com/MicahParks/jwkset v0.11.0
4584:  go: downloading github.com/golang-jwt/jwt/v4 v4.5.2
4585:  go: downloading github.com/WatchBeam/clock v0.0.0-20170901150240-b08e6b4da7ea
4586:  go: downloading github.com/mattn/go-isatty v0.0.20
4587:  go: downloading github.com/andygrunwald/go-jira v1.16.0
4588:  go: downloading github.com/cenkalti/backoff/v4 v4.3.0
4589:  go: downloading github.com/cenkalti/backoff v2.2.1+incompatible
4590:  go: downloading github.com/nukosuke/go-zendesk v0.13.1
4591:  go: downloading github.com/igm/sockjs-go/v3 v3.0.2
4592:  go: downloading gopkg.in/yaml.v2 v2.4.0
4593:  go: downloading github.com/oschwald/maxminddb-golang v1.10.0
4594:  go: downloading github.com/felixge/httpsnoop v1.0.4
4595:  go: downloading github.com/elastic/go-sysinfo v1.11.2
4596:  go: downloading github.com/pkg/errors v0.9.1
4597:  go: downloading go.elastic.co/fastjson v1.1.0
...

4654:  go: downloading cloud.google.com/go/iam v1.5.3
4655:  go: downloading go.opencensus.io v0.24.0
4656:  go: downloading golang.org/x/sync v0.20.0
4657:  go: downloading google.golang.org/grpc v1.79.3
4658:  go: downloading google.golang.org/protobuf v1.36.11
4659:  go: downloading github.com/micromdm/nanolib v0.2.0
4660:  go: downloading github.com/nats-io/nkeys v0.4.15
4661:  go: downloading github.com/nats-io/nuid v1.0.1
4662:  go: downloading github.com/go-logfmt/logfmt v0.5.1
4663:  go: downloading go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352
4664:  go: downloading cloud.google.com/go/auth v0.18.2
4665:  go: downloading cloud.google.com/go/auth/oauth2adapt v0.2.8
4666:  go: downloading cloud.google.com/go/compute/metadata v0.9.0
4667:  go: downloading github.com/google/s2a-go v0.1.9
4668:  go: downloading github.com/elastic/go-windows v1.0.1
4669:  go: downloading github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901
4670:  go: downloading cloud.google.com/go/pubsub/v2 v2.0.0
...

4697:  time=level=INFO msg=Downloading...
4698:  time=level=INFO msg="Executing install script..." app=Notepad++
4699:  time=level=INFO msg="New application detected at: C:\\Program Files\\Notepad++" app=Notepad++
4700:  time=level=INFO msg="Looking for app: Notepad++, version: 8.9.6" app=Notepad++
4701:  time=level=INFO msg="Found app: 'Notepad++ (64-bit x64)' at , Version: 8.9.6" app=Notepad++
4702:  time=level=INFO msg="Executing uninstall script for app..." app=Notepad++
4703:  time=level=INFO msg="Looking for app: Notepad++, version: 8.9.6" app=Notepad++
4704:  time=level=INFO msg="All checks passed for app: Notepad++ (notepad++/windows)"
4705:  time=level=INFO msg="Validating app: Power BI (power-bi/windows)"
4706:  time=level=INFO msg=Downloading...
4707:  time=level=INFO msg="Executing install script..." app="Power BI"
4708:  time=level=INFO msg="New application detected at: C:\\Program Files\\Microsoft Power BI Desktop" app="Power BI"
4709:  time=level=INFO msg="Looking for app: Power BI, version: 2.154.956.0" app="Power BI"
4710:  time=level=INFO msg="Found app: 'Microsoft Power BI Desktop (x64)' at , Version: 2.154.956.0" app="Power BI"
4711:  time=level=INFO msg="Executing uninstall script for app..." app="Power BI"
4712:  time=level=ERROR msg="Error uninstalling app: exit status 1" app="Power BI"
4713:  time=level=ERROR msg="Output: \n--------------------\nAt C:\\Users\\runneradmin\\AppData\\Local\\Temp\\fma-validate-1482974656\\script.ps1:131 char:6\r\n+     }\r\n+      ~\r\nThe Try statement is missing its Catch or Finally block.\r\nAt C:\\Users\\runneradmin\\AppData\\Local\\Temp\\fma-validate-1482974656\\script.ps1:133 char:1\r\n+ } catch {\r\n+ ~\r\nUnexpected token '}' in expression or statement.\r\n    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException\r\n    + FullyQualifiedErrorId : MissingCatchOrFinally\r\n \r\n\n--------------------" app="Power BI"
4714:  time=level=WARN msg="Some apps were validated with warnings: [Canva Granola]"
4715:  time=level=INFO msg="Validated 3 out of 4 apps successfully."
4716:  time=level=INFO msg="Apps with errors: [Power BI]"
4717:  exit status 1
4718:  ##[error]Process completed with exit code 1.
4719:  Post job cleanup.

@github-actions

Copy link
Copy Markdown
Contributor

Closing in favor of #46389.

@github-actions github-actions Bot closed this May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants