Skip to content

Update Fleet-maintained apps - #50446

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

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

Conversation

@fleet-release

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

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • Bug Fixes

    • Improved Windows MSI installation handling across many maintained applications.
    • Installations requiring a reboot are now recognized as successful.
    • Corrected installer log-path quoting to improve logging, especially for paths containing spaces.
    • Failure codes and exception handling remain properly reported.
  • Updates

    • Updated package metadata for Docker Desktop, Rider, and Shapr3D to newer releases, including download details and checksums.

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

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

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

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

--- /tmp/old.7xLO8K	2026-08-03 16:55:02.736926137 +0000
+++ /tmp/new.agQnKW	2026-08-03 16:55:02.736926137 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.eV80sJ	2026-08-03 16:55:02.798926870 +0000
+++ /tmp/new.1oPOPx	2026-08-03 16:55:02.798926870 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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/windows.json

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

--- /tmp/old.mWCnoo	2026-08-03 16:55:02.850927484 +0000
+++ /tmp/new.CoC3b3	2026-08-03 16:55:02.850927484 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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-installer/windows.json

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

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

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

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

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

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

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

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

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

--- /tmp/old.CAOWqT	2026-08-03 16:55:03.083930237 +0000
+++ /tmp/new.3I3FsU	2026-08-03 16:55:03.083930237 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.2fNz87	2026-08-03 16:55:03.139930899 +0000
+++ /tmp/new.v0ZBCE	2026-08-03 16:55:03.139930899 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Heluye	2026-08-03 16:55:03.193931537 +0000
+++ /tmp/new.CMSj9l	2026-08-03 16:55:03.193931537 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.CqSmvE	2026-08-03 16:55:03.241932104 +0000
+++ /tmp/new.mE5Liy	2026-08-03 16:55:03.241932104 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.CSf6y1	2026-08-03 16:55:03.288932659 +0000
+++ /tmp/new.GVi0c3	2026-08-03 16:55:03.289932671 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.uIrPzX	2026-08-03 16:55:03.337933238 +0000
+++ /tmp/new.KlNViG	2026-08-03 16:55:03.337933238 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.DVhMY1	2026-08-03 16:55:03.400933982 +0000
+++ /tmp/new.0fjZSF	2026-08-03 16:55:03.400933982 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.CqvzbQ	2026-08-03 16:55:03.449934561 +0000
+++ /tmp/new.fVV3Nm	2026-08-03 16:55:03.449934561 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.39WIXD	2026-08-03 16:55:03.497935128 +0000
+++ /tmp/new.7qvJjT	2026-08-03 16:55:03.497935128 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.4mWC7u	2026-08-03 16:55:03.547935719 +0000
+++ /tmp/new.HSMhUC	2026-08-03 16:55:03.547935719 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.59ECKx	2026-08-03 16:55:03.598936322 +0000
+++ /tmp/new.L1Dwf1	2026-08-03 16:55:03.598936322 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.ZNcOTY	2026-08-03 16:55:03.662937078 +0000
+++ /tmp/new.iMyzep	2026-08-03 16:55:03.662937078 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.jhAooq	2026-08-03 16:55:03.735937940 +0000
+++ /tmp/new.cuhpUZ	2026-08-03 16:55:03.735937940 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.sv9EH4	2026-08-03 16:55:03.790938590 +0000
+++ /tmp/new.2kgwNt	2026-08-03 16:55:03.790938590 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.B0H7Xu	2026-08-03 16:55:03.858939393 +0000
+++ /tmp/new.8CCex2	2026-08-03 16:55:03.858939393 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

--- /tmp/old.gcwnwN	2026-08-03 16:55:04.029941414 +0000
+++ /tmp/new.RLKmaQ	2026-08-03 16:55:04.029941414 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Dj7skb	2026-08-03 16:55:04.092942158 +0000
+++ /tmp/new.t2PttI	2026-08-03 16:55:04.092942158 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.SaTs6C	2026-08-03 16:55:04.138942702 +0000
+++ /tmp/new.43Y6FX	2026-08-03 16:55:04.138942702 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.t7dL3G	2026-08-03 16:55:04.183943234 +0000
+++ /tmp/new.NeNhgT	2026-08-03 16:55:04.183943234 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Z0AhSz	2026-08-03 16:55:04.229943777 +0000
+++ /tmp/new.InkeFv	2026-08-03 16:55:04.229943777 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Y2gajP	2026-08-03 16:55:04.280944380 +0000
+++ /tmp/new.cQwrwu	2026-08-03 16:55:04.280944380 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.jGG1i5	2026-08-03 16:55:04.329944959 +0000
+++ /tmp/new.T8BGXL	2026-08-03 16:55:04.329944959 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.W4hlYB	2026-08-03 16:55:04.384945608 +0000
+++ /tmp/new.3XQDJg	2026-08-03 16:55:04.384945608 +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/bitwig-studio/windows.json

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

