Skip to content

Update Fleet-maintained apps - #50549

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

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

Conversation

@fleet-release

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

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • New Features

    • Updated Windows installer handling across many applications to correctly recognize successful MSI installations, preserve failure codes, and record installation logs reliably.
    • Improved macOS installation flows for selected apps, including safer app replacement and relaunch behavior.
  • Updates

    • Refreshed application versions, download links, version detection, and checksums across a broad range of Windows and macOS packages.
    • Updated several installer references and corrected logging argument handling for more dependable deployments.

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

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

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

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

--- /tmp/old.Z5EDPq	2026-08-05 00:28:52.732132675 +0000
+++ /tmp/new.vkypWh	2026-08-05 00:28:52.732132675 +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.Jb0ZWZ	2026-08-05 00:28:52.799132056 +0000
+++ /tmp/new.O9a1wh	2026-08-05 00:28:52.800132047 +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.ZeCATP	2026-08-05 00:28:52.892131196 +0000
+++ /tmp/new.EqaeDy	2026-08-05 00:28:52.892131196 +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.Oe1Rgx	2026-08-05 00:28:53.045129782 +0000
+++ /tmp/new.wfn22a	2026-08-05 00:28:53.046129772 +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.SAcwfl	2026-08-05 00:28:53.099129282 +0000
+++ /tmp/new.49vzYz	2026-08-05 00:28:53.099129282 +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.l8suJF	2026-08-05 00:28:53.211128247 +0000
+++ /tmp/new.urW6Xq	2026-08-05 00:28:53.211128247 +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.tS1TYd	2026-08-05 00:28:53.276127646 +0000
+++ /tmp/new.4Xy15A	2026-08-05 00:28:53.276127646 +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.wJsiuw	2026-08-05 00:28:53.402126481 +0000
+++ /tmp/new.mwjq3G	2026-08-05 00:28:53.402126481 +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.7CCqa1	2026-08-05 00:28:53.460125945 +0000
+++ /tmp/new.kVqbN3	2026-08-05 00:28:53.460125945 +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.s2MqSo	2026-08-05 00:28:53.518125408 +0000
+++ /tmp/new.Qd7V3X	2026-08-05 00:28:53.518125408 +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.2h5LQh	2026-08-05 00:28:53.572124909 +0000
+++ /tmp/new.flD5ek	2026-08-05 00:28:53.572124909 +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.vyemFP	2026-08-05 00:28:53.625124419 +0000
+++ /tmp/new.rtyZr8	2026-08-05 00:28:53.625124419 +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.Ne7dpu	2026-08-05 00:28:53.677123938 +0000
+++ /tmp/new.TOBtlp	2026-08-05 00:28:53.677123938 +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.NVS4zs	2026-08-05 00:28:53.749123273 +0000
+++ /tmp/new.QHvbNA	2026-08-05 00:28:53.749123273 +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.6BNC2w	2026-08-05 00:28:53.806122746 +0000
+++ /tmp/new.fEFgTh	2026-08-05 00:28:53.806122746 +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.HOMhr1	2026-08-05 00:28:53.862122228 +0000
+++ /tmp/new.IyIDXN	2026-08-05 00:28:53.862122228 +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.WZENRm	2026-08-05 00:28:53.916121729 +0000
+++ /tmp/new.s1y0HT	2026-08-05 00:28:53.916121729 +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.p3yOoz	2026-08-05 00:28:53.970121229 +0000
+++ /tmp/new.XN3CWG	2026-08-05 00:28:53.970121229 +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.VNPdYD	2026-08-05 00:28:54.039120591 +0000
+++ /tmp/new.SY4FJW	2026-08-05 00:28:54.039120591 +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.FQ5Wmb	2026-08-05 00:28:54.109119944 +0000
+++ /tmp/new.TpUukn	2026-08-05 00:28:54.109119944 +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.TFasbV	2026-08-05 00:28:54.167119408 +0000
+++ /tmp/new.E6a42b	2026-08-05 00:28:54.167119408 +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.lmSGIf	2026-08-05 00:28:54.236118770 +0000
+++ /tmp/new.kWwyYH	2026-08-05 00:28:54.236118770 +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.ckt6xl	2026-08-05 00:28:54.333117873 +0000
+++ /tmp/new.lvMiyT	2026-08-05 00:28:54.333117873 +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.bW2739	2026-08-05 00:28:54.403117226 +0000
+++ /tmp/new.FsYJPH	2026-08-05 00:28:54.404117217 +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/asana/darwin.json

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

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

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

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

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

