Skip to content

Update Fleet-maintained apps - #50513

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

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

Conversation

@fleet-release

@fleet-release fleet-release commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • New Features
    • Updated maintained app catalog entries with the latest releases, download links, version checks, and checksums across macOS and Windows apps.
  • Bug Fixes
    • Improved Windows MSI installation handling across many apps, including support for successful installs that require a restart.
    • Corrected installer log-path handling for paths containing spaces.
    • Updated Adobe Acrobat Reader’s download source and refreshed several platform-specific package details.

Generated automatically with cmd/maintained-apps.
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/1password/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.oiPBJP	2026-08-04 16:51:59.346345931 +0000
+++ /tmp/new.C2Kd3P	2026-08-04 16:51:59.346345931 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/7-zip/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Cn2wr7	2026-08-04 16:51:59.421346890 +0000
+++ /tmp/new.DQkWVK	2026-08-04 16:51:59.421346890 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/8x8-work/darwin.json

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

ee/maintained-apps/outputs/8x8-work/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.9Tm8ap	2026-08-04 16:51:59.519348142 +0000
+++ /tmp/new.NQSZpr	2026-08-04 16:51:59.519348142 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/adobe-acrobat-pro/windows.json

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

ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json

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

ee/maintained-apps/outputs/adobe-dng-converter/darwin.json

=== Install // b175e533 -> ac06e091 ===

--- /tmp/old.ZwKtyj	2026-08-04 16:51:59.670350072 +0000
+++ /tmp/new.uLMjQg	2026-08-04 16:51:59.670350072 +0000
@@ -101,5 +101,5 @@
 hdiutil detach "$MOUNT_POINT" || true
 # install pkg files
 quit_and_track_application 'com.adobe.DNGConverter'
-sudo installer -pkg "$TMPDIR/DNGConverter_18_4_1.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/DNGConverter_18_5.pkg" -target / || exit $?
 relaunch_application 'com.adobe.DNGConverter'

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

ee/maintained-apps/outputs/advanced-installer/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.2w3TOO	2026-08-04 16:51:59.730350839 +0000
+++ /tmp/new.xqgncy	2026-08-04 16:51:59.730350839 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/advanced-renamer/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ri71Rb	2026-08-04 16:51:59.846352321 +0000
+++ /tmp/new.XwCSUK	2026-08-04 16:51:59.846352321 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.CEo0IQ	2026-08-04 16:51:59.914353191 +0000
+++ /tmp/new.kwEgYD	2026-08-04 16:51:59.914353191 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ORG7iM	2026-08-04 16:52:00.045354865 +0000
+++ /tmp/new.CK1LPq	2026-08-04 16:52:00.046354877 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.SzK2Au	2026-08-04 16:52:00.120355823 +0000
+++ /tmp/new.RfWlDA	2026-08-04 16:52:00.121355836 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/allway-sync/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.YqPv60	2026-08-04 16:52:00.190356718 +0000
+++ /tmp/new.8ae9Mh	2026-08-04 16:52:00.191356731 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-11/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.1nEBqD	2026-08-04 16:52:00.247357446 +0000
+++ /tmp/new.nluje5	2026-08-04 16:52:00.247357446 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-17/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.dHcSNv	2026-08-04 16:52:00.304358175 +0000
+++ /tmp/new.vrtyn8	2026-08-04 16:52:00.304358175 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-21/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.8gDov0	2026-08-04 16:52:00.359358878 +0000
+++ /tmp/new.v6LLer	2026-08-04 16:52:00.360358890 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-24/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ca9rOb	2026-08-04 16:52:00.431359798 +0000
+++ /tmp/new.ZleEt5	2026-08-04 16:52:00.432359810 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-25/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Kd4Bh1	2026-08-04 16:52:00.487360513 +0000
+++ /tmp/new.JUO98m	2026-08-04 16:52:00.487360513 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-26/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.s8loCi	2026-08-04 16:52:00.542361216 +0000
+++ /tmp/new.Dxl5hj	2026-08-04 16:52:00.542361216 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.pllFOC	2026-08-04 16:52:00.597361932 +0000
+++ /tmp/new.G6kP5e	2026-08-04 16:52:00.597361932 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-corretto-jre-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ydgOeI	2026-08-04 16:52:00.653362689 +0000
+++ /tmp/new.r1Vnxm	2026-08-04 16:52:00.653362689 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-dcv-client/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.kM0eHY	2026-08-04 16:52:00.723363636 +0000
+++ /tmp/new.BAeZ5J	2026-08-04 16:52:00.723363636 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-dcv-server/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.6leojf	2026-08-04 16:52:00.795364610 +0000
+++ /tmp/new.QdgqBO	2026-08-04 16:52:00.795364610 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-redshift-odbc-driver/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.b4ILaS	2026-08-04 16:52:00.860365489 +0000
+++ /tmp/new.4pMGEG	2026-08-04 16:52:00.860365489 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/amazon-workspaces/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Hd5EZv	2026-08-04 16:52:00.931366450 +0000
+++ /tmp/new.kPeH1l	2026-08-04 16:52:00.931366450 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ZSaIfP	2026-08-04 16:52:01.020367654 +0000
+++ /tmp/new.8fekZf	2026-08-04 16:52:01.020367654 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/arduino-ide/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.MUtkDC	2026-08-04 16:52:01.111368885 +0000
+++ /tmp/new.7ecS7G	2026-08-04 16:52:01.111368885 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.wwZ2G1	2026-08-04 16:52:01.169369669 +0000
+++ /tmp/new.RkDofx	2026-08-04 16:52:01.169369669 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.XYjv3E	2026-08-04 16:52:01.238370603 +0000
+++ /tmp/new.aGRytk	2026-08-04 16:52:01.238370603 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/aws-cli/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.i3v2C7	2026-08-04 16:52:01.289371293 +0000
+++ /tmp/new.fIAVw5	2026-08-04 16:52:01.289371293 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/aws-sam-cli/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.gOF74G	2026-08-04 16:52:01.339371969 +0000
+++ /tmp/new.wTyVuI	2026-08-04 16:52:01.339371969 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/aws-vpn-client/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.om0We3	2026-08-04 16:52:01.389372645 +0000
+++ /tmp/new.bGkK0b	2026-08-04 16:52:01.390372659 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.UuNWaU	2026-08-04 16:52:01.445373403 +0000
+++ /tmp/new.6GMX6O	2026-08-04 16:52:01.445373403 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.nnrOfD	2026-08-04 16:52:01.498374120 +0000
+++ /tmp/new.ovkuob	2026-08-04 16:52:01.498374120 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/azure-functions-core-tools/windows.json

=== Install // 42c7791f -> 49fc2740 ===

--- /tmp/old.AqMnBD	2026-08-04 16:52:01.561374972 +0000
+++ /tmp/new.GyZvZJ	2026-08-04 16:52:01.561374972 +0000
@@ -11,7 +11,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

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

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

ee/maintained-apps/outputs/beyond-compare/darwin.json

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

ee/maintained-apps/outputs/beyond-compare/windows.json

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

ee/maintained-apps/outputs/bitwig-studio/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Wjp1q4	2026-08-04 16:52:01.747377488 +0000
+++ /tmp/new.b5D59K	2026-08-04 16:52:01.747377488 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.eUPv46	2026-08-04 16:52:01.807378300 +0000
+++ /tmp/new.lCjhNF	2026-08-04 16:52:01.807378300 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 29a9338f -> 85459eac ===

--- /tmp/old.CEBJsb	2026-08-04 16:52:01.871379165 +0000
+++ /tmp/new.JySWwq	2026-08-04 16:52:01.871379165 +0000
@@ -7,7 +7,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`" ALLUSERS=2" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`" ALLUSERS=2" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