--- /tmp/old.jX9Tmx	2026-08-03 16:55:04.447946353 +0000
+++ /tmp/new.gONRBM	2026-08-03 16:55:04.447946353 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.r5cW7g	2026-08-03 16:55:04.500946979 +0000
+++ /tmp/new.PlT1YS	2026-08-03 16:55:04.500946979 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.JKoyKq	2026-08-03 16:55:04.557947652 +0000
+++ /tmp/new.0a3CGv	2026-08-03 16:55:04.558947664 +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.fPsiTj	2026-08-03 16:55:04.611948290 +0000
+++ /tmp/new.FobzhY	2026-08-03 16:55:04.611948290 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.e5w04b	2026-08-03 16:55:04.661948881 +0000
+++ /tmp/new.yeW76t	2026-08-03 16:55:04.661948881 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.0ddLlA	2026-08-03 16:55:04.710949460 +0000
+++ /tmp/new.kA8pmX	2026-08-03 16:55:04.710949460 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.uazaob	2026-08-03 16:55:04.758950027 +0000
+++ /tmp/new.pnrcce	2026-08-03 16:55:04.758950027 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.IYqaMc	2026-08-03 16:55:04.802950547 +0000
+++ /tmp/new.eHozw6	2026-08-03 16:55:04.802950547 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.XtNMoe	2026-08-03 16:55:04.855951173 +0000
+++ /tmp/new.2x5c2c	2026-08-03 16:55:04.855951173 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.ILzkbu	2026-08-03 16:55:04.904951752 +0000
+++ /tmp/new.eosKCj	2026-08-03 16:55:04.904951752 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.tQeL3L	2026-08-03 16:55:04.966952485 +0000
+++ /tmp/new.1thVAQ	2026-08-03 16:55:04.966952485 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.v2w2GE	2026-08-03 16:55:05.020953123 +0000
+++ /tmp/new.F0sTI3	2026-08-03 16:55:05.020953123 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.QWE77n	2026-08-03 16:55:05.088953925 +0000
+++ /tmp/new.ZhwwJo	2026-08-03 16:55:05.088953925 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.RluNCQ	2026-08-03 16:55:05.138954512 +0000
+++ /tmp/new.lrhnxI	2026-08-03 16:55:05.138954512 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.XViMam	2026-08-03 16:55:05.194955170 +0000
+++ /tmp/new.nIEVhZ	2026-08-03 16:55:05.194955170 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.8RVU29	2026-08-03 16:55:05.244955758 +0000
+++ /tmp/new.9WfIVb	2026-08-03 16:55:05.244955758 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.QRGS2Q	2026-08-03 16:55:05.300956416 +0000
+++ /tmp/new.EL9gDw	2026-08-03 16:55:05.300956416 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.iYRwHM	2026-08-03 16:55:05.349956992 +0000
+++ /tmp/new.AKJZzW	2026-08-03 16:55:05.349956992 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.lIYxWJ	2026-08-03 16:55:05.399957579 +0000
+++ /tmp/new.iJaXog	2026-08-03 16:55:05.399957579 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.TmUCqm	2026-08-03 16:55:05.446958131 +0000
+++ /tmp/new.mzR6o1	2026-08-03 16:55:05.446958131 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.tAGZbL	2026-08-03 16:55:05.509958872 +0000
+++ /tmp/new.NeGGTg	2026-08-03 16:55:05.509958872 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.vNVIvq	2026-08-03 16:55:05.559959459 +0000
+++ /tmp/new.q2b3ss	2026-08-03 16:55:05.559959459 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.z6Q7Hr	2026-08-03 16:55:05.602959964 +0000
+++ /tmp/new.nejxAM	2026-08-03 16:55:05.602959964 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.sHuzSE	2026-08-03 16:55:05.657960610 +0000
+++ /tmp/new.6mnbV1	2026-08-03 16:55:05.657960610 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.dTy9bO	2026-08-03 16:55:05.711961245 +0000
+++ /tmp/new.Hvvj30	2026-08-03 16:55:05.711961245 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.3Lvywc	2026-08-03 16:55:05.760961821 +0000
+++ /tmp/new.XhV16u	2026-08-03 16:55:05.760961821 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.oMxISb	2026-08-03 16:55:05.815962467 +0000
+++ /tmp/new.7antCy	2026-08-03 16:55:05.816962479 +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.w5QTZt	2026-08-03 16:55:05.874963160 +0000
+++ /tmp/new.LoNdq1	2026-08-03 16:55:05.874963160 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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-cli/windows.json

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

--- /tmp/old.DXy4IG	2026-08-03 16:55:05.930963818 +0000
+++ /tmp/new.TyOf3p	2026-08-03 16:55:05.930963818 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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/windows.json

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

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

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

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

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

--- /tmp/old.WbCdHn	2026-08-03 16:55:06.105965874 +0000
+++ /tmp/new.ZXfv6A	2026-08-03 16:55:06.105965874 +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.FlKcSN	2026-08-03 16:55:06.155966462 +0000
+++ /tmp/new.DK5zj2	2026-08-03 16:55:06.155966462 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.O4xdu7	2026-08-03 16:55:06.208967085 +0000
+++ /tmp/new.f1qtLs	2026-08-03 16:55:06.209967096 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.a5Cngz	2026-08-03 16:55:06.264967743 +0000
+++ /tmp/new.nm0HLl	2026-08-03 16:55:06.264967743 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.8stZPI	2026-08-03 16:55:06.317968365 +0000
+++ /tmp/new.aX9RLk	2026-08-03 16:55:06.317968365 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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/draftable-desktop/windows.json

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

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

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

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

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