--- /tmp/old.sqzJd4	2026-08-05 00:28:54.536115996 +0000
+++ /tmp/new.vWk9cQ	2026-08-05 00:28:54.537115987 +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.LKzSJI	2026-08-05 00:28:54.602115386 +0000
+++ /tmp/new.b1qMHA	2026-08-05 00:28:54.603115377 +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.1fDs0e	2026-08-05 00:28:54.650114943 +0000
+++ /tmp/new.Y74Hng	2026-08-05 00:28:54.650114943 +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.8DTWBR	2026-08-05 00:28:54.698114499 +0000
+++ /tmp/new.9wyuJN	2026-08-05 00:28:54.698114499 +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.umfmhw	2026-08-05 00:28:54.747114045 +0000
+++ /tmp/new.PxagcL	2026-08-05 00:28:54.747114045 +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.Rl307F	2026-08-05 00:28:54.800113556 +0000
+++ /tmp/new.uYp6LP	2026-08-05 00:28:54.801113546 +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.iyHeMQ	2026-08-05 00:28:54.851113084 +0000
+++ /tmp/new.TfL6S5	2026-08-05 00:28:54.851113084 +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.iK3NPv	2026-08-05 00:28:54.910112538 +0000
+++ /tmp/new.bZ3ryV	2026-08-05 00:28:54.910112538 +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.YVVt1V	2026-08-05 00:28:55.087110902 +0000
+++ /tmp/new.iik6sn	2026-08-05 00:28:55.087110902 +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.jrOzzu	2026-08-05 00:28:55.144110375 +0000
+++ /tmp/new.fArqNo	2026-08-05 00:28:55.144110375 +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.WPw57f	2026-08-05 00:28:55.205109811 +0000
+++ /tmp/new.TKzVqn	2026-08-05 00:28:55.205109811 +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.OCw7Ji	2026-08-05 00:28:55.261109293 +0000
+++ /tmp/new.JdBfzU	2026-08-05 00:28:55.261109293 +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.SoxNqk	2026-08-05 00:28:55.314108803 +0000
+++ /tmp/new.hsSqRR	2026-08-05 00:28:55.314108803 +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.AXM5jz	2026-08-05 00:28:55.366108323 +0000
+++ /tmp/new.JGu5Tj	2026-08-05 00:28:55.366108323 +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.2ol7dk	2026-08-05 00:28:55.418107842 +0000
+++ /tmp/new.IZyq1r	2026-08-05 00:28:55.418107842 +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.n6FNg4	2026-08-05 00:28:55.468107379 +0000
+++ /tmp/new.tuXi2h	2026-08-05 00:28:55.468107379 +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.qicIVf	2026-08-05 00:28:55.526106843 +0000
+++ /tmp/new.zlTEFV	2026-08-05 00:28:55.526106843 +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.f22x1g	2026-08-05 00:28:55.614106030 +0000
+++ /tmp/new.T8R8JC	2026-08-05 00:28:55.615106020 +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.cW2W3r	2026-08-05 00:28:55.680105420 +0000
+++ /tmp/new.uBCBq4	2026-08-05 00:28:55.680105420 +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.3nCPvQ	2026-08-05 00:28:55.737104892 +0000
+++ /tmp/new.Rz9ri5	2026-08-05 00:28:55.737104892 +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.X4FNYU	2026-08-05 00:28:55.809104227 +0000
+++ /tmp/new.7mrN9S	2026-08-05 00:28:55.809104227 +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.aahUDH	2026-08-05 00:28:55.863103727 +0000
+++ /tmp/new.64cMCS	2026-08-05 00:28:55.863103727 +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.tZZ5SD	2026-08-05 00:28:55.922103182 +0000
+++ /tmp/new.IVPK90	2026-08-05 00:28:55.922103182 +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.LNyyzb	2026-08-05 00:28:56.009102378 +0000
+++ /tmp/new.X9XdiH	2026-08-05 00:28:56.009102378 +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.849KWU	2026-08-05 00:28:56.068101832 +0000
+++ /tmp/new.miiCcl	2026-08-05 00:28:56.068101832 +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.cSnioW	2026-08-05 00:28:56.121101342 +0000
+++ /tmp/new.enDEOe	2026-08-05 00:28:56.121101342 +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.cp2kGB	2026-08-05 00:28:56.175100843 +0000
+++ /tmp/new.f8pcyV	2026-08-05 00:28:56.175100843 +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.UlnQ0I	2026-08-05 00:28:56.224100390 +0000
+++ /tmp/new.r2nEcc	2026-08-05 00:28:56.224100390 +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.dLLZSf	2026-08-05 00:28:56.370099040 +0000
+++ /tmp/new.mJjy3W	2026-08-05 00:28:56.370099040 +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.3tND4j	2026-08-05 00:28:56.421098569 +0000
+++ /tmp/new.BSSAL1	2026-08-05 00:28:56.421098569 +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.1E1NoO	2026-08-05 00:28:56.468098134 +0000
+++ /tmp/new.TqG7l3	2026-08-05 00:28:56.468098134 +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.GKSOND	2026-08-05 00:28:56.526097598 +0000
+++ /tmp/new.J4CD18	2026-08-05 00:28:56.526097598 +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.eGROcy	2026-08-05 00:28:56.584097061 +0000
+++ /tmp/new.BfEFGd	2026-08-05 00:28:56.584097061 +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.ska51x	2026-08-05 00:28:56.636096581 +0000
+++ /tmp/new.699qm2	2026-08-05 00:28:56.637096571 +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.WqfHtn	2026-08-05 00:28:56.696096026 +0000
+++ /tmp/new.dDlu4r	2026-08-05 00:28:56.696096026 +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.AorE7y	2026-08-05 00:28:56.758095453 +0000
+++ /tmp/new.vvQff4	2026-08-05 00:28:56.758095453 +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.BcMz0S	2026-08-05 00:28:56.851094593 +0000
+++ /tmp/new.alvY22	2026-08-05 00:28:56.851094593 +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.GCni8q	2026-08-05 00:28:56.949093687 +0000
+++ /tmp/new.vNzEPl	2026-08-05 00:28:56.949093687 +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.vmdUfu	2026-08-05 00:28:57.022093012 +0000
+++ /tmp/new.RaV62U	2026-08-05 00:28:57.022093012 +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.Yhjctz	2026-08-05 00:28:57.109092207 +0000
+++ /tmp/new.P5k4ja	2026-08-05 00:28:57.109092207 +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.sXKVQB	2026-08-05 00:28:57.164091699 +0000
+++ /tmp/new.Opmj0w	2026-08-05 00:28:57.164091699 +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.0mbh1z	2026-08-05 00:28:57.220091181 +0000
+++ /tmp/new.OFPH6M	2026-08-05 00:28:57.221091172 +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.nkbcIs	2026-08-05 00:28:57.280090626 +0000
+++ /tmp/new.kCoiyC	2026-08-05 00:28:57.280090626 +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/digiseal-reader/windows.json

=== Install Script (no changes) ===
=== 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.myCKaI	2026-08-05 00:28:57.462088944 +0000
+++ /tmp/new.h3S0qR	2026-08-05 00:28:57.462088944 +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.EsWaMC	2026-08-05 00:28:57.629087400 +0000
+++ /tmp/new.04EKQn	2026-08-05 00:28:57.629087400 +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.vtD4I2	2026-08-05 00:28:57.722086540 +0000
+++ /tmp/new.kr849D	2026-08-05 00:28:57.723086530 +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.98rRQM	2026-08-05 00:28:57.774086059 +0000
+++ /tmp/new.Q7lJsF	2026-08-05 00:28:57.774086059 +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.cY1Co4	2026-08-05 00:28:57.837085477 +0000
+++ /tmp/new.S8Go5h	2026-08-05 00:28:57.837085477 +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/darwin.json

=== Install // bac43c9b -> 96c63e5c ===

--- /tmp/old.SXur7j	2026-08-05 00:28:57.889084996 +0000
+++ /tmp/new.RnEdcr	2026-08-05 00:28:57.889084996 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'com.duosecurity.duo-device-health'
-sudo installer -pkg "$TMPDIR/DuoDesktop-7.19.0.0.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/DuoDesktop-7.20.0.0.pkg" -target / || exit $?
 relaunch_application 'com.duosecurity.duo-device-health'

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

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

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