ee/maintained-apps/outputs/box-drive/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.2stPNv	2026-08-04 16:52:01.931379977 +0000
+++ /tmp/new.iypUde	2026-08-04 16:52:01.931379977 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/box-tools/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.E4VVAn	2026-08-04 16:52:01.988380748 +0000
+++ /tmp/new.L5WG2b	2026-08-04 16:52:01.988380748 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.K9dK40	2026-08-04 16:52:02.043381492 +0000
+++ /tmp/new.gLaLUm	2026-08-04 16:52:02.044381505 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.6fRzBO	2026-08-04 16:52:02.099382249 +0000
+++ /tmp/new.a4C1Zl	2026-08-04 16:52:02.099382249 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.PNRKiG	2026-08-04 16:52:02.151382953 +0000
+++ /tmp/new.W29JLL	2026-08-04 16:52:02.151382953 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.LZDCME	2026-08-04 16:52:02.225383954 +0000
+++ /tmp/new.utQ8m0	2026-08-04 16:52:02.225383954 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

ee/maintained-apps/outputs/chef-workstation/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.jkzDfA	2026-08-04 16:52:02.321385253 +0000
+++ /tmp/new.j6tFbX	2026-08-04 16:52:02.321385253 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cherry-keys/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.CjVIBs	2026-08-04 16:52:02.391386199 +0000
+++ /tmp/new.4uFFVw	2026-08-04 16:52:02.391386199 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/chrome-remote-desktop/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.BPFcPZ	2026-08-04 16:52:02.451387011 +0000
+++ /tmp/new.urIZUb	2026-08-04 16:52:02.452387024 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.fiwntl	2026-08-04 16:52:02.526388026 +0000
+++ /tmp/new.LfKIpo	2026-08-04 16:52:02.526388026 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cisco-jabber/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.AcnPK4	2026-08-04 16:52:02.583388796 +0000
+++ /tmp/new.awEcSG	2026-08-04 16:52:02.583388796 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cisco-webex-recorder-and-player/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.x0nYuW	2026-08-04 16:52:02.645389635 +0000
+++ /tmp/new.KQHnO6	2026-08-04 16:52:02.645389635 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.fQ2VMV	2026-08-04 16:52:02.739390907 +0000
+++ /tmp/new.cgL9zg	2026-08-04 16:52:02.739390907 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.u2if4m	2026-08-04 16:52:02.802391759 +0000
+++ /tmp/new.Yhr6fc	2026-08-04 16:52:02.802391759 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.frokCz	2026-08-04 16:52:02.857392503 +0000
+++ /tmp/new.bzN0wh	2026-08-04 16:52:02.857392503 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cloudflare-warp/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.3Cj0wf	2026-08-04 16:52:02.914393274 +0000
+++ /tmp/new.QWXbiM	2026-08-04 16:52:02.914393274 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cmake-app/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.wbL3ji	2026-08-04 16:52:02.967393991 +0000
+++ /tmp/new.affCkv	2026-08-04 16:52:02.967393991 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/codemeter-runtime-kit/windows.json

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

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

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

ee/maintained-apps/outputs/colour-contrast-analyser/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.UumqPw	2026-08-04 16:52:03.120396061 +0000
+++ /tmp/new.athK2Z	2026-08-04 16:52:03.121396074 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.bV4Yu9	2026-08-04 16:52:03.175396805 +0000
+++ /tmp/new.S2N2Sk	2026-08-04 16:52:03.175396805 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/creative-force-kelvin/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ssvxoE	2026-08-04 16:52:03.224397468 +0000
+++ /tmp/new.5SCZFa	2026-08-04 16:52:03.224397468 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/crestron-airmedia-peripherals/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.zlpRTw	2026-08-04 16:52:03.286398306 +0000
+++ /tmp/new.zCyzae	2026-08-04 16:52:03.286398306 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/crestron-airmedia/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.1akkPD	2026-08-04 16:52:03.346399118 +0000
+++ /tmp/new.DIzP7e	2026-08-04 16:52:03.347399131 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/cribl-edge/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.fh9vpr	2026-08-04 16:52:03.402399875 +0000
+++ /tmp/new.2fDlDH	2026-08-04 16:52:03.402399875 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 27b04e7a -> 01aaef68 ===

--- /tmp/old.XIhHDP	2026-08-04 16:52:03.463400701 +0000
+++ /tmp/new.mieYn4	2026-08-04 16:52:03.464400714 +0000
@@ -11,7 +11,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} ISSETUPDRIVEN=1 /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" ISSETUPDRIVEN=1 /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Xs4fcd	2026-08-04 16:52:03.528401580 +0000
+++ /tmp/new.DTz63F	2026-08-04 16:52:03.528401580 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

ee/maintained-apps/outputs/cyberduck-cli/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.l0JrKf	2026-08-04 16:52:03.624402878 +0000
+++ /tmp/new.gMIezY	2026-08-04 16:52:03.625402892 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.56CQUQ	2026-08-04 16:52:03.727404272 +0000
+++ /tmp/new.B1KEp9	2026-08-04 16:52:03.727404272 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/db-browser-for-sqlite/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Hx7i8L	2026-08-04 16:52:03.803405300 +0000
+++ /tmp/new.oLDkPW	2026-08-04 16:52:03.803405300 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

ee/maintained-apps/outputs/delinea-connection-manager/windows.json

=== Install // d3f438be -> 00512c4c ===

--- /tmp/old.yNyO7H	2026-08-04 16:52:03.894406531 +0000
+++ /tmp/new.ZZb1HL	2026-08-04 16:52:03.894406531 +0000
@@ -12,7 +12,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} ALLUSERS=1 MSIINSTALLPERUSER=`"`" /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" ALLUSERS=1 MSIINSTALLPERUSER=`"`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

ee/maintained-apps/outputs/devolutions-launcher/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.pv1OYH	2026-08-04 16:52:03.951407302 +0000
+++ /tmp/new.t0LIze	2026-08-04 16:52:03.951407302 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/devolutions-workspace/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.HancRh	2026-08-04 16:52:04.011408113 +0000
+++ /tmp/new.4NZMUI	2026-08-04 16:52:04.011408113 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.zOFyOh	2026-08-04 16:52:04.074408965 +0000
+++ /tmp/new.cm2XSj	2026-08-04 16:52:04.074408965 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.pKVPi1	2026-08-04 16:52:04.217410900 +0000
+++ /tmp/new.Wk0LAA	2026-08-04 16:52:04.217410900 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