--- /tmp/old.pGLDFs	2026-08-03 16:55:06.462970069 +0000
+++ /tmp/new.HF22jQ	2026-08-03 16:55:06.463970081 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.2k7OFF	2026-08-03 16:55:06.511970645 +0000
+++ /tmp/new.jAHs7Z	2026-08-03 16:55:06.511970645 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.z4DMcb	2026-08-03 16:55:06.570971338 +0000
+++ /tmp/new.sprrEP	2026-08-03 16:55:06.570971338 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.djAaN0	2026-08-03 16:55:06.632972066 +0000
+++ /tmp/new.X7VmWn	2026-08-03 16:55:06.632972066 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.0hEYGF	2026-08-03 16:55:06.681972642 +0000
+++ /tmp/new.ZCdP9h	2026-08-03 16:55:06.681972642 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.ANUevL	2026-08-03 16:55:06.728973194 +0000
+++ /tmp/new.oWCLgj	2026-08-03 16:55:06.728973194 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Ed5j17	2026-08-03 16:55:06.774973735 +0000
+++ /tmp/new.KP48sX	2026-08-03 16:55:06.774973735 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.NELbDS	2026-08-03 16:55:06.819974263 +0000
+++ /tmp/new.pIfmIM	2026-08-03 16:55:06.819974263 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.pB05Cf	2026-08-03 16:55:06.876974933 +0000
+++ /tmp/new.DvP4p6	2026-08-03 16:55:06.876974933 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.91nGQN	2026-08-03 16:55:06.921975462 +0000
+++ /tmp/new.0rEIt5	2026-08-03 16:55:06.921975462 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.dGLP62	2026-08-03 16:55:06.969976026 +0000
+++ /tmp/new.ACsdoo	2026-08-03 16:55:06.969976026 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.KSC7PO	2026-08-03 16:55:07.014976555 +0000
+++ /tmp/new.HWyiqz	2026-08-03 16:55:07.014976555 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.T27D5r	2026-08-03 16:55:07.068977189 +0000
+++ /tmp/new.F4XnIu	2026-08-03 16:55:07.068977189 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.WKtY3F	2026-08-03 16:55:07.122977824 +0000
+++ /tmp/new.WIxSlp	2026-08-03 16:55:07.123977835 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.vHTZXe	2026-08-03 16:55:07.198978717 +0000
+++ /tmp/new.M1SB1r	2026-08-03 16:55:07.198978717 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.pYFiLO	2026-08-03 16:55:07.246979281 +0000
+++ /tmp/new.I8ovS9	2026-08-03 16:55:07.246979281 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.AZmf0o	2026-08-03 16:55:07.292979821 +0000
+++ /tmp/new.Y93bQb	2026-08-03 16:55:07.292979821 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.q6nsv8	2026-08-03 16:55:07.347980467 +0000
+++ /tmp/new.YgE3bc	2026-08-03 16:55:07.347980467 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.eq1cC2	2026-08-03 16:55:07.399981078 +0000
+++ /tmp/new.9UCQJe	2026-08-03 16:55:07.399981078 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

--- /tmp/old.FEyrLe	2026-08-03 16:55:07.503982300 +0000
+++ /tmp/new.8UfWGx	2026-08-03 16:55:07.503982300 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.k6Wu2o	2026-08-03 16:55:07.558982946 +0000
+++ /tmp/new.O4Tsmi	2026-08-03 16:55:07.558982946 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

ee/maintained-apps/outputs/gadwin-printscreen-pro/windows.json

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

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

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

ee/maintained-apps/outputs/gadwin-printscreen/windows.json

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

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

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

ee/maintained-apps/outputs/gadwin-screenrecorder/windows.json

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

--- /tmp/old.YQmCMb	2026-08-03 16:55:07.721984862 +0000
+++ /tmp/new.QfC0ir	2026-08-03 16:55:07.722984873 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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/windows.json

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

--- /tmp/old.eDLvXe	2026-08-03 16:55:07.782985578 +0000
+++ /tmp/new.9HwilW	2026-08-03 16:55:07.782985578 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.bOpxxZ	2026-08-03 16:55:07.830986142 +0000
+++ /tmp/new.Gnc08F	2026-08-03 16:55:07.830986142 +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.aq1Frt	2026-08-03 16:55:07.878986706 +0000
+++ /tmp/new.plOUZB	2026-08-03 16:55:07.878986706 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.SqthbD	2026-08-03 16:55:07.932987341 +0000
+++ /tmp/new.wVQiwH	2026-08-03 16:55:07.932987341 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.VD43cs	2026-08-03 16:55:07.986987975 +0000
+++ /tmp/new.N0ZA4d	2026-08-03 16:55:07.986987975 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.a31tJW	2026-08-03 16:55:08.032988516 +0000
+++ /tmp/new.d8J8i4	2026-08-03 16:55:08.032988516 +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.l7JmI6	2026-08-03 16:55:08.078989056 +0000
+++ /tmp/new.XL4yzt	2026-08-03 16:55:08.078989056 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.wesKEn	2026-08-03 16:55:08.133989702 +0000
+++ /tmp/new.5oB6Yg	2026-08-03 16:55:08.133989702 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.kOMd0V	2026-08-03 16:55:08.210990607 +0000
+++ /tmp/new.EF39aL	2026-08-03 16:55:08.210990607 +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/grepwin/windows.json

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