--- /tmp/old.oAKJOV	2026-08-05 00:28:57.956084376 +0000
+++ /tmp/new.bq80yG	2026-08-05 00:28:57.956084376 +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.qbJzkK	2026-08-05 00:28:58.006083914 +0000
+++ /tmp/new.tbqAlk	2026-08-05 00:28:58.006083914 +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.MaGyxE	2026-08-05 00:28:58.056083452 +0000
+++ /tmp/new.DG7qxJ	2026-08-05 00:28:58.056083452 +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.5nA9l4	2026-08-05 00:28:58.106082989 +0000
+++ /tmp/new.e4iOKz	2026-08-05 00:28:58.106082989 +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.YCGw6M	2026-08-05 00:28:58.154082546 +0000
+++ /tmp/new.wm00ao	2026-08-05 00:28:58.154082546 +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.2LXqnG	2026-08-05 00:28:58.204082084 +0000
+++ /tmp/new.eTFur9	2026-08-05 00:28:58.204082084 +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.R1QjK0	2026-08-05 00:28:58.253081630 +0000
+++ /tmp/new.NeaL12	2026-08-05 00:28:58.253081630 +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.yrnd2y	2026-08-05 00:28:58.303081168 +0000
+++ /tmp/new.TBNVuA	2026-08-05 00:28:58.303081168 +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.bBRfQ7	2026-08-05 00:28:58.351080724 +0000
+++ /tmp/new.lgYH1T	2026-08-05 00:28:58.352080715 +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.D8zDGu	2026-08-05 00:28:58.410080179 +0000
+++ /tmp/new.duOxTX	2026-08-05 00:28:58.410080179 +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.m8grJQ	2026-08-05 00:28:58.469079633 +0000
+++ /tmp/new.i0b7wx	2026-08-05 00:28:58.469079633 +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.zEGVbL	2026-08-05 00:28:58.542078959 +0000
+++ /tmp/new.GyC6H7	2026-08-05 00:28:58.542078959 +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.S5dyDx	2026-08-05 00:28:58.594078478 +0000
+++ /tmp/new.73Saio	2026-08-05 00:28:58.594078478 +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.B3VSMB	2026-08-05 00:28:58.643078025 +0000
+++ /tmp/new.syZtjr	2026-08-05 00:28:58.643078025 +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.oaEZ99	2026-08-05 00:28:58.701077488 +0000
+++ /tmp/new.PD8HUt	2026-08-05 00:28:58.701077488 +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.dUgWEu	2026-08-05 00:28:58.757076971 +0000
+++ /tmp/new.HwUrMK	2026-08-05 00:28:58.757076971 +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.uOpDYH	2026-08-05 00:28:58.843076176 +0000
+++ /tmp/new.iS1Yd2	2026-08-05 00:28:58.843076176 +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.LVLS66	2026-08-05 00:28:59.043074326 +0000
+++ /tmp/new.DBCh4p	2026-08-05 00:28:59.043074326 +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.02G0jU	2026-08-05 00:28:59.102073781 +0000
+++ /tmp/new.n9gvks	2026-08-05 00:28:59.102073781 +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.gP6ri0	2026-08-05 00:28:59.201072865 +0000
+++ /tmp/new.pxEuAy	2026-08-05 00:28:59.201072865 +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.IvVVTN	2026-08-05 00:28:59.253072382 +0000
+++ /tmp/new.CD7s9z	2026-08-05 00:28:59.253072382 +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.81NS8L	2026-08-05 00:28:59.306071887 +0000
+++ /tmp/new.nMnHrR	2026-08-05 00:28:59.306071887 +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.zoIsag	2026-08-05 00:28:59.365071336 +0000
+++ /tmp/new.0fh4UD	2026-08-05 00:28:59.365071336 +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.gfqrZM	2026-08-05 00:28:59.424070785 +0000
+++ /tmp/new.VnaPjl	2026-08-05 00:28:59.425070775 +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.5YPBq3	2026-08-05 00:28:59.475070308 +0000
+++ /tmp/new.7LWE7K	2026-08-05 00:28:59.475070308 +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.TKuNdu	2026-08-05 00:28:59.525069841 +0000
+++ /tmp/new.IvYT1h	2026-08-05 00:28:59.525069841 +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.kLOrci	2026-08-05 00:28:59.585069281 +0000
+++ /tmp/new.Gu4pIL	2026-08-05 00:28:59.585069281 +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.B56bwQ	2026-08-05 00:28:59.667068515 +0000
+++ /tmp/new.nnaSOZ	2026-08-05 00:28:59.667068515 +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.dBWQ5B	2026-08-05 00:28:59.798067291 +0000
+++ /tmp/new.20ml2G	2026-08-05 00:28:59.798067291 +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.UHEUxc	2026-08-05 00:28:59.924066115 +0000
+++ /tmp/new.owYU91	2026-08-05 00:28:59.924066115 +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.EG4YVB	2026-08-05 00:28:59.974065647 +0000
+++ /tmp/new.dDiXsv	2026-08-05 00:28:59.974065647 +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.LvxICH	2026-08-05 00:29:00.025065171 +0000
+++ /tmp/new.4JTqJ6	2026-08-05 00:29:00.025065171 +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.NnYmY3	2026-08-05 00:29:00.075064704 +0000
+++ /tmp/new.BU1yvp	2026-08-05 00:29:00.075064704 +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.MiTpRY	2026-08-05 00:29:00.128064209 +0000
+++ /tmp/new.5M9Ve4	2026-08-05 00:29:00.128064209 +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.SU7hHB	2026-08-05 00:29:00.177063752 +0000
+++ /tmp/new.5s0Y9z	2026-08-05 00:29:00.177063752 +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.MOXxGJ	2026-08-05 00:29:00.228063275 +0000
+++ /tmp/new.dW1LoK	2026-08-05 00:29:00.228063275 +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.nLx4mR	2026-08-05 00:29:00.279062799 +0000
+++ /tmp/new.LQWotm	2026-08-05 00:29:00.279062799 +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.bWmuvQ	2026-08-05 00:29:00.329062332 +0000
+++ /tmp/new.QerDKT	2026-08-05 00:29:00.329062332 +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.PsvtdO	2026-08-05 00:29:00.403061641 +0000
+++ /tmp/new.3WzScI	2026-08-05 00:29:00.403061641 +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.9H03is	2026-08-05 00:29:00.481060912 +0000
+++ /tmp/new.pN0a9B	2026-08-05 00:29:00.481060912 +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.j5aKe4	2026-08-05 00:29:00.536060399 +0000
+++ /tmp/new.Z3TF1h	2026-08-05 00:29:00.536060399 +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.6jWMAd	2026-08-05 00:29:00.611059698 +0000
+++ /tmp/new.sIJ8AC	2026-08-05 00:29:00.611059698 +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.TkifoW	2026-08-05 00:29:00.775058166 +0000
+++ /tmp/new.tKlPvy	2026-08-05 00:29:00.775058166 +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.8UgzpE	2026-08-05 00:29:00.849057475 +0000
+++ /tmp/new.ZTsiLc	2026-08-05 00:29:00.849057475 +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.IuFTCa	2026-08-05 00:29:00.909056915 +0000
+++ /tmp/new.MRjN1S	2026-08-05 00:29:00.909056915 +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.Q2Ar9m	2026-08-05 00:29:00.962056420 +0000
+++ /tmp/new.nV4CMz	2026-08-05 00:29:00.962056420 +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/loom/darwin.json

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

ee/maintained-apps/outputs/loom/windows.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.nYbTGr	2026-08-05 00:29:01.286053394 +0000
+++ /tmp/new.NYs9Zp	2026-08-05 00:29:01.286053394 +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.ICsfNt	2026-08-05 00:29:01.339052899 +0000
+++ /tmp/new.2Q3F2m	2026-08-05 00:29:01.339052899 +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.NwJS6P	2026-08-05 00:29:01.389052432 +0000
+++ /tmp/new.HjzzlJ	2026-08-05 00:29:01.389052432 +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/miro/windows.json

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

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

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

--- /tmp/old.cQoFZn	2026-08-05 00:29:01.586050591 +0000
+++ /tmp/new.ms1eXY	2026-08-05 00:29:01.586050591 +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.ZYU2B1	2026-08-05 00:29:01.647050022 +0000
+++ /tmp/new.AgcxxG	2026-08-05 00:29:01.647050022 +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.2v25rM	2026-08-05 00:29:01.728049265 +0000
+++ /tmp/new.Nvv4t3	2026-08-05 00:29:01.728049265 +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.mxv2Oq	2026-08-05 00:29:01.785048733 +0000
+++ /tmp/new.N0glwS	2026-08-05 00:29:01.785048733 +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.zWALNN	2026-08-05 00:29:01.839048229 +0000
+++ /tmp/new.6vd2rd	2026-08-05 00:29:01.839048229 +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.nDmYjg	2026-08-05 00:29:01.893047724 +0000
+++ /tmp/new.HYAVqC	2026-08-05 00:29:01.893047724 +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.r8DbbM	2026-08-05 00:29:01.944047248 +0000
+++ /tmp/new.6b00H9	2026-08-05 00:29:01.944047248 +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/nudge/darwin.json

=== Install // ac39d8ab -> aa291dac ===

--- /tmp/old.xn4Cus	2026-08-05 00:29:02.110045698 +0000
+++ /tmp/new.EQ8q2l	2026-08-05 00:29:02.110045698 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'com.github.macadmins.Nudge'
-sudo installer -pkg "$TMPDIR/Nudge-2.1.2.81856.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/Nudge-2.1.3.81860.pkg" -target / || exit $?
 relaunch_application 'com.github.macadmins.Nudge'