ee/maintained-apps/outputs/draftable-desktop/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ouY7C4	2026-08-04 16:52:04.393413281 +0000
+++ /tmp/new.de7gFg	2026-08-04 16:52:04.393413281 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.4Z5V2b	2026-08-04 16:52:04.494414647 +0000
+++ /tmp/new.o7bGz3	2026-08-04 16:52:04.494414647 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.1mE8y0	2026-08-04 16:52:04.549415391 +0000
+++ /tmp/new.c8QDVS	2026-08-04 16:52:04.549415391 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/druva-insync/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.iS7XLI	2026-08-04 16:52:04.614416270 +0000
+++ /tmp/new.p557Xe	2026-08-04 16:52:04.614416270 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/duo-desktop/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.vz7t2W	2026-08-04 16:52:04.682417190 +0000
+++ /tmp/new.5ZFEdZ	2026-08-04 16:52:04.682417190 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jdk-11/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.wi4lCH	2026-08-04 16:52:04.735417907 +0000
+++ /tmp/new.YcOR8W	2026-08-04 16:52:04.735417907 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jdk-17/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.LsJnHr	2026-08-04 16:52:04.788418624 +0000
+++ /tmp/new.FkCp2C	2026-08-04 16:52:04.789418637 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jdk-21/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.KPDzmI	2026-08-04 16:52:04.840419327 +0000
+++ /tmp/new.k1p9ox	2026-08-04 16:52:04.840419327 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jdk-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ZKpvrJ	2026-08-04 16:52:04.893420044 +0000
+++ /tmp/new.rLILgb	2026-08-04 16:52:04.893420044 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jre-11/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.zW9kLG	2026-08-04 16:52:04.945420748 +0000
+++ /tmp/new.DWkj9l	2026-08-04 16:52:04.945420748 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jre-17/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ii0kXi	2026-08-04 16:52:04.997421451 +0000
+++ /tmp/new.Zh8Smg	2026-08-04 16:52:04.997421451 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jre-21/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.TLgeBV	2026-08-04 16:52:05.052422195 +0000
+++ /tmp/new.9IoYrh	2026-08-04 16:52:05.052422195 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/eclipse-temurin-jre-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.rbjXy3	2026-08-04 16:52:05.102422872 +0000
+++ /tmp/new.v8TW8t	2026-08-04 16:52:05.103422885 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/egnyte-webedit/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.cDdZXo	2026-08-04 16:52:05.164423710 +0000
+++ /tmp/new.a18dtf	2026-08-04 16:52:05.164423710 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/elevate-uc/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.S2a9O3	2026-08-04 16:52:05.226424549 +0000
+++ /tmp/new.fxGoU5	2026-08-04 16:52:05.226424549 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/elgato-control-center/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.F7UEFB	2026-08-04 16:52:05.303425591 +0000
+++ /tmp/new.Bze1YH	2026-08-04 16:52:05.303425591 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/elgato-stream-deck/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.MdRSS9	2026-08-04 16:52:05.357426321 +0000
+++ /tmp/new.RkmgzE	2026-08-04 16:52:05.357426321 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.dnNpSK	2026-08-04 16:52:05.410427038 +0000
+++ /tmp/new.GdVoh8	2026-08-04 16:52:05.410427038 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.lCfV2x	2026-08-04 16:52:05.473427890 +0000
+++ /tmp/new.YdGRAe	2026-08-04 16:52:05.473427890 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/epic-games/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.xYYlTl	2026-08-04 16:52:05.534428715 +0000
+++ /tmp/new.J7PKvy	2026-08-04 16:52:05.534428715 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.qAj7MR	2026-08-04 16:52:05.625429946 +0000
+++ /tmp/new.6xLYbF	2026-08-04 16:52:05.625429946 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

ee/maintained-apps/outputs/firefox@developer-edition/darwin.json

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

ee/maintained-apps/outputs/firefox@nightly/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.IfWkV6	2026-08-04 16:52:05.857433085 +0000
+++ /tmp/new.GAcfe8	2026-08-04 16:52:05.858433098 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.dxIfvO	2026-08-04 16:52:05.920433937 +0000
+++ /tmp/new.kcvMam	2026-08-04 16:52:05.920433937 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/genesys-cloud/darwin.json

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

ee/maintained-apps/outputs/genesys-cloud/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.cYVoIg	2026-08-04 16:52:06.025435357 +0000
+++ /tmp/new.o995Wx	2026-08-04 16:52:06.025435357 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/geogebra-classic/windows.json

=== Install // ebe19da8 -> d43086d9 ===

--- /tmp/old.cTVMw3	2026-08-04 16:52:06.080436101 +0000
+++ /tmp/new.mjy0oi	2026-08-04 16:52:06.080436101 +0000
@@ -10,7 +10,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

ee/maintained-apps/outputs/git-extensions/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.y9JtNv	2026-08-04 16:52:06.135436845 +0000
+++ /tmp/new.XHKL48	2026-08-04 16:52:06.135436845 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/github-desktop/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.c0JY6Z	2026-08-04 16:52:06.197437684 +0000
+++ /tmp/new.5TZ2S2	2026-08-04 16:52:06.197437684 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.VHvieT	2026-08-04 16:52:06.258438509 +0000
+++ /tmp/new.wRAyH0	2026-08-04 16:52:06.258438509 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/google-ads-editor/windows.json

=== Install // bdccfcda -> 351845b5 ===

--- /tmp/old.6FyPpa	2026-08-04 16:52:06.311439226 +0000
+++ /tmp/new.SvoNEi	2026-08-04 16:52:06.311439226 +0000
@@ -11,7 +11,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

ee/maintained-apps/outputs/google-chrome/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.0ZnBp9	2026-08-04 16:52:06.363439929 +0000
+++ /tmp/new.zxegzj	2026-08-04 16:52:06.363439929 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/google-credential-provider-for-windows/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.s3ha3d	2026-08-04 16:52:06.427440795 +0000
+++ /tmp/new.LTpMWj	2026-08-04 16:52:06.427440795 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 36ce6af0 -> a6c7d24e ===

--- /tmp/old.16qh62	2026-08-04 16:52:06.510441918 +0000
+++ /tmp/new.3NSf0X	2026-08-04 16:52:06.510441918 +0000
@@ -8,7 +8,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`" G2MINSTALLFORALLUSERS=1" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`" G2MINSTALLFORALLUSERS=1" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

=== 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/windows.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.9eXVg9	2026-08-04 16:52:06.648443784 +0000
+++ /tmp/new.uyXCsx	2026-08-04 16:52:06.649443798 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/home-assistant/darwin.json

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

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

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

ee/maintained-apps/outputs/ibm-semeru-jdk-11/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.cZ27Km	2026-08-04 16:52:06.779445557 +0000
+++ /tmp/new.lpaMM7	2026-08-04 16:52:06.779445557 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jdk-17/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.GxSrci	2026-08-04 16:52:06.831446260 +0000
+++ /tmp/new.KbYi7X	2026-08-04 16:52:06.831446260 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jdk-21/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.NVYUyv	2026-08-04 16:52:06.883446963 +0000
+++ /tmp/new.OllvIQ	2026-08-04 16:52:06.883446963 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jdk-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.BWzSmP	2026-08-04 16:52:06.935447667 +0000
+++ /tmp/new.k8odCU	2026-08-04 16:52:06.935447667 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jre-11/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.fhTsCb	2026-08-04 16:52:06.991448424 +0000
+++ /tmp/new.4KQsVD	2026-08-04 16:52:06.991448424 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jre-17/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.uvsKzl	2026-08-04 16:52:07.044449141 +0000
+++ /tmp/new.BjR3wK	2026-08-04 16:52:07.044449141 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jre-21/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.SsclV2	2026-08-04 16:52:07.096449845 +0000
+++ /tmp/new.MNW2Pw	2026-08-04 16:52:07.096449845 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/ibm-semeru-jre-8/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.1PtjTw	2026-08-04 16:52:07.148450548 +0000
+++ /tmp/new.Tt8X5P	2026-08-04 16:52:07.149450562 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // e7eaf6bb -> 72349997 ===

--- /tmp/old.bZCfpA	2026-08-04 16:52:07.201451265 +0000
+++ /tmp/new.cMDy7g	2026-08-04 16:52:07.201451265 +0000
@@ -9,7 +9,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" ALLUSERS=1 /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.LajWKm	2026-08-04 16:52:07.276452280 +0000
+++ /tmp/new.wrzAGK	2026-08-04 16:52:07.276452280 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.MgMW1p	2026-08-04 16:52:07.355453348 +0000
+++ /tmp/new.ycgUN8	2026-08-04 16:52:07.356453362 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.IWcNPW	2026-08-04 16:52:07.411454106 +0000
+++ /tmp/new.lex8RQ	2026-08-04 16:52:07.411454106 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ufLF5P	2026-08-04 16:52:07.487455134 +0000
+++ /tmp/new.qHCXim	2026-08-04 16:52:07.487455134 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json

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

ee/maintained-apps/outputs/jetbrains-toolbox/windows.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.qXrxUJ	2026-08-04 16:52:07.646457285 +0000
+++ /tmp/new.G1fYgf	2026-08-04 16:52:07.646457285 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.oSWnyl	2026-08-04 16:52:07.722458313 +0000
+++ /tmp/new.4499Rv	2026-08-04 16:52:07.722458313 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Qw2Y1r	2026-08-04 16:52:07.784459151 +0000
+++ /tmp/new.8qXSaq	2026-08-04 16:52:07.784459151 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.9QLTm6	2026-08-04 16:52:07.839459895 +0000
+++ /tmp/new.tXBkHM	2026-08-04 16:52:07.839459895 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

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

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