--- /tmp/old.kWrcT5	2026-08-03 16:55:08.265991253 +0000
+++ /tmp/new.AF0RCU	2026-08-03 16:55:08.265991253 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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-11/windows.json

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

--- /tmp/old.2xDU2v	2026-08-03 16:55:08.310991782 +0000
+++ /tmp/new.IfcxT6	2026-08-03 16:55:08.311991794 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.aZyo84	2026-08-03 16:55:08.356992323 +0000
+++ /tmp/new.VVR1hr	2026-08-03 16:55:08.357992334 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.bACMGo	2026-08-03 16:55:08.402992863 +0000
+++ /tmp/new.LXqGLR	2026-08-03 16:55:08.402992863 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.qskI7h	2026-08-03 16:55:08.447993392 +0000
+++ /tmp/new.lAiRPR	2026-08-03 16:55:08.447993392 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Y7kwLm	2026-08-03 16:55:08.496993968 +0000
+++ /tmp/new.9AjBP4	2026-08-03 16:55:08.496993968 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.J7RNEz	2026-08-03 16:55:08.541994496 +0000
+++ /tmp/new.TO4vCc	2026-08-03 16:55:08.541994496 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.svuuya	2026-08-03 16:55:08.586995025 +0000
+++ /tmp/new.ORHxVq	2026-08-03 16:55:08.586995025 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.83SuPn	2026-08-03 16:55:08.631995554 +0000
+++ /tmp/new.ryoDiN	2026-08-03 16:55:08.631995554 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.jzAxP8	2026-08-03 16:55:08.676996083 +0000
+++ /tmp/new.o3YNGX	2026-08-03 16:55:08.676996083 +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.bEY3Wy	2026-08-03 16:55:08.743996870 +0000
+++ /tmp/new.HNZqvo	2026-08-03 16:55:08.743996870 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.P0uKpD	2026-08-03 16:55:08.814997704 +0000
+++ /tmp/new.1FrliO	2026-08-03 16:55:08.814997704 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.L3nZT0	2026-08-03 16:55:08.863998280 +0000
+++ /tmp/new.vVjSAu	2026-08-03 16:55:08.863998280 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.YaPtu9	2026-08-03 16:55:08.930999067 +0000
+++ /tmp/new.1xo8g2	2026-08-03 16:55:08.930999067 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.YGdY5m	2026-08-03 16:55:09.000999889 +0000
+++ /tmp/new.6sDoh6	2026-08-03 16:55:09.000999889 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.blCQk5	2026-08-03 16:55:09.068000677 +0000
+++ /tmp/new.PThVhN	2026-08-03 16:55:09.068000677 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.1hgZxS	2026-08-03 16:55:09.123001323 +0000
+++ /tmp/new.jGzveB	2026-08-03 16:55:09.123001323 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.THiNNz	2026-08-03 16:55:09.171001887 +0000
+++ /tmp/new.pKS39O	2026-08-03 16:55:09.171001887 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.6DjyOx	2026-08-03 16:55:09.235002639 +0000
+++ /tmp/new.eRSYfJ	2026-08-03 16:55:09.235002639 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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-edge/windows.json

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

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

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

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

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

--- /tmp/old.GHHpNG	2026-08-03 16:55:09.349003978 +0000
+++ /tmp/new.T2W01E	2026-08-03 16:55:09.350003990 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.BqfDwU	2026-08-03 16:55:09.405004636 +0000
+++ /tmp/new.vD7y4A	2026-08-03 16:55:09.405004636 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.scAKBL	2026-08-03 16:55:09.478005494 +0000
+++ /tmp/new.q3YJ4f	2026-08-03 16:55:09.478005494 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.QeBOpw	2026-08-03 16:55:09.528006081 +0000
+++ /tmp/new.hpdwXt	2026-08-03 16:55:09.528006081 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.lSwMog	2026-08-03 16:55:09.577006657 +0000
+++ /tmp/new.cuf677	2026-08-03 16:55:09.578006669 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.9IF8zh	2026-08-03 16:55:09.626007233 +0000
+++ /tmp/new.ql86Vz	2026-08-03 16:55:09.626007233 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.6T36n3	2026-08-03 16:55:09.671007762 +0000
+++ /tmp/new.6Uu69G	2026-08-03 16:55:09.671007762 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--- /tmp/old.yAvdJa	2026-08-03 16:55:09.915010628 +0000
+++ /tmp/new.WpH0Hd	2026-08-03 16:55:09.916010640 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.jgHaNq	2026-08-03 16:55:09.962011181 +0000
+++ /tmp/new.vmFVwo	2026-08-03 16:55:09.962011181 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.UAwac3	2026-08-03 16:55:10.037012062 +0000
+++ /tmp/new.TxXhdo	2026-08-03 16:55:10.038012074 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

--- /tmp/old.qcX059	2026-08-03 16:55:10.109012908 +0000
+++ /tmp/new.2sQoVn	2026-08-03 16:55:10.109012908 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.zvNFGP	2026-08-03 16:55:10.176013695 +0000
+++ /tmp/new.5M8WRQ	2026-08-03 16:55:10.176013695 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