=== 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.mViyVC	2026-08-05 00:29:02.264044259 +0000
+++ /tmp/new.o1qY2U	2026-08-05 00:29:02.264044259 +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.cMJxVk	2026-08-05 00:29:02.372043251 +0000
+++ /tmp/new.HDK2FU	2026-08-05 00:29:02.372043251 +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.Ci5l9t	2026-08-05 00:29:02.474042298 +0000
+++ /tmp/new.1McRDz	2026-08-05 00:29:02.474042298 +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/plex-media-server/darwin.json

=== Install Script (no changes) ===
=== 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.R3bgw8	2026-08-05 00:29:02.606041065 +0000
+++ /tmp/new.RSdDxi	2026-08-05 00:29:02.606041065 +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.yNP4e7	2026-08-05 00:29:02.658040579 +0000
+++ /tmp/new.zPJCG2	2026-08-05 00:29:02.659040570 +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.MAOrXX	2026-08-05 00:29:02.741039804 +0000
+++ /tmp/new.v3VV77	2026-08-05 00:29:02.741039804 +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.VzDQtr	2026-08-05 00:29:02.894038375 +0000
+++ /tmp/new.8MTWCR	2026-08-05 00:29:02.894038375 +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.o0d27Q	2026-08-05 00:29:02.952037833 +0000
+++ /tmp/new.0IAtVT	2026-08-05 00:29:02.952037833 +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/reqable/windows.json

=== Install Script (no changes) ===
=== 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.K2kCVw	2026-08-05 00:29:03.124036227 +0000
+++ /tmp/new.laqbPk	2026-08-05 00:29:03.124036227 +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/santa/darwin.json

=== Install // e01d4393 -> a542a793 ===

--- /tmp/old.byfRu0	2026-08-05 00:29:03.180035704 +0000
+++ /tmp/new.znHDE8	2026-08-05 00:29:03.180035704 +0000
@@ -101,5 +101,5 @@
 hdiutil detach "$MOUNT_POINT" || true
 # install pkg files
 quit_and_track_application 'com.northpolesec.santa'
-sudo installer -pkg "$TMPDIR/santa-2026.6.pkg" -target / || exit $?
+sudo installer -pkg "$TMPDIR/santa-2026.7.pkg" -target / || exit $?
 relaunch_application 'com.northpolesec.santa'

=== 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.kcPBJZ	2026-08-05 00:29:03.297034611 +0000
+++ /tmp/new.l87jIM	2026-08-05 00:29:03.297034611 +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.uNA76a	2026-08-05 00:29:03.381033827 +0000
+++ /tmp/new.UrWi2d	2026-08-05 00:29:03.382033817 +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.BUMRO4	2026-08-05 00:29:03.436033313 +0000
+++ /tmp/new.Un7aK1	2026-08-05 00:29:03.436033313 +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.gyL598	2026-08-05 00:29:03.522032509 +0000
+++ /tmp/new.7d2ANV	2026-08-05 00:29:03.522032509 +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/superwhisper/darwin.json

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

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

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

--- /tmp/old.FO6HAi	2026-08-05 00:29:03.661031211 +0000
+++ /tmp/new.0U9B5a	2026-08-05 00:29:03.661031211 +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.bDjAkW	2026-08-05 00:29:03.717030688 +0000
+++ /tmp/new.UUrViJ	2026-08-05 00:29:03.717030688 +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.utLaL8	2026-08-05 00:29:03.781030090 +0000
+++ /tmp/new.3B0joJ	2026-08-05 00:29:03.781030090 +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/thunderbird/darwin.json

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

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

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

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

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

--- /tmp/old.v0ICAq	2026-08-05 00:29:03.915028839 +0000
+++ /tmp/new.nTFKpN	2026-08-05 00:29:03.915028839 +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/todoist-app/darwin.json

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

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

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

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

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

--- /tmp/old.gsmmkC	2026-08-05 00:29:04.090027205 +0000
+++ /tmp/new.87YIQe	2026-08-05 00:29:04.090027205 +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.pQnsIi	2026-08-05 00:29:04.172026438 +0000
+++ /tmp/new.h63K9p	2026-08-05 00:29:04.172026438 +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.8Cvcbl	2026-08-05 00:29:04.255025663 +0000
+++ /tmp/new.4ryEsj	2026-08-05 00:29:04.255025663 +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.gmveqW	2026-08-05 00:29:04.317025084 +0000
+++ /tmp/new.tyFZ0O	2026-08-05 00:29:04.318025075 +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.U3lK5d	2026-08-05 00:29:04.382024477 +0000
+++ /tmp/new.8xyWgy	2026-08-05 00:29:04.382024477 +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.os8fxa	2026-08-05 00:29:04.502023356 +0000
+++ /tmp/new.p9xlTU	2026-08-05 00:29:04.502023356 +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.cqfHfu	2026-08-05 00:29:04.621022245 +0000
+++ /tmp/new.GhxAJu	2026-08-05 00:29:04.621022245 +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.uMYARP	2026-08-05 00:29:04.717021348 +0000
+++ /tmp/new.7MV4kS	2026-08-05 00:29:04.717021348 +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.aa5mlm	2026-08-05 00:29:04.798020592 +0000
+++ /tmp/new.COlCG8	2026-08-05 00:29:04.798020592 +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.ZUG0Ld	2026-08-05 00:29:04.852020087 +0000
+++ /tmp/new.EDCCtq	2026-08-05 00:29:04.853020078 +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.AA4HxT	2026-08-05 00:29:04.919019462 +0000
+++ /tmp/new.1lMzWF	2026-08-05 00:29:04.919019462 +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.6o7WBv	2026-08-05 00:29:04.979018901 +0000
+++ /tmp/new.spiiyT	2026-08-05 00:29:04.980018892 +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.hlpvXo	2026-08-05 00:29:05.067018079 +0000
+++ /tmp/new.2bL4QZ	2026-08-05 00:29:05.067018079 +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.jn1tpn	2026-08-05 00:29:05.122017566 +0000
+++ /tmp/new.s3bYYO	2026-08-05 00:29:05.122017566 +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.JpIWvX	2026-08-05 00:29:05.181017015 +0000
+++ /tmp/new.SgqzVv	2026-08-05 00:29:05.182017005 +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.oPYo9h	2026-08-05 00:29:05.247016398 +0000
+++ /tmp/new.PbVect	2026-08-05 00:29:05.247016398 +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/wispr-flow/darwin.json

=== Install Script (no changes) ===
=== 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.xXD2Kq	2026-08-05 00:29:05.408014894 +0000
+++ /tmp/new.kezSTS	2026-08-05 00:29:05.408014894 +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/xnconvert/windows.json

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

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

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

--- /tmp/old.OhdCWD	2026-08-05 00:29:05.528013774 +0000
+++ /tmp/new.o3JJxE	2026-08-05 00:29:05.528013774 +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.T8XIYG	2026-08-05 00:29:05.595013148 +0000
+++ /tmp/new.ibmjSK	2026-08-05 00:29:05.595013148 +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.v70UWa	2026-08-05 00:29:05.650012634 +0000
+++ /tmp/new.2it6z9	2026-08-05 00:29:05.650012634 +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.CErXun	2026-08-05 00:29:05.710012074 +0000
+++ /tmp/new.k2uA7D	2026-08-05 00:29:05.710012074 +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.nyAhNq	2026-08-05 00:29:05.784011382 +0000
+++ /tmp/new.s6WwbD	2026-08-05 00:29:05.784011382 +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 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updated maintained-app output manifests with new application versions, download URLs, patch queries, checksums, and installer package names. Updated many Windows installer references and standardized MSI handling for exit codes 0, 3010, and 1641, with corrected log-path quoting and preserved failure handling. Updated several macOS installation scripts for new package versions.