ee/maintained-apps/outputs/marked-app/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.7YY6Sc	2026-08-04 16:52:08.102463453 +0000
+++ /tmp/new.CcrRYx	2026-08-04 16:52:08.102463453 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/microsoft-365-copilot/darwin.json

=== Install // 49bf2ee3 -> 0be42f66 ===

--- /tmp/old.Jbrgsw	2026-08-04 16:52:08.158464210 +0000
+++ /tmp/new.3eGOJy	2026-08-04 16:52:08.158464210 +0000
@@ -117,6 +117,6 @@
 
 EOF
 
-sudo installer -pkg "$TMPDIR/Microsoft_365_Copilot_universal_1.2607.2001_Installer.pkg" -target / -applyChoiceChangesXML "$CHOICE_XML" || exit $?
+sudo installer -pkg "$TMPDIR/Microsoft_365_Copilot_universal_1.2607.2701_Installer.pkg" -target / -applyChoiceChangesXML "$CHOICE_XML" || exit $?
 
 relaunch_application 'com.microsoft.m365copilot'

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

ee/maintained-apps/outputs/microsoft-edge/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.62aQxO	2026-08-04 16:52:08.210464914 +0000
+++ /tmp/new.vyvLLn	2026-08-04 16:52:08.211464927 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/microsoft-teams/darwin.json

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

ee/maintained-apps/outputs/microsoft-teams/windows.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.9N91NK	2026-08-04 16:52:08.374467132 +0000
+++ /tmp/new.jdNibI	2026-08-04 16:52:08.374467132 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/mongodb-compass/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.zQbJHL	2026-08-04 16:52:08.437467985 +0000
+++ /tmp/new.U7Y6S9	2026-08-04 16:52:08.437467985 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.EzqCpq	2026-08-04 16:52:08.520469107 +0000
+++ /tmp/new.AUCxBd	2026-08-04 16:52:08.520469107 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.WgqvtQ	2026-08-04 16:52:08.578469892 +0000
+++ /tmp/new.vqqavN	2026-08-04 16:52:08.578469892 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/nessus-agent/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.WRJEas	2026-08-04 16:52:08.634470687 +0000
+++ /tmp/new.CydoqE	2026-08-04 16:52:08.635470701 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.5hGW3t	2026-08-04 16:52:08.691471506 +0000
+++ /tmp/new.4FQIO9	2026-08-04 16:52:08.691471506 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.jgpkBt	2026-08-04 16:52:08.744472268 +0000
+++ /tmp/new.Eg1taL	2026-08-04 16:52:08.744472268 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

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

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

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

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

ee/maintained-apps/outputs/openvpn-connect/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.PMxJru	2026-08-04 16:52:09.023476279 +0000
+++ /tmp/new.hMt7qm	2026-08-04 16:52:09.023476279 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/origami-studio/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.y3YwV7	2026-08-04 16:52:09.134477875 +0000
+++ /tmp/new.Izm1od	2026-08-04 16:52:09.134477875 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/pale-moon/darwin.json

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

ee/maintained-apps/outputs/pdfsam-basic/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.8oIjkk	2026-08-04 16:52:09.237479356 +0000
+++ /tmp/new.PPPMqd	2026-08-04 16:52:09.237479356 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.EKZSYA	2026-08-04 16:52:09.331480708 +0000
+++ /tmp/new.GoFOLV	2026-08-04 16:52:09.331480708 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/prisma-browser/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.80DDP6	2026-08-04 16:52:09.383481455 +0000
+++ /tmp/new.3Pfa0F	2026-08-04 16:52:09.383481455 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.7midNz	2026-08-04 16:52:09.468482677 +0000
+++ /tmp/new.UjPlKG	2026-08-04 16:52:09.468482677 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

ee/maintained-apps/outputs/rectangle-pro/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.HYqyfP	2026-08-04 16:52:09.638485121 +0000
+++ /tmp/new.aAcoEx	2026-08-04 16:52:09.638485121 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/remote-desktop-manager/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.IgqYvA	2026-08-04 16:52:09.698485984 +0000
+++ /tmp/new.MsuFuH	2026-08-04 16:52:09.698485984 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

ee/maintained-apps/outputs/royal-tsx/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.OG1DBa	2026-08-04 16:52:09.838487997 +0000
+++ /tmp/new.2fFUXg	2026-08-04 16:52:09.838487997 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.yTHwAm	2026-08-04 16:52:09.956489693 +0000
+++ /tmp/new.E1rBLW	2026-08-04 16:52:09.956489693 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.shAN9g	2026-08-04 16:52:10.041490916 +0000
+++ /tmp/new.J2DVwG	2026-08-04 16:52:10.041490916 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/sonicwall-netextender/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.tjlHTN	2026-08-04 16:52:10.099491749 +0000
+++ /tmp/new.4Ff10a	2026-08-04 16:52:10.099491749 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 17f62246 -> e23ea804 ===

--- /tmp/old.c8Fico	2026-08-04 16:52:10.187493015 +0000
+++ /tmp/new.Bwe2VA	2026-08-04 16:52:10.187493015 +0000
@@ -3,7 +3,7 @@
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`" ACCEPTEULA=1" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`" ACCEPTEULA=1" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500

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

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

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

ee/maintained-apps/outputs/tailscale-app/darwin.json

=== Install // e568557b -> 6301b666 ===

--- /tmp/old.U3aLhD	2026-08-04 16:52:10.294494553 +0000
+++ /tmp/new.bmOcsM	2026-08-04 16:52:10.294494553 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'io.tailscale.ipn.macsys'
-sudo installer -pkg "$TMPDIR/Tailscale-1.98.10-macos.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/Tailscale-1.102.1-macos.pkg" -target / || exit $?
 relaunch_application 'io.tailscale.ipn.macsys'

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ApGtWK	2026-08-04 16:52:10.353495401 +0000
+++ /tmp/new.tjPUCc	2026-08-04 16:52:10.353495401 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.KJjD2g	2026-08-04 16:52:10.420496365 +0000
+++ /tmp/new.SCfR8z	2026-08-04 16:52:10.420496365 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Tv3qOG	2026-08-04 16:52:10.478497198 +0000
+++ /tmp/new.IWXvxQ	2026-08-04 16:52:10.478497198 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/topaz-gigapixel-ai/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.73xiE4	2026-08-04 16:52:10.563498420 +0000
+++ /tmp/new.J4MTO1	2026-08-04 16:52:10.563498420 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/topaz-photo-ai/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Ob5VtB	2026-08-04 16:52:10.647499628 +0000
+++ /tmp/new.a8Wlyw	2026-08-04 16:52:10.647499628 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.azySOA	2026-08-04 16:52:10.722500706 +0000
+++ /tmp/new.WM1Xfz	2026-08-04 16:52:10.722500706 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ZOWEcO	2026-08-04 16:52:10.787501641 +0000
+++ /tmp/new.Bnk4wD	2026-08-04 16:52:10.787501641 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.8eixm4	2026-08-04 16:52:10.855502619 +0000
+++ /tmp/new.U1a7Oo	2026-08-04 16:52:10.855502619 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/trezor-suite/darwin.json

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.Cs0q3b	2026-08-04 16:52:10.980504416 +0000
+++ /tmp/new.1TUDfC	2026-08-04 16:52:10.980504416 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

ee/maintained-apps/outputs/ultimaker-cura/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.2kLswi	2026-08-04 16:52:11.105506213 +0000
+++ /tmp/new.wmEcQC	2026-08-04 16:52:11.105506213 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.YuqZr1	2026-08-04 16:52:11.202507608 +0000
+++ /tmp/new.zHCFed	2026-08-04 16:52:11.203507622 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.XuKitB	2026-08-04 16:52:11.286508815 +0000
+++ /tmp/new.7BRjkb	2026-08-04 16:52:11.287508830 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // e404586c -> 61706202 ===