--- /tmp/old.88OiCF	2026-08-03 16:55:10.373016010 +0000
+++ /tmp/new.U8659H	2026-08-03 16:55:10.373016010 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.P5C3vv	2026-08-03 16:55:10.450016914 +0000
+++ /tmp/new.PkvG2A	2026-08-03 16:55:10.450016914 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.FoUZmw	2026-08-03 16:55:10.500017502 +0000
+++ /tmp/new.2F1DG8	2026-08-03 16:55:10.500017502 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.aSz86a	2026-08-03 16:55:10.577018407 +0000
+++ /tmp/new.BpvUDA	2026-08-03 16:55:10.577018407 +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/tailscale/windows.json

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

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

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

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

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

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

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

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

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

--- /tmp/old.FTy8kM	2026-08-03 16:55:10.808021121 +0000
+++ /tmp/new.cYqWRX	2026-08-03 16:55:10.808021121 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.pLfiG4	2026-08-03 16:55:10.881021979 +0000
+++ /tmp/new.ifZbLv	2026-08-03 16:55:10.881021979 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.9ZRXG4	2026-08-03 16:55:10.946022743 +0000
+++ /tmp/new.Ry5H5H	2026-08-03 16:55:10.946022743 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.Jd5ifG	2026-08-03 16:55:11.004023424 +0000
+++ /tmp/new.S4FrcI	2026-08-03 16:55:11.004023424 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.twhu4H	2026-08-03 16:55:11.062024105 +0000
+++ /tmp/new.E4uf5M	2026-08-03 16:55:11.062024105 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 Get-Content $logFile -Tail 500
 