Possibly related PRs

  • fleetdm/fleet#50407 — Introduces shared Windows MSI success-code and log-path handling used by these updates.
  • fleetdm/fleet#50499 — Directly overlaps on maintained-app Windows manifests and installer scripts.
  • fleetdm/fleet#50537 — Updates the same maintained-app metadata and installer scripts.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description states the general purpose but omits the required issue reference, checklist responses, and testing details. Complete the required template sections, including the issue reference, applicable checklist items, and testing results.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the broad update to 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-2608050020

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

🤖 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/1password/windows.json`:
- Line 10: Update the 1Password Windows uninstall flow referenced by
install_script_ref so process exit codes 3010 and 1641, alongside 0, are treated
as successful uninstall outcomes. Keep the existing failure behavior for all
other exit codes, changing the uninstall script or its consumer rather than the
install mapping.

In `@ee/maintained-apps/outputs/bluej/windows.json`:
- Line 10: Update the install script referenced by install_script_ref for BlueJ
to translate MSI exit codes 3010 and 1641 to exit code 0 before propagating the
installer result; preserve the existing behavior for all other exit codes.

In `@ee/maintained-apps/outputs/cinc/windows.json`:
- Line 20: Update the exit-code validation in the PowerShell uninstall script
for upgrade code {9870C512-DF2C-43D9-8C28-7ACD60ABBE27} to use the shared
maintained-app success-code check, accepting 0, 3010, and 1641 instead of only
0. Preserve the existing failure logging and exit behavior for all other codes.

In `@ee/maintained-apps/outputs/gotomeeting/windows.json`:
- Line 19: Update the GoToMeeting MSI script identified by a6c7d24e to normalize
successful reboot-required exit codes before exiting: treat 3010 and 1641 as
success, matching the handling used by 22e48c46, while preserving failure codes
and the existing logging and installation flow.

In `@ee/maintained-apps/outputs/rider/darwin.json`:
- Around line 9-10: Update the Rider darwin manifest to avoid serving the
aarch64 DMG to Intel macOS hosts: either scope this record explicitly to Apple
Silicon or add a separate Intel record using the corresponding Intel DMG URL,
while preserving the existing installer metadata.

In `@ee/maintained-apps/outputs/sourcetree/windows.json`:
- Line 21: Update the PowerShell script identified by the e23ea804 entry to map
MSI exit codes 0, 3010, and 1641 to process exit code 0 instead of returning
$installProcess.ExitCode unchanged. Preserve the existing installer arguments,
including ACCEPTEULA=1, logging, and error handling, using the shared 22e48c46
script’s behavior as the reference.

In `@ee/maintained-apps/outputs/vlc/windows.json`:
- Line 10: Update the VLC uninstaller configuration referenced by
install_script_ref, including the applicable 20-20 entry, so msiexec /x exit
codes 0, 3010, and 1641 are all normalized to exit code 0 instead of treating
reboot-success codes as failures.
🪄 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: f96a294d-0ec9-4c5e-813c-f677cd18b714

📥 Commits

Reviewing files that changed from the base of the PR and between 85692f8 and b8d7bae.

📒 Files selected for processing (244)
  • 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/asana/darwin.json
  • ee/maintained-apps/outputs/asana/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/digiseal-reader/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/darwin.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/loom/darwin.json
  • ee/maintained-apps/outputs/loom/windows.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/miro/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/nudge/darwin.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/plex-media-server/darwin.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/reqable/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/santa/darwin.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/superwhisper/darwin.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/thunderbird/darwin.json
  • ee/maintained-apps/outputs/thunderbird/windows.json
  • ee/maintained-apps/outputs/tightvnc/windows.json
  • ee/maintained-apps/outputs/todoist-app/darwin.json
  • ee/maintained-apps/outputs/todoist-app/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/wispr-flow/darwin.json
  • ee/maintained-apps/outputs/workflowy/darwin.json
  • ee/maintained-apps/outputs/wrike/windows.json
  • ee/maintained-apps/outputs/xnconvert/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

},
"installer_url": "https://c.1password.com/dist/1P/win8/1PasswordSetup-8.12.30.msi",
"install_script_ref": "8959087b",
"install_script_ref": "22e48c46",

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 | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C 12 \
  '22e48c46|c70e0a85|3010|1641|ExitCode|uninstall' \
  ee/maintained-apps/outputs/1password/windows.json ee/server \
  --glob '*.json' --glob '*.go'

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate maintained-app uninstall-result consumers and their exit-code handling.
rg -n -C 8 \
  'software_install_[uninstall|result]|uninstall.*result|SoftwareInstaller[Un|S]|ExitCode|msireturncode|msiexec|SuccessSoftwareInstaller|SoftwareInstallerSoftware' \
  ee/server . --glob '*.go' --glob '!**/vendor/**' --glob '!**/third_party/**' | \
  rg -n -C 4 'SuccessSoftware|SoftwareInstallerSoftware|Uninstall|SoftwareInstall|msiexec|ExitCode' | head -n 300 || true

echo '--- candidate files ---'
git ls-files '*.go' | rg 'mdm/maintainedapps|software_install|software_installer|uninstall' | sed -n '1,200p'

Repository: fleetdm/fleet

Length of output: 27880


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Find exact uninstall-result processing references and focused file sections.
rg -n 'software_install_[uninstall|result]|SuccessSoftwareInstaller|SoftwareInstallerSoftware|msireturncode|msiexec|ExitCode' \
  server ee --glob '*.go' --glob '!**/vendor/**' --glob '!**/third_party/**' | sed -n '1,260p'

echo '--- installed files candidates ---'
git ls-files server ee | rg 'uninstall|install.*result|software|maintained|mdm' | sed -n '1,240p'

Repository: fleetdm/fleet

Length of output: 40394


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- orbit software install result structs ---'
rg -n -C 10 'type .*SoftwareInstallResult|HostSoftwareInstallResultPayload|SoftwareInstallResultPayload|InstallScriptExitCode|PostInstall' \
  server/fleet/server/orbit.go server/service/orbit.go server/service/orbit_test.go --glob '*.go' | sed -n '1,240p'

echo '--- focused sections ---'
rg -n 'SoftwareInstallResult|HostSoftwareInstallResultPayload|software_install_[uninstall|result]|msireturncode|SoftwareInstall' \
  server --glob '*.go' --glob '!**/tests/**' --glob '!**/test/**' | sed -n '1,220p'

Repository: fleetdm/fleet

Length of output: 7317


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- orbit software install result saving ---'
sed -n '1816,1935p' server/service/orbit.go

echo '--- fleet payload and status definitions ---'
rg -n -C 8 'type HostSoftwareInstallResultPayload|type SoftwareInstall.*|SoftwareInstallSuccess|SoftwareInstallFailed|SoftwareInstallPending|InstallScriptExitCode' \
  server/fleet/server*.go server/fleet/*.go --glob '*.go' | sed -n '1,260p'

echo '--- save implementation references ---'
rg -n -C 12 'SaveHostSoftwareInstallResult|SoftwareInstallSuccess|SoftwareInstallFailed|SoftwareInstall.*Status' \
  server/datastore mysql server/service --glob '*.go' | sed -n '1,320p'

Repository: fleetdm/fleet

Length of output: 24737


Align the 1Password uninstall with the install exit-code policy.

ee/maintained-apps/outputs/1password/windows.json:19 maps msiexec success codes 0, 3010, and 1641 for install. The uninstall reference c70e0a85 only writes Exit 0 when $process.ExitCode -eq 0, so reboot-successful uninstalls exit nonzero. Update the uninstall script or its consumer to treat 3010 and 1641 as uninstall success.

🤖 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/1password/windows.json` at line 10, Update the
1Password Windows uninstall flow referenced by install_script_ref so process
exit codes 3010 and 1641, alongside 0, are treated as successful uninstall
outcomes. Keep the existing failure behavior for all other exit codes, changing
the uninstall script or its consumer rather than the install mapping.

},
"installer_url": "https://github.com/k-pet-group/BlueJ-Greenfoot/releases/download/BLUEJ-RELEASE-6.0.0/BlueJ-windows-6.0.0.msi",
"install_script_ref": "29a9338f",
"install_script_ref": "85459eac",

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