--- /tmp/old.pkebPH	2026-08-04 16:52:11.342509620 +0000
+++ /tmp/new.TXdjAQ	2026-08-04 16:52:11.342509620 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'org.weasis.launcher'
-sudo installer -pkg "$TMPDIR/Weasis-4.7.1-aarch64.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/Weasis-4.7.2-aarch64.pkg" -target / || exit $?
 relaunch_application 'org.weasis.launcher'

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.bkP97V	2026-08-04 16:52:11.411510612 +0000
+++ /tmp/new.WeBWiX	2026-08-04 16:52:11.411510612 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.nlcSbq	2026-08-04 16:52:11.473511504 +0000
+++ /tmp/new.U1RjIQ	2026-08-04 16:52:11.473511504 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.CvkOUK	2026-08-04 16:52:11.564512812 +0000
+++ /tmp/new.JAOkuS	2026-08-04 16:52:11.565512826 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/windows-app/darwin.json

=== Install // 333033b1 -> 78ca7433 ===

--- /tmp/old.yWBtuP	2026-08-04 16:52:11.621513632 +0000
+++ /tmp/new.G1gXsw	2026-08-04 16:52:11.622513646 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'com.microsoft.rdc.macos'
-sudo installer -pkg "$TMPDIR/Windows_App_11.3.7_installer.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/Windows_App_11.3.8_installer.pkg" -target / || exit $?
 relaunch_application 'com.microsoft.rdc.macos'

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.hSCdeq	2026-08-04 16:52:11.682514509 +0000
+++ /tmp/new.G4B0Nt	2026-08-04 16:52:11.682514509 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.EIuvt6	2026-08-04 16:52:11.750515486 +0000
+++ /tmp/new.K17aW8	2026-08-04 16:52:11.750515486 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.uIRSIE	2026-08-04 16:52:11.878517327 +0000
+++ /tmp/new.ITnFpX	2026-08-04 16:52:11.879517341 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.ikXqlg	2026-08-04 16:52:11.936518160 +0000
+++ /tmp/new.Q0ueJk	2026-08-04 16:52:11.936518160 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/yubico-authenticator/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.zdotP2	2026-08-04 16:52:12.004519138 +0000
+++ /tmp/new.vy3nJA	2026-08-04 16:52:12.005519152 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/zoom-outlook-plugin/windows.json

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.F0DUbU	2026-08-04 16:52:12.064520001 +0000
+++ /tmp/new.nIRTL5	2026-08-04 16:52:12.064520001 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.lGHU4X	2026-08-04 16:52:12.127520907 +0000
+++ /tmp/new.9OAYyS	2026-08-04 16:52:12.127520907 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

=== Install // 8959087b -> 22e48c46 ===

--- /tmp/old.p04YxY	2026-08-04 16:52:12.204522014 +0000
+++ /tmp/new.xu3W39	2026-08-04 16:52:12.204522014 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updated maintained-app definitions across Windows and macOS. Windows installer scripts now quote MSI log paths and treat exit codes 0, 3010, and 1641 as successful while preserving other failures. Many Windows and macOS entries also update versions, patch queries, installer URLs, package filenames, script references, and SHA-256 checksums. Existing uninstall configurations remain unchanged in the affected entries.

Possibly related PRs

  • fleetdm/fleet#50407: Introduced the shared MSI success-code and log-path handling changes applied by this PR.
  • fleetdm/fleet#50446: Updated overlapping maintained-app manifests and Windows MSI installer references.
  • fleetdm/fleet#50499: Contains overlapping maintained-app and Windows installer script updates.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description states the purpose but omits the required issue reference, checklist responses, and testing information. Add the required template sections, issue reference or NA, applicable checklist responses, and testing details.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary change: updating Fleet-maintained app data.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fma-2608041634

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.

@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: 3