+if ($successCodes -contains $installProcess.ExitCode) {
+  Exit 0
+}
+
 Exit $installProcess.ExitCode
 
 } catch {

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

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

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

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

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

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

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

--- /tmp/old.bUS97M	2026-08-03 16:55:11.211025856 +0000
+++ /tmp/new.5xtT27	2026-08-03 16:55:11.212025868 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.XimKkL	2026-08-03 16:55:11.301026913 +0000
+++ /tmp/new.cQMR8s	2026-08-03 16:55:11.301026913 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.LYifxD	2026-08-03 16:55:11.376027795 +0000
+++ /tmp/new.EXzag0	2026-08-03 16:55:11.376027795 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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/windows.json

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--- /tmp/old.CHdgTJ	2026-08-03 16:55:11.778032518 +0000
+++ /tmp/new.u39iDc	2026-08-03 16:55:11.778032518 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.RapYn6	2026-08-03 16:55:11.839033235 +0000
+++ /tmp/new.GMihX4	2026-08-03 16:55:11.839033235 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.abR3fV	2026-08-03 16:55:11.890033834 +0000
+++ /tmp/new.frSH1N	2026-08-03 16:55:11.890033834 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.uwbsw8	2026-08-03 16:55:11.945034480 +0000
+++ /tmp/new.4AQ9tE	2026-08-03 16:55:11.945034480 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -PassThru -Verb RunAs -Wait
 
 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.DYvtf7	2026-08-03 16:55:12.014035291 +0000
+++ /tmp/new.ucqz4z	2026-08-03 16:55:12.014035291 +0000
@@ -1,13 +1,21 @@
 $logFile = "${env:TEMP}/fleet-install-software.log"
 
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
 try {
 
 $installProcess = Start-Process msiexec.exe `
-  -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+  -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
   -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 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updated maintained-app Windows manifests to use revised PowerShell MSI installation scripts. The scripts quote log-file paths and treat MSI exit codes 0, 3010, and 1641 as successful. Other failures and exceptions retain failure handling. Selected Docker Desktop, Rider, and Shapr3D package metadata was also updated.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description states the purpose but omits the required issue, checklist, testing, migration, configuration, and fleetd sections. Complete the required template sections, or remove sections that do not apply, and document testing and issue details.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the 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-2608031646

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

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

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

Inline comments:
In `@ee/maintained-apps/outputs/bluej/windows.json`:
- Line 19: Update the BlueJ installer script around $installProcess.ExitCode to
normalize MSI success-with-reboot codes: exit with 0 when the installer returns
3010 or 1641, and preserve the existing exit code for all other results. Keep
the current logging and error handling unchanged.

In `@ee/maintained-apps/outputs/gotomeeting/windows.json`:
- Line 19: Update the GoToMeeting install script identified by the a6c7d24e
reference to normalize MSI exit codes 3010 and 1641 to 0 before exiting.
Preserve the existing behavior for all other exit codes and continue returning
the install process result.

In `@ee/maintained-apps/outputs/sourcetree/windows.json`:
- Around line 20-21: Update the e23ea804 install script to treat MSI exit codes
0, 3010, and 1641 as successful while preserving ACCEPTEULA=1. Apply the
corresponding install_script_ref update and keep both related refs key entries
synchronized with the script change, matching the success-code handling used by
the other Windows MSI installers.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 24d845e0-8de8-40c1-8a0e-e655213cef29

📥 Commits

Reviewing files that changed from the base of the PR and between 388285c and 3624af4.

📒 Files selected for processing (168)
  • ee/maintained-apps/outputs/1password/windows.json
  • ee/maintained-apps/outputs/7-zip/windows.json
  • ee/maintained-apps/outputs/8x8-work/windows.json
  • ee/maintained-apps/outputs/advanced-installer/windows.json
  • ee/maintained-apps/outputs/aircall/windows.json
  • ee/maintained-apps/outputs/airparrot/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/aptakube/windows.json
  • ee/maintained-apps/outputs/arduino-ide/windows.json
  • ee/maintained-apps/outputs/audiveris/windows.json
  • ee/maintained-apps/outputs/autopsy/windows.json
  • ee/maintained-apps/outputs/aws-cli/windows.json
  • ee/maintained-apps/outputs/aws-sam-cli/windows.json
  • ee/maintained-apps/outputs/aws-vpn-client/windows.json
  • ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json
  • ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json
  • ee/maintained-apps/outputs/azure-functions-core-tools/windows.json
  • ee/maintained-apps/outputs/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/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/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/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/cyberduck-cli/windows.json
  • ee/maintained-apps/outputs/cyberduck/windows.json
  • ee/maintained-apps/outputs/db-browser-for-sqlite/windows.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/dngrep/windows.json
  • ee/maintained-apps/outputs/docker/windows.json
  • ee/maintained-apps/outputs/draftable-desktop/windows.json
  • ee/maintained-apps/outputs/drofus/windows.json
  • ee/maintained-apps/outputs/dropbox/windows.json
  • ee/maintained-apps/outputs/druva-insync/windows.json
  • ee/maintained-apps/outputs/duo-desktop/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-11/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-17/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-21/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jdk-8/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-11/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-17/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-21/windows.json
  • ee/maintained-apps/outputs/eclipse-temurin-jre-8/windows.json
  • ee/maintained-apps/outputs/egnyte-webedit/windows.json
  • ee/maintained-apps/outputs/elevate-uc/windows.json
  • ee/maintained-apps/outputs/elgato-control-center/windows.json
  • ee/maintained-apps/outputs/elgato-stream-deck/windows.json
  • ee/maintained-apps/outputs/emclient/windows.json
  • ee/maintained-apps/outputs/endnote/windows.json
  • ee/maintained-apps/outputs/epic-games/windows.json
  • ee/maintained-apps/outputs/filebeat/windows.json
  • ee/maintained-apps/outputs/flexwhere/windows.json
  • ee/maintained-apps/outputs/fortify/windows.json
  • ee/maintained-apps/outputs/gadwin-printscreen-pro/windows.json
  • ee/maintained-apps/outputs/gadwin-printscreen/windows.json
  • ee/maintained-apps/outputs/gadwin-screenrecorder/windows.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/grepwin/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/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/mattermost/windows.json
  • ee/maintained-apps/outputs/microsoft-edge/windows.json
  • ee/maintained-apps/outputs/mixxx/windows.json
  • ee/maintained-apps/outputs/mongodb-compass/windows.json
  • ee/maintained-apps/outputs/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/openvpn-connect/windows.json
  • ee/maintained-apps/outputs/p4v/windows.json
  • ee/maintained-apps/outputs/pdfsam-basic/windows.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/reflector/windows.json
  • ee/maintained-apps/outputs/remote-desktop-manager/windows.json
  • ee/maintained-apps/outputs/rider/darwin.json
  • ee/maintained-apps/outputs/royal-tsx/windows.json
  • ee/maintained-apps/outputs/shapr3d/darwin.json
  • ee/maintained-apps/outputs/sharefile/windows.json
  • ee/maintained-apps/outputs/snagit/windows.json
  • ee/maintained-apps/outputs/sonicwall-netextender/windows.json
  • ee/maintained-apps/outputs/sourcetree/windows.json
  • ee/maintained-apps/outputs/tailscale/windows.json
  • ee/maintained-apps/outputs/textexpander/windows.json
  • ee/maintained-apps/outputs/tightvnc/windows.json
  • ee/maintained-apps/outputs/topaz-gigapixel-ai/windows.json
  • ee/maintained-apps/outputs/topaz-photo-ai/windows.json
  • ee/maintained-apps/outputs/tortoisegit/windows.json
  • ee/maintained-apps/outputs/tower/windows.json
  • ee/maintained-apps/outputs/transmission/windows.json
  • ee/maintained-apps/outputs/twingate/windows.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/windows.json
  • ee/maintained-apps/outputs/webex/windows.json
  • ee/maintained-apps/outputs/windirstat/windows.json
  • ee/maintained-apps/outputs/winlogbeat/windows.json
  • ee/maintained-apps/outputs/wireshark/windows.json
  • ee/maintained-apps/outputs/wrike/windows.json
  • ee/maintained-apps/outputs/yarn/windows.json
  • ee/maintained-apps/outputs/yubico-authenticator/windows.json
  • ee/maintained-apps/outputs/zoom-outlook-plugin/windows.json
  • ee/maintained-apps/outputs/zoom/windows.json
  • ee/maintained-apps/outputs/zulip/windows.json

],
"refs": {
"29a9338f": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"85459eac": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

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

script="$(jq -r '.refs[.versions[0].install_script_ref]' ee/maintained-apps/outputs/bluej/windows.json)"
grep -q '3010' <<<"$script"
grep -q '1641' <<<"$script"
grep -q 'Exit 0' <<<"$script"

Repository: fleetdm/fleet

Length of output: 151


🏁 Script executed:

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

echo "== bluej windows.json relevant section =="
jq -r '.refs[.versions[0].install_script_ref]' ee/maintained-apps/outputs/bluej/windows.json
echo
echo "== bluej windows.json diff/refs summary =="
jq '.refs' ee/maintained-apps/outputs/bluej/windows.json

echo
echo "== find possible 22e48c46 / reboot-success MSI exit code references =="
rg -n --fixed-strings "3010|1641|win32_error|MSI|Start-Process msiexec|Exit 0" ee/maintained-apps -S || true

echo
echo "== git objects around commit if local =="
git cat-file -t 22e48c46 2>/dev/null || true
git cat-file -p 22e48c46 2>/dev/null | sed -n '1,80p' || true

Repository: fleetdm/fleet

Length of output: 2480


🌐 Web query:

Windows Installer return code 3010 1641 success error codes documentation

💡 Result:

In Windows Installer documentation, the return codes 1641 and 3010 both indicate success, but signal that a restart of the system is necessary to finalize the installation [1][2]. The specific meanings are as follows: - 1641 (ERROR_SUCCESS_REBOOT_INITIATED): This code indicates that the installer has already initiated a restart [1][2]. - 3010 (ERROR_SUCCESS_REBOOT_REQUIRED): This code indicates that the installation completed successfully, but a restart is required to complete the installation process [1][2]. This code does not apply to installations that use the ForceReboot action [1][2]. These codes are returned by Windows Installer functions such as MsiExec.exe and InstMsi.exe [1]. Because these codes represent successful completion (with a pending reboot), they should generally be treated as success in deployment or automation scripts, rather than as errors [1][3].

Citations:


Normalize reboot-success MSI exit codes.

Return 0 when the MSI installer exits with 3010 or 1641; Windows Installer treats these as success codes that indicate a reboot is required or was initiated. Keeping Exit $installProcess.ExitCode makes a successfully completed BlueJ install appear failed to Fleet.

Proposed PowerShell fix
 Get-Content $logFile -Tail 500
 
+$successCodes = @(0, 3010, 1641)
+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
"85459eac": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n",
"85459eac": "# BlueJ ships a per-user WiX MSI. Fleet runs installs elevated (SYSTEM), so we\n# pass ALLUSERS=2 — the same switch winget uses — which resolves to a per-machine\n# install (into %ProgramFiles%\\BlueJ) when run elevated.\n\n$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\" ALLUSERS=2\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\n$successCodes = @(0, 3010, 1641)\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/bluej/windows.json` at line 19, Update the BlueJ
installer script around $installProcess.ExitCode to normalize MSI
success-with-reboot codes: exit with 0 when the installer returns 3010 or 1641,
and preserve the existing exit code for all other results. Keep the current
logging and error handling unchanged.

],
"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:

#!/bin/bash
set -euo pipefail

# Expect either explicit Fleet handling for 3010/1641 or matching normalization
# in the GoToMeeting installer script.
rg -n -C 8 'a6c7d24e|22e48c46|3010|1641|ExitCode' .

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate and inspect the relevant maintained-app installer JSON files plus exact MSI exit-code normalization references.
echo "== files =="
fd -a '^(windows\.json|.*windows\.json)$|\.json$' ee/maintained-apps/outputs 2>/dev/null | sed 's#^\./##' | grep -E '(windows\.json|\.json)$' | head -200

echo
echo "== matching exact hashes in repo =="
rg -n '"(a6c7d24e|22e48c46)"' .

echo
echo "== windows.json around relevant scripts =="
sed -n '1,80p' ee/maintained-apps/outputs/gotomeeting/windows.json
echo
rg -n -C 5 '22e48c46|3010|1641|ExitCode' ee/maintained-apps/outputs || true

Repository: fleetdm/fleet

Length of output: 14164


🏁 Script executed:

#!/bin/bash
set -euo pipefail

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

echo
echo "== script hash refs with file context =="
rg -n -C 4 '"(a6c7d24e|22e48c46)"' .

echo
echo "== MSI exit-code normalization refs in repo (limited) =="
rg -n -C 4 '3010|1641|Exit\s*\$installProcess\.ExitCode|installScriptExitCode|InstallScriptExitCode' . --glob '!server/vulnerabilities/testdata/known_exploited_vulnerabilities.json' || true

Repository: fleetdm/fleet

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import json
from pathlib import Path

for p in [Path("ee/maintained-apps/outputs/gotomeeting/windows.json"):
    data = json.loads(p.read_text())
    print(p)
    print("script_count:", len(data.get("scripts") or []))
    for i, s in enumerate(data.get("scripts") or []):
        if isinstance(s, dict):
            key = s.get("id", s.get("uuid", s.get("name")))
            content = s.get("content") or s.get("script") or ""
            print(i, "key", key)
            print("hashes", "22e48c46" in content, "a6c7d24e" in content)
            print("exitcodes", [x for x in ("3010", "1641") if x in content])
            print("direct_exit", "$installProcess.ExitCode" in content if content else False)
PY

python3 - <<'PY'
import json
from pathlib import Path
p = Path("ee/maintained-apps/outputs/gotomeeting/windows.json")
data = json.loads(p.read_text())
print(json.dumps(data, indent=2))
PY

Repository: fleetdm/fleet

Length of output: 354


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import json
from pathlib import Path

p = Path("ee/maintained-apps/outputs/gotomeeting/windows.json")
data = json.loads(p.read_text())
print("path:", p)
print("top-level keys:", sorted(data.keys()))
print("scripts count:", len(data.get("scripts") or []))
for i, s in enumerate(data.get("scripts") or []):
    print("\n--- script", i, "---")
    if isinstance(s, dict):
        for k in sorted(s):
            v = s[k]
            if k in ("content", "script", "name", "id", "uuid") or k.startswith("content"):
                print(k, ":", repr(v)[:1000])
                txt = str(v)
                print("has_22e48c46:", "22e48c46" in txt)
                print("has_a6c7d24e:", "a6c7d24e" in txt)
                print("has_3010:", "3010" in txt)
                print("has_1641:", "1641" in txt)
                print("has_direct_exit:", "$installProcess.ExitCode" in txt)
PY

echo
echo "== exact script keys =="
rg -n -C 2 '"(?:id|uuid|name|content|script)"\s*:\s*"(a6c7d24e|22e48c46)|a6c7d24e|22e48c46|3010|1641|InstallScriptExitCode' ee/maintained-apps/outputs/gotomeeting/windows.json

Repository: fleetdm/fleet

Length of output: 4322


Normalize MSI reboot-required exit codes before returning the install result.

refs["a6c7d24e"] calls Exit $installProcess.ExitCode directly, while the uninstall script (f5235386) treats 3010 and 1641 as success. Treat those MSI reboot exit codes as 0 here to avoid reporting a completed GoToMeeting installation as failed.

Proposed fix
 Get-Content $logFile -Tail 500
 
+if ($installProcess.ExitCode -eq 3010 -or $installProcess.ExitCode -eq 1641) {
+  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$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 ($installProcess.ExitCode -eq 3010 -or $installProcess.ExitCode -eq 1641) {\n Exit 0\n}\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 install script identified by the a6c7d24e reference to normalize MSI
exit codes 3010 and 1641 to 0 before exiting. Preserve the existing behavior for
all other exit codes and continue returning the install process result.

Comment on lines +20 to +21
"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

🧩 Analysis chain

🏁 Script executed:

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

python - <<'PY'
import json
from pathlib import Path

path = Path("ee/maintained-apps/outputs/sourcetree/windows.json")
data = json.loads(path.read_text())
version = data["versions"][0]
ref = version["install_script_ref"]
script = data["refs"][ref]

assert "ACCEPTEULA=1" in script
assert "$successCodes" in script
assert "3010" in script
assert "1641" in script
assert "-contains $installProcess.ExitCode" in script
assert "Exit 0" in script

print("SourceTree installer script has reboot-success handling")
PY

Repository: fleetdm/fleet

Length of output: 240


🏁 Script executed:

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

python3 - <<'PY'
import json
from pathlib import Path

path = Path("ee/maintained-apps/outputs/sourcetree/windows.json")
data = json.loads(path.read_text())
version = data["versions"][0]
ref = version["install_script_ref"]
script = data["refs"][ref]

print("install_script_ref:", ref)
print("keys present:", sorted(version.keys()))
print("ACCEPTEULA=1:", "ACCEPTEULA=1" in script)
print("$successCodes:", "$successCodes" in script)
print("3010:", "3010" in script)
print("1641:", "1641" in script)
print("-contains $installProcess.ExitCode:", "-contains $installProcess.ExitCode" in script)
print("Exit 0:", "Exit 0" in script)
print("Exit $installProcess.ExitCode:", "Exit $installProcess.ExitCode" in script)
print("Exit codes:")
for i, line in enumerate(script.splitlines(), 1):
    if "Exit" in line or "successCodes" in line or "3010" in line or "1641" in line:
        print(f"{i:4}: {line}")

py_path = Path("pp")
print("refs keys:", sorted(data.get("refs", {}).keys())[:20], "...")
PY

Repository: fleetdm/fleet

Length of output: 587


🏁 Script executed:

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

echo "--- SourceTree Windows output ---"
cat -n ee/maintained-apps/outputs/sourcetree/windows.json

echo
echo "--- Locate source package files mentioning SourceTree/source tree install scripts ---"
rg -n "sourcetree|InstallScript|install_script_ref|e23ea804|6b8b2b2a|ACCEPTEULA=1|successCodes|RelatedProducts|3010|1641" ee/maintained-apps -S

Repository: fleetdm/fleet

Length of output: 50370


Normalize reboot-success MSI exit codes in e23ea804.

SourceTree exits with the raw MSI exit code on the install path, so 3010 and 1641 will be treated as installation failure by nonzero-exit install runners. Add the same @(0, 3010, 1641) success-code check used by the other Windows MSI installers, preserve ACCEPTEULA=1, and update the corresponding install_script_ref plus both refs key entries together.

🤖 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` around lines 20 - 21,
Update the e23ea804 install script to treat MSI exit codes 0, 3010, and 1641 as
successful while preserving ACCEPTEULA=1. Apply the corresponding
install_script_ref update and keep both related refs key entries synchronized
with the script change, matching the success-code handling used by the other
Windows MSI installers.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Closing in favor of #50454.

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