echo "== files =="
git ls-files | rg '(^|/)bluej/windows\.json$|maintained-apps/outputs/.*windows\.json$' | head -100

echo "== bluej windows json =="
if [ -f ee/maintained-apps/outputs/bluej/windows.json ]; then
  cat -n ee/maintained-apps/outputs/bluej/windows.json
fi

echo "== diff stat/name =="
git diff --stat || true
git diff -- ee/maintained-apps/outputs/bluej/windows.json || true

echo "== references to ExitCode mapping and install script refs =="
rg -n "3010|1641|ExitCode|install_script_ref|ALLUSERS|msiexec|Fleet" . --glob '!**/.git/**' | head -200

Repository: fleetdm/fleet

Length of output: 5565


🏁 Script executed:

#!/bin/bash
set -u

echo "== bluej windows json =="
cat -n ee/maintained-apps/outputs/bluej/windows.json

echo "== bluej referenced install script ref occurrences =="
rg -n --hidden --glob '!**/.git/**' '85459eac|Install-BlueJ|Exit $installProcess\.ExitCode|3010|1641|ExitCode' . | head -300

echo "== json install_script_ref refs with 3010/1641 mappings nearby =="
python3 - <<'PY'
import json, pathlib, re
root=pathlib.Path('ee/maintained-apps/outputs')
for p in sorted(root.glob('*')):
    if not p.is_dir():
        continue
    j=p/'windows.json'
    if not j.exists():
        continue
    data=json.loads(j.read_text())
    print(f"\n-- {p} --")
    print('install_script_ref=', data.get('install_script_ref'))
    for sec in ['files','install_script_ref']:
        print(sec, data.get(sec))
PY

echo "== search Fleet exit handling in codebase =="
rg -n --hidden --glob '!**/.git/**' 'SuccessExitCodes|3010|1641|install_script_ref|nonzero|exit-code|ExitCode|process\?\.ExitCode|exit-code-status' . | head -400

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import pathlib, json
print("\n== json files with non-null install_script_ref and MSI exit-code mapping snippets ==")
for path in sorted(pathlib.Path("ee/maintained-apps/outputs").glob("*")):
    if not path.is_dir():
        continue
    j = path / "windows.json"
    if not j.exists():
        continue
    data = json.loads(j.read_text())
    ref = data.get("install_script_ref")
    if not ref or ref not in data.get("refs", {}):
        continue
    text = data["refs"][ref]
    has_success_mapping = any(s in text for s in [
        "3010", "1641", "successCodes", "@(0, 3010, 1641)", "3010, 1641"
    ])
    if ref == "85459eac" or ("msi" in path.name.lower() and has_success_mapping):
        print(f"-- ref={ref} app={path.name} has_success_mapping={has_success_mapping} --")
        lines = text.splitlines()
        show_idx = []
        for idx,l in enumerate(lines):
            if "Exit $installProcess.ExitCode" in l or "Exit $ExitCode" in l or "3010" in l or "1641" in l or "successCodes" in l or (idx >=1 and "Exit " in l and ("successCodes" in lines[idx-1] or "3010" in lines[idx-1] or "1641" in lines[idx-1])):
                show_idx.append(idx)
        show_idx = sorted(set(show_idx))
        for idx in show_idx:
            print(f"{idx+1}: {lines[idx]}")
PY

echo "\n== Fleet software installer status handling =="
for f in server/fleet/software_installer.go server/fleet/software.go server/datastore/mysql/scripts.go; do
  [ -f "$f" ] && sed -n '520,605p;1140,1225p;2700,2728p' "$f" | nl -ba
done

echo "\n== fleetd/maintained-apps exit code handling snippets =="
rg -n --hidden --glob '!**/.git/**' 'InstallScriptExitCode|exit-code|exit_code|SoftwareInstallResultPayload|install script|software install result|exitCode != 0' cmd server orbit --glob '!**/testdata/**' | head -200

Repository: fleetdm/fleet

Length of output: 327


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Fleet software installer status handling =="
sed -n '520,605p' server/fleet/software_installer.go
sed -n '1140,1225p' server/fleet/software_installer.go

echo "\n== fleetd/maintained-apps exit code handling snippets =="
rg -n --hidden --glob '!**/.git/**' 'InstallScriptExitCode|exit-code|exit_code|SoftwareInstallResultPayload|install script|software install result' cmd server orbit --glob '!**/testdata/**' | head -200

Repository: fleetdm/fleet

Length of output: 31359


Normalize MSI reboot-success codes in the BlueJ install script.

exit $installProcess.ExitCode returns 3010 and 1641 as failures, because Fleet treats a non-zero install-script exit code as SoftwareInstallFailed. Return 0 for those MSI codes before exiting.

Proposed fix
-Exit $installProcess.ExitCode
+if (@(0, 3010, 1641) -contains $installProcess.ExitCode) {
+  Exit 0
+}
+Exit $installProcess.ExitCode
🤖 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 10, Update the install
script referenced by install_script_ref for BlueJ to translate MSI exit codes
3010 and 1641 to exit code 0 before propagating the installer result; preserve
the existing behavior for all other exit codes.

"34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($process.ExitCode -ne 0) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n",
"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",
"34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($process.ExitCode -ne 0) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\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 | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C 8 '34a531d4|process.ExitCode|successCodes|3010|1641' \
  ee/maintained-apps/outputs/cinc/windows.json \
  ee/maintained-apps/outputs/cherry-keys/windows.json \
  ee/maintained-apps/outputs/cisco-jabber/windows.json

Repository: fleetdm/fleet

Length of output: 8985


🌐 Web query:

Cinc Workstation 23.5.1040 Windows uninstaller exit codes 3010 1641

💡 Result:

When uninstalling Cinc Workstation 23.5.1040 on Windows using the Windows Installer (msiexec.exe), the exit codes 1641 and 3010 are standard Windows Installer return codes that both indicate a successful operation, with the additional requirement of a system restart [1][2]. Exit Code 1641 (ERROR_SUCCESS_REBOOT_INITIATED) This code indicates that the installer has initiated a restart of the computer to complete the process [1][3][4]. The installation or uninstallation is considered successful [1]. Exit Code 3010 (ERROR_SUCCESS_REBOOT_REQUIRED) This code indicates that the installation or uninstallation was successful, but a restart is required to complete the operation [1][2][5]. Unlike 1641, the installer does not trigger the restart automatically; it is up to the system or the administrator to perform the restart [1][2]. In the context of automating Cinc Workstation removal (such as via PowerShell scripts), these codes are typically handled as success conditions rather than failures, provided that the desired outcome (uninstallation) was achieved [6][7]. For example, automated management tools often treat any exit code that is not 0, 1641, or 3010 as a potential error [6][7].