🤖 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/bitwig-studio/windows.json`:
- Line 19: Remove the -Verb RunAs elevation switch from the Fleet MSI
installation command in the source template, then regenerate the maintained-app
outputs. Apply the generated change to
ee/maintained-apps/outputs/bitwig-studio/windows.json:19-19,
ee/maintained-apps/outputs/blender/windows.json:21-21,
ee/maintained-apps/outputs/bluej/windows.json:19-19,
ee/maintained-apps/outputs/mattermost/windows.json:21-21,
ee/maintained-apps/outputs/microsoft-edge/windows.json:20-20,
ee/maintained-apps/outputs/mixxx/windows.json:20-20, and
ee/maintained-apps/outputs/mongodb-compass/windows.json:20-20; preserve the
existing msiexec arguments and exit-code handling.

In `@ee/maintained-apps/outputs/bluej/windows.json`:
- Line 19: The BlueJ Windows installer script currently returns the raw msiexec
exit code, so successful reboot-required codes are treated as failures. Update
the exit handling after Start-Process in the installer entry keyed by "85459eac"
to map exit codes 0, 3010, and 1641 to success, following the mapping used by
reference 22e48c46, then regenerate the maintained-app output.

In `@ee/maintained-apps/outputs/gotomeeting/windows.json`:
- Line 10: Update the Windows GoToMeeting install script referenced by
install_script_ref to map MSI exit codes 3010 and 1641 to exit code 0 before
returning any other exit code, matching the behavior in version 22e48c46.
🪄 Autofix

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 Plus

Run ID: 7607ae95-5a67-4f75-b1be-e4945288ef17

📥 Commits

Reviewing files that changed from the base of the PR and between e35e307 and 86bd90f.

📒 Files selected for processing (226)
  • ee/maintained-apps/outputs/1password/windows.json
  • ee/maintained-apps/outputs/7-zip/windows.json
  • ee/maintained-apps/outputs/8x8-work/darwin.json
  • ee/maintained-apps/outputs/8x8-work/windows.json
  • ee/maintained-apps/outputs/adobe-acrobat-pro/windows.json
  • ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json
  • ee/maintained-apps/outputs/adobe-dng-converter/darwin.json
  • ee/maintained-apps/outputs/advanced-installer/windows.json
  • ee/maintained-apps/outputs/advanced-renamer/darwin.json
  • ee/maintained-apps/outputs/aircall/windows.json
  • ee/maintained-apps/outputs/airparrot/windows.json
  • ee/maintained-apps/outputs/airtame/windows.json
  • ee/maintained-apps/outputs/alacritty/windows.json
  • ee/maintained-apps/outputs/alfaview/windows.json
  • ee/maintained-apps/outputs/allway-sync/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-11/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-17/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-21/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-24/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-25/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-26/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-8/windows.json
  • ee/maintained-apps/outputs/amazon-corretto-jre-8/windows.json
  • ee/maintained-apps/outputs/amazon-dcv-client/windows.json
  • ee/maintained-apps/outputs/amazon-dcv-server/windows.json
  • ee/maintained-apps/outputs/amazon-redshift-odbc-driver/windows.json
  • ee/maintained-apps/outputs/amazon-workspaces/windows.json
  • ee/maintained-apps/outputs/apidog/darwin.json
  • ee/maintained-apps/outputs/aptakube/windows.json
  • ee/maintained-apps/outputs/arduino-ide/windows.json
  • ee/maintained-apps/outputs/audiveris/windows.json
  • ee/maintained-apps/outputs/autopsy/windows.json
  • ee/maintained-apps/outputs/aws-cli/windows.json
  • ee/maintained-apps/outputs/aws-sam-cli/windows.json
  • ee/maintained-apps/outputs/aws-vpn-client/windows.json
  • ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json
  • ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json
  • ee/maintained-apps/outputs/azure-functions-core-tools/windows.json
  • ee/maintained-apps/outputs/betterzip/darwin.json
  • ee/maintained-apps/outputs/beyond-compare/darwin.json
  • ee/maintained-apps/outputs/beyond-compare/windows.json
  • ee/maintained-apps/outputs/bitwig-studio/windows.json
  • ee/maintained-apps/outputs/blender/windows.json
  • ee/maintained-apps/outputs/bluej/windows.json
  • ee/maintained-apps/outputs/box-drive/windows.json
  • ee/maintained-apps/outputs/box-tools/windows.json
  • ee/maintained-apps/outputs/browserstacklocal/windows.json
  • ee/maintained-apps/outputs/bruno/windows.json
  • ee/maintained-apps/outputs/calibre/windows.json
  • ee/maintained-apps/outputs/camtasia/windows.json
  • ee/maintained-apps/outputs/charles/darwin.json
  • ee/maintained-apps/outputs/chef-workstation/windows.json
  • ee/maintained-apps/outputs/cherry-keys/windows.json
  • ee/maintained-apps/outputs/chrome-remote-desktop/windows.json
  • ee/maintained-apps/outputs/cinc/windows.json
  • ee/maintained-apps/outputs/cisco-jabber/windows.json
  • ee/maintained-apps/outputs/cisco-webex-recorder-and-player/windows.json
  • ee/maintained-apps/outputs/claude/darwin.json
  • ee/maintained-apps/outputs/clickup/windows.json
  • ee/maintained-apps/outputs/clockassist/windows.json
  • ee/maintained-apps/outputs/clockify/windows.json
  • ee/maintained-apps/outputs/cloudflare-warp/windows.json
  • ee/maintained-apps/outputs/cmake-app/windows.json
  • ee/maintained-apps/outputs/codemeter-runtime-kit/windows.json
  • ee/maintained-apps/outputs/codexbar/darwin.json
  • ee/maintained-apps/outputs/colour-contrast-analyser/windows.json
  • ee/maintained-apps/outputs/crashplan/windows.json
  • ee/maintained-apps/outputs/creative-force-kelvin/windows.json
  • ee/maintained-apps/outputs/crestron-airmedia-peripherals/windows.json
  • ee/maintained-apps/outputs/crestron-airmedia/windows.json
  • ee/maintained-apps/outputs/cribl-edge/windows.json
  • ee/maintained-apps/outputs/crisisgo/windows.json
  • ee/maintained-apps/outputs/cryptomator/windows.json
  • ee/maintained-apps/outputs/cursor/windows.json
  • ee/maintained-apps/outputs/cyberduck-cli/windows.json
  • ee/maintained-apps/outputs/cyberduck/darwin.json
  • ee/maintained-apps/outputs/cyberduck/windows.json
  • ee/maintained-apps/outputs/db-browser-for-sqlite/windows.json
  • ee/maintained-apps/outputs/dbgate/darwin.json
  • ee/maintained-apps/outputs/delinea-connection-manager/windows.json
  • ee/maintained-apps/outputs/devolutions-launcher/windows.json
  • ee/maintained-apps/outputs/devolutions-workspace/windows.json
  • ee/maintained-apps/outputs/devpod/windows.json
  • ee/maintained-apps/outputs/discord/darwin.json
  • ee/maintained-apps/outputs/discord/windows.json
  • ee/maintained-apps/outputs/dngrep/windows.json
  • ee/maintained-apps/outputs/docker/windows.json
  • ee/maintained-apps/outputs/dot/darwin.json
  • ee/maintained-apps/outputs/downie/darwin.json
  • ee/maintained-apps/outputs/draftable-desktop/windows.json
  • ee/maintained-apps/outputs/drawio/windows.json
  • ee/maintained-apps/outputs/drofus/windows.json
  • ee/maintained-apps/outputs/dropbox/windows.json
  • ee/maintained-apps/outputs/druva-insync/windows.json
  • ee/maintained-apps/outputs/duo-desktop/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-11/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-17/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-21/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-8/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-11/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-17/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-21/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-8/windows.json
  • ee/maintained-apps/outputs/egnyte-webedit/windows.json
  • ee/maintained-apps/outputs/elevate-uc/windows.json
  • ee/maintained-apps/outputs/elgato-control-center/windows.json
  • ee/maintained-apps/outputs/elgato-stream-deck/windows.json
  • ee/maintained-apps/outputs/emclient/windows.json
  • ee/maintained-apps/outputs/endnote/windows.json
  • ee/maintained-apps/outputs/epic-games/windows.json
  • ee/maintained-apps/outputs/exifcleaner/darwin.json
  • ee/maintained-apps/outputs/filebeat/windows.json
  • ee/maintained-apps/outputs/firefox/darwin.json
  • ee/maintained-apps/outputs/firefox/windows.json
  • ee/maintained-apps/outputs/firefox@developer-edition/darwin.json
  • ee/maintained-apps/outputs/firefox@nightly/darwin.json
  • ee/maintained-apps/outputs/flexwhere/windows.json
  • ee/maintained-apps/outputs/fortify/windows.json
  • ee/maintained-apps/outputs/genesys-cloud/darwin.json
  • ee/maintained-apps/outputs/genesys-cloud/windows.json
  • ee/maintained-apps/outputs/geogebra-classic/windows.json
  • ee/maintained-apps/outputs/git-extensions/windows.json
  • ee/maintained-apps/outputs/github-desktop/windows.json
  • ee/maintained-apps/outputs/go/windows.json
  • ee/maintained-apps/outputs/google-ads-editor/windows.json
  • ee/maintained-apps/outputs/google-chrome/windows.json
  • ee/maintained-apps/outputs/google-credential-provider-for-windows/windows.json
  • ee/maintained-apps/outputs/gotomeeting/windows.json
  • ee/maintained-apps/outputs/grammarly-desktop/darwin.json
  • ee/maintained-apps/outputs/granola/windows.json
  • ee/maintained-apps/outputs/grepwin/windows.json
  • ee/maintained-apps/outputs/home-assistant/darwin.json
  • ee/maintained-apps/outputs/hwmonitor/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jdk-11/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jdk-17/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jdk-21/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jdk-8/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jre-11/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jre-17/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jre-21/windows.json
  • ee/maintained-apps/outputs/ibm-semeru-jre-8/windows.json
  • ee/maintained-apps/outputs/imageglass/windows.json
  • ee/maintained-apps/outputs/imhex/windows.json
  • ee/maintained-apps/outputs/inkscape/windows.json
  • ee/maintained-apps/outputs/ironpython/windows.json
  • ee/maintained-apps/outputs/jami/windows.json
  • ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json
  • ee/maintained-apps/outputs/jetbrains-toolbox/windows.json
  • ee/maintained-apps/outputs/keepassxc/windows.json
  • ee/maintained-apps/outputs/lapce/windows.json
  • ee/maintained-apps/outputs/lastpass/windows.json
  • ee/maintained-apps/outputs/libreoffice/windows.json
  • ee/maintained-apps/outputs/linear/darwin.json
  • ee/maintained-apps/outputs/linear/windows.json
  • ee/maintained-apps/outputs/lookaway/darwin.json
  • ee/maintained-apps/outputs/macwhisper/darwin.json
  • ee/maintained-apps/outputs/marked-app/darwin.json
  • ee/maintained-apps/outputs/mattermost/windows.json
  • ee/maintained-apps/outputs/microsoft-365-copilot/darwin.json
  • ee/maintained-apps/outputs/microsoft-edge/windows.json
  • ee/maintained-apps/outputs/microsoft-teams/darwin.json
  • ee/maintained-apps/outputs/microsoft-teams/windows.json
  • ee/maintained-apps/outputs/mixxx/windows.json
  • ee/maintained-apps/outputs/mongodb-compass/windows.json
  • ee/maintained-apps/outputs/mysqlworkbench/windows.json
  • ee/maintained-apps/outputs/naps2/windows.json
  • ee/maintained-apps/outputs/nessus-agent/windows.json
  • ee/maintained-apps/outputs/nextcloud/windows.json
  • ee/maintained-apps/outputs/nodejs/windows.json
  • ee/maintained-apps/outputs/notepadexe/darwin.json
  • ee/maintained-apps/outputs/notion/darwin.json
  • ee/maintained-apps/outputs/notion/windows.json
  • ee/maintained-apps/outputs/omnifocus/darwin.json
  • ee/maintained-apps/outputs/opencode-desktop/darwin.json
  • ee/maintained-apps/outputs/openvpn-connect/windows.json
  • ee/maintained-apps/outputs/origami-studio/darwin.json
  • ee/maintained-apps/outputs/p4v/windows.json
  • ee/maintained-apps/outputs/pale-moon/darwin.json
  • ee/maintained-apps/outputs/pdfsam-basic/windows.json
  • ee/maintained-apps/outputs/postman/darwin.json
  • ee/maintained-apps/outputs/powershell/windows.json
  • ee/maintained-apps/outputs/prisma-browser/windows.json
  • ee/maintained-apps/outputs/putty/windows.json
  • ee/maintained-apps/outputs/quip/darwin.json
  • ee/maintained-apps/outputs/rectangle-pro/darwin.json
  • ee/maintained-apps/outputs/reflector/windows.json
  • ee/maintained-apps/outputs/remote-desktop-manager/windows.json
  • ee/maintained-apps/outputs/rewritebar/darwin.json
  • ee/maintained-apps/outputs/rider/darwin.json
  • ee/maintained-apps/outputs/royal-tsx/windows.json
  • ee/maintained-apps/outputs/shapr3d/darwin.json
  • ee/maintained-apps/outputs/sharefile/windows.json
  • ee/maintained-apps/outputs/snagit/windows.json
  • ee/maintained-apps/outputs/sonicwall-netextender/windows.json
  • ee/maintained-apps/outputs/sourcetree/windows.json
  • ee/maintained-apps/outputs/spotify/windows.json
  • ee/maintained-apps/outputs/tailscale-app/darwin.json
  • ee/maintained-apps/outputs/tailscale/windows.json
  • ee/maintained-apps/outputs/textexpander/windows.json
  • ee/maintained-apps/outputs/tightvnc/windows.json
  • ee/maintained-apps/outputs/topaz-gigapixel-ai/windows.json
  • ee/maintained-apps/outputs/topaz-photo-ai/windows.json
  • ee/maintained-apps/outputs/tortoisegit/windows.json
  • ee/maintained-apps/outputs/tower/windows.json
  • ee/maintained-apps/outputs/transmission/windows.json
  • ee/maintained-apps/outputs/trezor-suite/darwin.json
  • ee/maintained-apps/outputs/twingate/windows.json
  • ee/maintained-apps/outputs/typeface/darwin.json
  • ee/maintained-apps/outputs/ultimaker-cura/windows.json
  • ee/maintained-apps/outputs/vlc/windows.json
  • ee/maintained-apps/outputs/wave/windows.json
  • ee/maintained-apps/outputs/weasis/darwin.json
  • ee/maintained-apps/outputs/weasis/windows.json
  • ee/maintained-apps/outputs/webex/windows.json
  • ee/maintained-apps/outputs/whatsapp/darwin.json
  • ee/maintained-apps/outputs/windirstat/windows.json
  • ee/maintained-apps/outputs/windows-app/darwin.json
  • ee/maintained-apps/outputs/winlogbeat/windows.json
  • ee/maintained-apps/outputs/wireshark/windows.json
  • ee/maintained-apps/outputs/workflowy/darwin.json
  • ee/maintained-apps/outputs/wrike/windows.json
  • ee/maintained-apps/outputs/yarn/windows.json
  • ee/maintained-apps/outputs/yubico-authenticator/windows.json
  • ee/maintained-apps/outputs/zoom-outlook-plugin/windows.json
  • ee/maintained-apps/outputs/zoom/windows.json
  • ee/maintained-apps/outputs/zulip/windows.json

],
"refs": {
"8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\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.

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Locate relevant files:"
git ls-files 'ee/maintained-apps/outputs/*/windows.json' | sed -n '1,80p'

echo
echo "Search for -Verb RunAs in maintained app windows JSONs:"
rg -n --hidden 'Verb RunAs|Start-Process msiexec|Start-Process .*msiexec' ee/maintained-apps/outputs/*/windows.json || true

echo
echo "Show python-3.13 installer context:"
if [ -f ee/maintained-apps/outputs/python-3.13/windows.json ]; then
  cat -n ee/maintained-apps/outputs/python-3.13/windows.json | sed -n '1,80p'
fi

echo
echo "Search for generator source/config references to maintained app outputs and -Verb RunAs:"
rg -n --hidden -S '\-Verb RunAs|maintained-apps|outputs/bitwig-studio/windows\.json|generator|windows.json' . --glob '!*node_modules*' --glob '!*build*' --glob '!*dist*' | sed -n '1,220p'

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Target installers install script snippets:"
for f in ee/maintained-apps/outputs/bitwig-studio/windows.json \
         ee/maintained-apps/outputs/blender/windows.json \
         ee/maintained-apps/outputs/bluej/windows.json \
         ee/maintained-apps/outputs/mattermost/windows.json \
         ce/maintained-apps/outputs/microsoft-edge/windows.json \
         ee/maintained-apps/outputs/mixxx/windows.json \
         ee/maintained-apps/outputs/mongodb-compass/windows.json \
         ee/maintained-apps/outputs/python-3.13/windows.json; do
  if [ -f "$f" ]; then
    echo "=== $f ==="
    sed -n '15,35p' "$f"
  fi
done

echo
echo "Find generator/source files mentioning Windows MSI start-process templates or RunAs:"
rg -n --hidden -S 'Start-Process .*msiexec|Verb RunAs|RunAs|ALLUSERS|fleet-install-software.log|windows.json|maintained-apps' \
  cmd internal scripts pkg platform server --glob '!**/*.png' --glob '!**/*.jpg' --glob '!**/*.svg' --glob '!vendor/**' | sed -n '1,220p'

echo
echo "Find Python-3.13 relevant snippet with context:"
sed -n '8,26p' ee/maintained-apps/outputs/python-3.13/windows.json

echo
echo "Focused script templates in repository:"
rg -n --hidden -S 'Start-Process msiexec|Start-Process -FilePath "\\$exeFilePath|NoNewWindow|Verb RunAs|maintained apps' . --glob '!ee/maintained-apps/outputs/**' --glob '!**/node_modules/**' | sed -n '1,240p'

Repository: fleetdm/fleet

Length of output: 40208


🌐 Web query:

PowerShell Start-Process Verb RunAs LocalSystem session-0 Cannot create elevated process under same session error

💡 Result:

The error you are encountering occurs because the "RunAs" verb in PowerShell's Start-Process cmdlet (which internally uses CreateProcessWithLogonW) is fundamentally incompatible with the LocalSystem account and Session 0 isolation [1][2]. When you attempt to use the "RunAs" verb, the system tries to perform an interactive logon to create the new process [1]. This requires a user's Logon SID, which the LocalSystem account does not possess [1]. Additionally, services run in Session 0, which is isolated from the interactive user desktop (e.g., Winsta0\Default) [3][4]. Because Session 0 is non-interactive, it cannot display UAC prompts or interact with the desktop session where a user is logged in [4]. Consequently, attempting to elevate a process from this context results in an "Access is denied" (error code 5) or similar failure [1][5]. To resolve this, you must avoid using the "RunAs" verb from a background service or LocalSystem process. Depending on your objective, consider these alternatives: 1. Avoid Elevation: If the task does not strictly require elevation, run it without the "RunAs" verb [2]. 2. Use Task Scheduler: If the process must run elevated, configure a Scheduled Task to run with the desired privileges [5]. You can then trigger this task from your script using the Schtasks.exe utility. 3. Architecture Redesign: If you need to interact with a user's desktop, you must create a helper process running in the user's session (e.g., Session 1+) [3][4]. This helper process is typically launched using Windows APIs like CreateProcessAsUser after obtaining the user's token via WTSQueryUserToken, and then that user-mode process can handle the elevated tasks or UI interactions [3][4][6]. The "RunAs" verb is designed for interactive users who are logged into a desktop session and can respond to UAC elevation prompts, not for non-interactive service accounts [1][7].

Citations:


Remove -Verb RunAs from the Fleet MSI install scripts.

Fleet installs run elevated as Local System, so -Verb RunAs requests interactive UAC elevation from session 0 and can fail before msiexec.exe starts. Since msiexec.exe already runs elevated here, remove the elevation switch.

Fix the source template(s) and regenerate the maintained-app outputs, including at least: bitwig-studio, blender, bluej, mattermost, microsoft-edge, mixxx, and mongodb-compass.

Proposed fix
-  -PassThru -Verb RunAs -Wait
+  -PassThru -Wait
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
📍 Affects 7 files
  • ee/maintained-apps/outputs/bitwig-studio/windows.json#L19-L19 (this comment)
  • ee/maintained-apps/outputs/blender/windows.json#L21-L21
  • ee/maintained-apps/outputs/bluej/windows.json#L19-L19
  • ee/maintained-apps/outputs/mattermost/windows.json#L21-L21
  • ee/maintained-apps/outputs/microsoft-edge/windows.json#L20-L20
  • ee/maintained-apps/outputs/mixxx/windows.json#L20-L20
  • ee/maintained-apps/outputs/mongodb-compass/windows.json#L20-L20
🤖 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/bitwig-studio/windows.json` at line 19, Remove the
-Verb RunAs elevation switch from the Fleet MSI installation command in the
source template, then regenerate the maintained-app outputs. Apply the generated
change to ee/maintained-apps/outputs/bitwig-studio/windows.json:19-19,
ee/maintained-apps/outputs/blender/windows.json:21-21,
ee/maintained-apps/outputs/bluej/windows.json:19-19,
ee/maintained-apps/outputs/mattermost/windows.json:21-21,
ee/maintained-apps/outputs/microsoft-edge/windows.json:20-20,
ee/maintained-apps/outputs/mixxx/windows.json:20-20, and
ee/maintained-apps/outputs/mongodb-compass/windows.json:20-20; preserve the
existing msiexec arguments and exit-code handling.

],
"refs": {
"29a9338f": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"85459eac": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Files matching bluej/windows.json:\n'
fd -a 'windows\.json$' . | sed 's#^\./##' | grep 'bluej' || true

printf '\nRelevant current file excerpt:\n'
if [ -f ee/maintained-apps/outputs/bluej/windows.json ]; then
  nl -ba ee/maintained-apps/outputs/bluej/windows.json | sed -n '1,80p'
fi

printf '\nSearch for msiexec success code mappings:\n'
rg -n "3010|1641|msiexec|ExitCode|ALLUSERS" ee/maintained-apps/outputs ee/maintained-apps -S || true

printf '\nList commits mentioning 22e48c46:\n'
git log --oneline --all --grep='22e48c46' | head -20 || true
git show --stat 22e48c46 2>/dev/null | head -40 || true

printf '\nSearch for 22e48c46 in tracked files:\n'
rg -n "22e48c46" . -S || true

Repository: fleetdm/fleet

Length of output: 323


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Current bluej/windows.json first 90 lines:\n'
sed -n '1,90p' ee/maintained-apps/outputs/bluej/windows.json | awk '{printf "%8d\t%s\n", NR, $0}'

printf '\nSearch for msiexec success code mappings in maintained-apps outputs/packages:\n'
rg -n "3010|1641|msiexec|msirestart|Start-Process|ExitCode" ee/maintained-apps ee -S || true

printf '\nCommit 22e48c46 stat/shortlog:\n'
git show --stat 22e48c46 2>/dev/null | sed -n '1,80p' || true

printf '\nTracked occurrences of 22e48c46:\n'
rg -n "22e48c46" . -S || true

printf '\nCurrent diff around bluej/windows.json:\n'
git diff -- ee/maintained-apps/outputs/bluej/windows.json | sed -n '1,160p' || true

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'BlueJ Windows JSON first 120 lines:\n'
awk 'NR<=120 {printf "%8d\t%s\n", NR, $0}' ee/maintained-apps/outputs/bluej/windows.json

printf '\nCommit 22e48c46 status:\n'
git show --format='%H %s' --no-stat 22e48c46 2>/dev/null || true

printf '\nmsiexec Windows install scripts (one-sentence code shape):\n'
python3 - <<'PY'
import json, pathlib, re
for p in pathlib.Path('ee/maintained-apps/outputs').glob('**/windows.json'):
    if 'bluej' in str(p):
        continue
    try:
        data=json.loads(p.read_text())
    except Exception:
        continue
    if not isinstance(data, dict):
        continue
    for k,v in data.items():
        if v is None or 'msiexec' not in str(v).lower():
            continue
        has_3010 = bool(re.search(r'(?:^|(?<=\W))(3010|0x12BA|0x12ba)(?=\W|$)', re.sub(rb'(^|/)[^"/\s][^"\s]*', b'', v, flags=re.S)))
        has_1641 = bool(re.search(r'(?:^|(?<=\W))(1641|0x661|0x0661)(?=\W|$)', re.sub(rb'(^|/)[^"/\s][^"\s]*', b'', v, flags=re.S)))
        success_exit0 = bool(re.search(r'((?:successCodes|ExpectedExitCodes)|\bSuccessCode\b)\s*[=\[]+.*\b(?:0|3010|1641).*\b(?=.*\b0\b)|\b(if|if)\b(?=.*(?<![!\s])3010|(?<![!\s])1641).*\{\s*Exit\s+0', v, flags=re.S|re.I))
        raw_exit = re.search(r'Exit\s+\$[A-Za-z0-9]+=1603|\bExit\s+\$installProcess\.ExitCode\b|\bExit\s+\$exitCode\b', v, flags=re.I)
        print(f'{p}:{k}: msiexec present, has_3010={has_3010}, has_1641={has_1641}, success_exit0={success_exit0}, raw_exit={bool(raw_exit)}')
PY

Repository: fleetdm/fleet

Length of output: 3005


Map MSI reboot-success codes to success.

This install runs msiexec.exe and exits $installProcess.ExitCode directly. MSI codes 3010 (ERROR_SUCCESS_REBOOT_REQUIRED) and 1641 (ERROR_SUCCESS_REBOOT_INITIATED) indicate a successful install with reboot handling, but Fleet can treat them as failure. Apply the 0, 3010, 1641 mapping used by the MSI install script reference 22e48c46, then regenerate this output.

🤖 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/bluej/windows.json` at line 19, The BlueJ Windows
installer script currently returns the raw msiexec exit code, so successful
reboot-required codes are treated as failures. Update the exit handling after
Start-Process in the installer entry keyed by "85459eac" to map exit codes 0,
3010, and 1641 to success, following the mapping used by reference 22e48c46,
then regenerate the maintained-app output.

},
"installer_url": "https://link.gotomeeting.com/latest-msi",
"install_script_ref": "36ce6af0",
"install_script_ref": "a6c7d24e",

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Map MSI reboot-success codes to exit code 0.

Line 19 still returns MSI exit codes 3010 and 1641 directly. Fleet will receive these codes as installation failures even though MSI reports success with reboot required or reboot initiated.

Use the same mapping as 22e48c46 before returning other exit codes.

Also applies to: 19-19

🤖 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/gotomeeting/windows.json` at line 10, Update the
Windows GoToMeeting install script referenced by install_script_ref to map MSI
exit codes 3010 and 1641 to exit code 0 before returning any other exit code,
matching the behavior in version 22e48c46.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Closing in favor of #50537.

@github-actions github-actions Bot closed this Aug 4, 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