Citations:


Treat MSI reboot exit codes as successful uninstall.

34a531d4 only accepts 0, but standard msiexec.exe /x success codes also include 3010 and 1641. Use the same shared success-code check as the other maintained-app uninstallers so reboot-required Cinc removals are not reported as failures.

🤖 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/cinc/windows.json` at line 20, Update the
exit-code validation in the PowerShell uninstall script for upgrade code
{9870C512-DF2C-43D9-8C28-7ACD60ABBE27} to use the shared maintained-app
success-code check, accepting 0, 3010, and 1641 instead of only 0. Preserve the
existing failure logging and exit behavior for all other codes.

],
"refs": {
"36ce6af0": "# GoToMeeting MSI machine-wide install.\n# G2MINSTALLFORALLUSERS=1 installs for all users (the installer defaults to\n# per-user, G2MINSTALLFORALLUSERS=0). Fleet runs elevated, so this produces a\n# machine-wide install.\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}`\" G2MINSTALLFORALLUSERS=1\" `\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",
"a6c7d24e": "# GoToMeeting MSI machine-wide install.\n# G2MINSTALLFORALLUSERS=1 installs for all users (the installer defaults to\n# per-user, G2MINSTALLFORALLUSERS=0). Fleet runs elevated, so this produces a\n# machine-wide install.\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}`\" G2MINSTALLFORALLUSERS=1\" `\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:

#!/usr/bin/env bash
set -euo pipefail

echo "== target file =="
cat -n ee/maintained-apps/outputs/gotomeeting/windows.json | sed -n '1,80p'

echo "== reference file search =="
fd -a '22e48c46|windows.json' ee/maintained-apps/outputs | sed -n '1,80p'

echo "== search for 22e48c46 in repo =="
rg -n "22e48c46|3010|1641|Success codes|successCodes|G2MINSTALLFORALLUSERS|msiexec" ee/maintained-apps -S | sed -n '1,240p'

echo "== repo file list around maintains =="
git ls-files ee/maintained-apps/outputs | sed -n '1,120p'

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "== exact Gotomeeting installed file content =="
cat -n ee/maintained-apps/outputs/gotomeeting/windows.json | sed -n '1,80p'

echo "== GoToMeeting MSI install references =="
rg -n "9ad157c8|a6c7d24e|Get-Process msiexec|Start-Process msiexec|ExitCode|successCodes|3010|1641" ee/maintained-apps/outputs/gotomeeting/windows.json

Repository: fleetdm/fleet

Length of output: 8555


🌐 Web query:

Microsoft MSI msiexec exit code 3010 1641 ERROR_SUCCESS_REBOOT_REQUIRED SUCCESS_REBOOT_INITIATED

💡 Result:

In the context of Microsoft Windows Installer (Msiexec.exe), both 1641 and 3010 are considered success codes, indicating that the installation process completed successfully but requires a system restart to finalize [1][2]. The key differences between these codes are as follows: ERROR_SUCCESS_REBOOT_INITIATED (1641) This code indicates that the installer has successfully completed the installation and has already initiated a system restart [1][3]. ERROR_SUCCESS_REBOOT_REQUIRED (3010) This code indicates that the installation completed successfully, but a system restart is required to finish the operation [1][2]. Unlike 1641, this code signifies that the installer itself has not initiated the reboot [3]. These codes are explicitly documented by Microsoft as indicating success [1][2]. They do not apply to instances where the ForceReboot action is used, as that action is handled differently by the installer [1][4]. Because reboots are asynchronous processes, it is possible for a restart to occur before these codes are returned [5]. top_results: [1][2][3][5]

Citations:


Normalize MSI reboot-success codes before returning.

a6c7d24e returns $installProcess.ExitCode directly. MSI can return 3010 or 1641 after a successful install that involves reboot handling. Treat those as success, as 22e48c46 does for comparable MSI installs.

Suggested exit-code handling
+$successCodes = @(0, 3010, 1641)
+
 ...
-Exit $installProcess.ExitCode
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+Exit $installProcess.ExitCode
📝 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
"a6c7d24e": "# GoToMeeting MSI machine-wide install.\n# G2MINSTALLFORALLUSERS=1 installs for all users (the installer defaults to\n# per-user, G2MINSTALLFORALLUSERS=0). Fleet runs elevated, so this produces a\n# machine-wide install.\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}`\" G2MINSTALLFORALLUSERS=1\" `\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",
"a6c7d24e": "# GoToMeeting MSI machine-wide install.\n# G2MINSTALLFORALLUSERS=1 installs for all users (the installer defaults to\n# per-user, G2MINSTALLFORALLUSERS=0). Fleet runs elevated, so this produces a\n# machine-wide install.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$successCodes = @(0, 3010, 1641)\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" G2MINSTALLFORALLUSERS=1\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
🤖 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 19, Update the
GoToMeeting MSI script identified by a6c7d24e to normalize successful
reboot-required exit codes before exiting: treat 3010 and 1641 as success,
matching the handling used by 22e48c46, while preserving failure codes and the
existing logging and installation flow.

Comment on lines +9 to 10
"installer_url": "https://download.jetbrains.com/rider/JetBrains.Rider-2026.2.0.2-aarch64.dmg",
"install_script_ref": "23493a85",

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

rg -n -C 6 'rider|aarch64|x86_64|arm64|architecture|arch' ee/maintained-apps cmd/maintained-apps

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Target file:\n'
cat -n ee/maintained-apps/outputs/rider/darwin.json | sed -n '1,80p'

printf '\nRider-related outputs/inputs:\n'
fd -a 'rider|darwin\.json|amd64|x86_64|arm64|aarch64' ee/maintained-apps/outputs ee/maintained-apps/inputs cmd || true

printf '\nFocused package files:\n'
while IFS= read -r f; do
  printf '\n--- %s\n' "$f"
  cat -n "$f" | sed -n '1,100p'
done < <(fd '^(rider|.*darwin|.*macos|.*osx|.*intel|.*arm).*\.json$' ee/maintained-apps/outputs ee/maintained-apps/inputs 2>/dev/null || true)

Repository: fleetdm/fleet

Length of output: 50369


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Go files mentioning darwin output paths/architectures:\n'
rg -n --glob '*.go' 'darwin\.json|installer_url|architecture|arch|architectures|arm64|x86_64|amd64|os\.Hostname|runtime\..GOARCH|GOARCH|homebrew|macos|arm64|x86_64' cmd ee/maintained-apps cmd/maintained-apps ee/maintained-apps/outputs ee/maintained-apps/inputs | sed -n '1,220p'

printf '\nCandidate Go files with outlines:\n'
while IFS= read -R f; do
  printf '\n--- %s\n' "$f"
  ast-grep outline "$f" --view compact 2>/dev/null | sed -n '1,80p' || true
done < <(rg -l --glob '*.go' 'darwin\.json|installer_url|architecture|architectures|homebrew|macos' cmd ee/maintained-apps cmd/maintained-apps ee/maintained-apps/outputs ee/maintained-apps/inputs 2>/dev/null || true)

Repository: fleetdm/fleet

Length of output: 28127


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Rider input file:\n'
cat -n ee/maintained-apps/inputs/homebrew/rider.json | sed -n '1,220p'

printf '\nMaintained-apps Go files:\n'
find ee/maintained-apps cmd/maintained-apps -name '*.go' -type f | sort

printf '\nFiles mentioning darwin arch/installer selection:\n'
rg -n -C 5 'darwin\.json|installer_url|arch|architecture|architectures|arm64|x86_64|amd64|homebrew' \
  -g '*.go' ee/maintained-apps cmd/maintained-apps | sed -n '1,260p'

Repository: fleetdm/fleet

Length of output: 23667


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'ee/maintained-apps/maintained_apps.go:\n'
cat -n ee/maintained-apps/maintained_apps.go

printf '\nee/maintained-apps/ingesters/homebrew/ingester.go outline/content:\n'
wc -l ee/maintained-apps/ingesters/homebrew/ingester.go ee/maintained-apps/ingesters/homebrew/scripts.go ee/maintained-apps/ingesters/homebrew/ingester_test.go
cat -n ee/maintained-apps/ingesters/homebrew/ingester.go | sed -n '1,260p'

printf '\nArchitecture-specific output json files with aarch64/arch/uni references:\n'
rg -n -C 4 '"installer_url|.*/installer_url|aarch64|x86_64|arm64|amd64|architecture|architectures"|"arch":' ee/maintained-apps/outputs rider ee/maintained-apps/outputs/rider 2>/dev/null | sed -n '1,240p'

printf '\nCheck for runtime selection patterns in Fleet backend/software tables:\n'
rg -n -C 4 'homebrew_packages|apps|bundle_identifier|arch|darwin|macos|maintained_apps|FMA|installer_url' pkg server tools ee --glob '*.go' | sed -n '1,240p'

Repository: fleetdm/fleet

Length of output: 43558


🌐 Web query:

JetBrains Rider macOS aarch64 DMG installer universal architecture support Intel macOS

💡 Result:

JetBrains Rider does not use a single "universal" binary (a single DMG containing both architectures) for macOS [1]. Instead, JetBrains provides separate, architecture-specific DMG installers to ensure native performance on each platform [2][3]. Users must download the correct version based on their hardware: - Apple Silicon (aarch64): Use the DMG marked for Apple Silicon [2][3]. - Intel-based Macs (x86_64): Use the DMG marked for Intel [2][1]. Since the introduction of native Apple Silicon support in version 2021.3, JetBrains has explicitly maintained these distinct builds [2][4]. If you use the JetBrains Toolbox App, it automatically handles this detection for you by selecting and installing the appropriate version for your specific hardware [3][4]. For manual installations, you should select the corresponding architecture on the official JetBrains Rider download page [2][3].

Citations:


🌐 Web query:

JetBrains Rider 2026.2 download Intel macOS DMG x86_64

💡 Result:

JetBrains Rider 2026.2 was released on July 22, 2026 [1]. For users on Intel-based macOS systems, the standard DMG installation remains available [2][3]. You can download the Intel version by visiting the official JetBrains Rider download page [4]. When downloading for macOS, the site typically detects your architecture automatically, but if you need to select the Intel (x86_64) version specifically, you can use the download dropdown menu on the official website to choose the Intel DMG [5]. The direct URL pattern for the Intel DMG installer follows the format used by the JetBrains distribution servers [3]: https://download.jetbrains.com/rider/JetBrains.Rider-2026.2.dmg Note that this download provides the x86_64 architecture build intended for Intel processors [5][2]. If you use a package manager like Homebrew, the intel build is specified within the cask configuration as the x86_64 variant [2][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import json, pathlib
p = pathlib.Path("ee/maintained-apps/inputs/homebrew/rider.json")
data = json.loads(p.read_text())
print("rider slug:", data.get("slug"))
print("rider unique_identifier:", data.get("unique_identifier"))
print("rider installer_format:", data.get("installer_format"))
PY

Repository: fleetdm/fleet

Length of output: 249


Scope Rider to Apple Silicon or add the Intel DMG record.

ee/maintained-apps/outputs/rider/darwin.json has platform scope darwin, while this installer points to the aarch64 Rider DMG. JetBrains provides separate macOS DMG paths for Apple Silicon and Intel; add architecture selection or split the darwin manifests so Intel macOS hosts do not download the aarch64 installer.

🤖 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/rider/darwin.json` around lines 9 - 10, Update the
Rider darwin manifest to avoid serving the aarch64 DMG to Intel macOS hosts:
either scope this record explicitly to Apple Silicon or add a separate Intel
record using the corresponding Intel DMG URL, while preserving the existing
installer metadata.

"17f62246": "$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}`\" ACCEPTEULA=1\" `\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\n",
"6b8b2b2a": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\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\nforeach ($product_code in $inst.RelatedProducts('{E18DCCFE-AFC4-42A5-A020-1FF11BF12D39}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n"
"6b8b2b2a": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\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\nforeach ($product_code in $inst.RelatedProducts('{E18DCCFE-AFC4-42A5-A020-1FF11BF12D39}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n",
"e23ea804": "$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}`\" ACCEPTEULA=1\" `\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\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

Map MSI reboot codes to success.

Line 21 returns $installProcess.ExitCode unchanged. This reports MSI exit codes 3010 and 1641 as installation failures. MSI uses these codes after a successful installation when a reboot is required or initiated. The script already passes /norestart, so 3010 can occur.

Return 0 for 0, 3010, and 1641, as the shared 22e48c46 script does. Preserve ACCEPTEULA=1.

Proposed fix
 $logFile = "${env:TEMP}/fleet-install-software.log"
+$successCodes = @(0, 3010, 1641)
 
 try {
   ...
   Get-Content $logFile -Tail 500
+  if ($successCodes -contains $installProcess.ExitCode) {
+    Exit 0
+  }
   Exit $installProcess.ExitCode
📝 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
"e23ea804": "$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}`\" ACCEPTEULA=1\" `\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\n"
"e23ea804": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" ACCEPTEULA=1\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n\n"
🤖 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/sourcetree/windows.json` at line 21, Update the
PowerShell script identified by the e23ea804 entry to map MSI exit codes 0,
3010, and 1641 to process exit code 0 instead of returning
$installProcess.ExitCode unchanged. Preserve the existing installer arguments,
including ACCEPTEULA=1, logging, and error handling, using the shared 22e48c46
script’s behavior as the reference.

},
"installer_url": "https://download.videolan.org/pub/videolan/vlc/3.0.23/win64/vlc-3.0.23-win64.msi",
"install_script_ref": "8959087b",
"install_script_ref": "22e48c46",

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

Handle reboot-success codes in the VLC uninstaller.

The new installer accepts MSI exit codes 0, 3010, and 1641, but ref 9e6b767e still treats only 0 as success. When msiexec /x returns 3010 or 1641, Fleet reports the uninstall as failed even though MSI completed. Normalize the same three codes to exit 0.

Suggested fix
-  if ($process.ExitCode -eq 0) {
+  if (@(0, 3010, 1641) -contains $process.ExitCode) {

Also applies to: 20-20

🤖 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/vlc/windows.json` at line 10, Update the VLC
uninstaller configuration referenced by install_script_ref, including the
applicable 20-20 entry, so msiexec /x exit codes 0, 3010, and 1641 are all
normalized to exit code 0 instead of treating reboot-success codes as failures.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Closing in favor of #50554.

@github-actions github-actions Bot closed this Aug 5, 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