Update Fleet-maintained apps - #50456
Conversation
Generated automatically with cmd/maintained-apps.
Script Diff Resultsee/maintained-apps/outputs/1password/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.OBafyY 2026-08-03 17:57:26.036753407 +0000
+++ /tmp/new.E94Xbe 2026-08-03 17:57:26.036753407 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ejJ9J0 2026-08-03 17:57:26.099752864 +0000
+++ /tmp/new.CKKWuG 2026-08-03 17:57:26.099752864 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.KDAZHY 2026-08-03 17:57:26.158752355 +0000
+++ /tmp/new.0lsSfQ 2026-08-03 17:57:26.158752355 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
+if ($successCodes -contains $installProcess.ExitCode) {
+ Exit 0
+}
+
Exit $installProcess.ExitCode
} catch {
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/adobe-acrobat-pro/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/adobe-acrobat-reader/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/advanced-installer/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.Q7n5ly 2026-08-03 17:57:26.307751071 +0000
+++ /tmp/new.Tqxnal 2026-08-03 17:57:26.307751071 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.33qZ4k 2026-08-03 17:57:26.380750442 +0000
+++ /tmp/new.vYXZew 2026-08-03 17:57:26.380750442 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.VX8f3V 2026-08-03 17:57:26.449749847 +0000
+++ /tmp/new.m3ZBRU 2026-08-03 17:57:26.449749847 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.welpU8 2026-08-03 17:57:26.518749253 +0000
+++ /tmp/new.XBLpqz 2026-08-03 17:57:26.518749253 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.0hdmdw 2026-08-03 17:57:26.578748736 +0000
+++ /tmp/new.zq0os6 2026-08-03 17:57:26.578748736 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.XzLVRp 2026-08-03 17:57:26.638748218 +0000
+++ /tmp/new.wYQP4U 2026-08-03 17:57:26.638748218 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.gwCQyC 2026-08-03 17:57:26.694747736 +0000
+++ /tmp/new.oygTQw 2026-08-03 17:57:26.694747736 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.gqhSaX 2026-08-03 17:57:26.752747236 +0000
+++ /tmp/new.nYKp0b 2026-08-03 17:57:26.753747227 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.FwyTTZ 2026-08-03 17:57:26.808746753 +0000
+++ /tmp/new.ISuau1 2026-08-03 17:57:26.808746753 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Z1jw8V 2026-08-03 17:57:26.881746124 +0000
+++ /tmp/new.gAHFB9 2026-08-03 17:57:26.881746124 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Ormy5P 2026-08-03 17:57:26.937745641 +0000
+++ /tmp/new.cGnnq4 2026-08-03 17:57:26.937745641 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.IRVkUw 2026-08-03 17:57:26.993745159 +0000
+++ /tmp/new.klQaxl 2026-08-03 17:57:26.993745159 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.AfU29R 2026-08-03 17:57:27.048744685 +0000
+++ /tmp/new.NA57H8 2026-08-03 17:57:27.049744676 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.H3PruW 2026-08-03 17:57:27.103744211 +0000
+++ /tmp/new.azOUwe 2026-08-03 17:57:27.103744211 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.RwOBW6 2026-08-03 17:57:27.176743582 +0000
+++ /tmp/new.N0LKFB 2026-08-03 17:57:27.176743582 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.wuVxky 2026-08-03 17:57:27.246742978 +0000
+++ /tmp/new.GfsbIK 2026-08-03 17:57:27.247742970 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.BkoFWb 2026-08-03 17:57:27.306742462 +0000
+++ /tmp/new.JienWL 2026-08-03 17:57:27.306742462 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.bR2zHN 2026-08-03 17:57:27.377741850 +0000
+++ /tmp/new.c9fB0w 2026-08-03 17:57:27.378741841 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
+if ($successCodes -contains $installProcess.ExitCode) {
+ Exit 0
+}
+
Exit $installProcess.ExitCode
} catch {
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/apidog/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/aptakube/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.UQwLKa 2026-08-03 17:57:27.467741074 +0000
+++ /tmp/new.jPSCgp 2026-08-03 17:57:27.467741074 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Lnpnhq 2026-08-03 17:57:27.539740454 +0000
+++ /tmp/new.XGPt68 2026-08-03 17:57:27.539740454 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.EvPXvE 2026-08-03 17:57:27.597739954 +0000
+++ /tmp/new.7clEsA 2026-08-03 17:57:27.597739954 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.HumuwF 2026-08-03 17:57:27.667739350 +0000
+++ /tmp/new.0ZwqEQ 2026-08-03 17:57:27.667739350 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.SfDcLz 2026-08-03 17:57:27.717738919 +0000
+++ /tmp/new.2v0e6L 2026-08-03 17:57:27.717738919 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.k9jMda 2026-08-03 17:57:27.767738488 +0000
+++ /tmp/new.KCt8Wz 2026-08-03 17:57:27.767738488 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.nfXxKy 2026-08-03 17:57:27.817738058 +0000
+++ /tmp/new.2L2fWk 2026-08-03 17:57:27.817738058 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.dLLIys 2026-08-03 17:57:27.872737584 +0000
+++ /tmp/new.s4Pq2R 2026-08-03 17:57:27.872737584 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.brQOmK 2026-08-03 17:57:27.926737118 +0000
+++ /tmp/new.VV73W8 2026-08-03 17:57:27.926737118 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Pqjr0d 2026-08-03 17:57:27.989736575 +0000
+++ /tmp/new.TfvWeV 2026-08-03 17:57:27.989736575 +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/beyond-compare/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/bitwig-studio/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.pjRLmA 2026-08-03 17:57:28.096735653 +0000
+++ /tmp/new.6lRaPZ 2026-08-03 17:57:28.096735653 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.MOd8DR 2026-08-03 17:57:28.156735136 +0000
+++ /tmp/new.NRWPpw 2026-08-03 17:57:28.156735136 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.IfQvUL 2026-08-03 17:57:28.218734602 +0000
+++ /tmp/new.FaGc49 2026-08-03 17:57:28.218734602 +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.J7Gykz 2026-08-03 17:57:28.276734102 +0000
+++ /tmp/new.GbZZF6 2026-08-03 17:57:28.276734102 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.9eISv0 2026-08-03 17:57:28.331733628 +0000
+++ /tmp/new.et0Oh5 2026-08-03 17:57:28.331733628 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.5mrawZ 2026-08-03 17:57:28.400733033 +0000
+++ /tmp/new.07rhZc 2026-08-03 17:57:28.400733033 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.xyQE0I 2026-08-03 17:57:28.454732568 +0000
+++ /tmp/new.vj6mkw 2026-08-03 17:57:28.454732568 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.nWmknH 2026-08-03 17:57:28.504732137 +0000
+++ /tmp/new.oW5K1F 2026-08-03 17:57:28.504732137 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.IZ1ENO 2026-08-03 17:57:28.564731620 +0000
+++ /tmp/new.5mjmfN 2026-08-03 17:57:28.564731620 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.7xIgQx 2026-08-03 17:57:28.619731146 +0000
+++ /tmp/new.OEUVKj 2026-08-03 17:57:28.619731146 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.bCcAOL 2026-08-03 17:57:28.688730551 +0000
+++ /tmp/new.LCl2i3 2026-08-03 17:57:28.688730551 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.SaxOog 2026-08-03 17:57:28.748730034 +0000
+++ /tmp/new.dsltMt 2026-08-03 17:57:28.748730034 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.MldsCo 2026-08-03 17:57:28.823729388 +0000
+++ /tmp/new.hZiGpR 2026-08-03 17:57:28.823729388 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.XplZPU 2026-08-03 17:57:28.880728897 +0000
+++ /tmp/new.3BsqQk 2026-08-03 17:57:28.880728897 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.rTWtyT 2026-08-03 17:57:28.942728362 +0000
+++ /tmp/new.O7ZTnV 2026-08-03 17:57:28.942728362 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
+if ($successCodes -contains $installProcess.ExitCode) {
+ Exit 0
+}
+
Exit $installProcess.ExitCode
} catch {
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/claude/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/clickup/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.wSYSbf 2026-08-03 17:57:29.034727569 +0000
+++ /tmp/new.I70wRn 2026-08-03 17:57:29.034727569 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.GjoQ3L 2026-08-03 17:57:29.097727026 +0000
+++ /tmp/new.UKArsn 2026-08-03 17:57:29.097727026 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.G5jEpE 2026-08-03 17:57:29.152726552 +0000
+++ /tmp/new.lpHiHU 2026-08-03 17:57:29.152726552 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ekoXbs 2026-08-03 17:57:29.209726060 +0000
+++ /tmp/new.ltlBL0 2026-08-03 17:57:29.210726051 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.39JXNv 2026-08-03 17:57:29.260725619 +0000
+++ /tmp/new.Bq8cCh 2026-08-03 17:57:29.260725619 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.UexUyF 2026-08-03 17:57:29.330725013 +0000
+++ /tmp/new.MRNvGp 2026-08-03 17:57:29.330725013 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.tbfGP9 2026-08-03 17:57:29.384724546 +0000
+++ /tmp/new.xTbCQv 2026-08-03 17:57:29.384724546 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.OFzBGn 2026-08-03 17:57:29.434724113 +0000
+++ /tmp/new.JJhdUG 2026-08-03 17:57:29.434724113 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.k02gbr 2026-08-03 17:57:29.495723585 +0000
+++ /tmp/new.4IVRhb 2026-08-03 17:57:29.495723585 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.4Xp0xO 2026-08-03 17:57:29.556723058 +0000
+++ /tmp/new.v8m0cY 2026-08-03 17:57:29.556723058 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.T85b1y 2026-08-03 17:57:29.610722590 +0000
+++ /tmp/new.TW23O4 2026-08-03 17:57:29.610722590 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.7u6R6O 2026-08-03 17:57:29.672722054 +0000
+++ /tmp/new.kIL9gu 2026-08-03 17:57:29.672722054 +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.FrInpO 2026-08-03 17:57:29.736721500 +0000
+++ /tmp/new.EvA6KF 2026-08-03 17:57:29.736721500 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.zRRaLc 2026-08-03 17:57:29.799720955 +0000
+++ /tmp/new.Oe7teS 2026-08-03 17:57:29.799720955 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.VROvNv 2026-08-03 17:57:29.863720401 +0000
+++ /tmp/new.8YMQo6 2026-08-03 17:57:29.863720401 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.4qCciu 2026-08-03 17:57:29.939719744 +0000
+++ /tmp/new.XAxHOS 2026-08-03 17:57:29.939719744 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.XPHbCy 2026-08-03 17:57:29.992719285 +0000
+++ /tmp/new.UiBDkY 2026-08-03 17:57:29.992719285 +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.iEuJQN 2026-08-03 17:57:30.049718792 +0000
+++ /tmp/new.cMp7LH 2026-08-03 17:57:30.049718792 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QOWWrM 2026-08-03 17:57:30.108718281 +0000
+++ /tmp/new.kfFtWs 2026-08-03 17:57:30.109718273 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.X5fmMC 2026-08-03 17:57:30.171717736 +0000
+++ /tmp/new.LeHYvE 2026-08-03 17:57:30.171717736 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.wKWJSW 2026-08-03 17:57:30.232717208 +0000
+++ /tmp/new.aoOKsg 2026-08-03 17:57:30.232717208 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.qb6Ula 2026-08-03 17:57:30.332716343 +0000
+++ /tmp/new.VmYXhT 2026-08-03 17:57:30.332716343 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.L6rQRS 2026-08-03 17:57:30.394715807 +0000
+++ /tmp/new.ik0SaW 2026-08-03 17:57:30.394715807 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.BX8nHF 2026-08-03 17:57:30.451715313 +0000
+++ /tmp/new.tpAod0 2026-08-03 17:57:30.451715313 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.KTnYTv 2026-08-03 17:57:30.517714742 +0000
+++ /tmp/new.7qgVfZ 2026-08-03 17:57:30.517714742 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.mot6gm 2026-08-03 17:57:30.585714154 +0000
+++ /tmp/new.o0SfHz 2026-08-03 17:57:30.585714154 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.JKFRKx 2026-08-03 17:57:30.639713687 +0000
+++ /tmp/new.4E2YIa 2026-08-03 17:57:30.639713687 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.rMPB0k 2026-08-03 17:57:30.691713237 +0000
+++ /tmp/new.R7fMkv 2026-08-03 17:57:30.691713237 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.sht0Xu 2026-08-03 17:57:30.743712787 +0000
+++ /tmp/new.FVSzK3 2026-08-03 17:57:30.744712778 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.TxazMj 2026-08-03 17:57:30.794712345 +0000
+++ /tmp/new.O3FnLe 2026-08-03 17:57:30.794712345 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.6wuecu 2026-08-03 17:57:30.848711878 +0000
+++ /tmp/new.caetni 2026-08-03 17:57:30.848711878 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.PfRPhp 2026-08-03 17:57:30.900711428 +0000
+++ /tmp/new.AFILPE 2026-08-03 17:57:30.900711428 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.KzMryG 2026-08-03 17:57:30.957710935 +0000
+++ /tmp/new.oorD6t 2026-08-03 17:57:30.957710935 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.16AEWc 2026-08-03 17:57:31.007710502 +0000
+++ /tmp/new.58e78Q 2026-08-03 17:57:31.007710502 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.rftZiL 2026-08-03 17:57:31.069709966 +0000
+++ /tmp/new.1YrdfM 2026-08-03 17:57:31.069709966 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.1UTEgb 2026-08-03 17:57:31.130709438 +0000
+++ /tmp/new.odhRHk 2026-08-03 17:57:31.130709438 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.DdlXdP 2026-08-03 17:57:31.206708780 +0000
+++ /tmp/new.Cn0HPY 2026-08-03 17:57:31.206708780 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QgTipF 2026-08-03 17:57:31.261708305 +0000
+++ /tmp/new.xru8Tz 2026-08-03 17:57:31.261708305 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.h7phZt 2026-08-03 17:57:31.312707863 +0000
+++ /tmp/new.JbiPvW 2026-08-03 17:57:31.312707863 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.j5LpD5 2026-08-03 17:57:31.373707335 +0000
+++ /tmp/new.F5H1cW 2026-08-03 17:57:31.373707335 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.9ea4Nn 2026-08-03 17:57:31.433706816 +0000
+++ /tmp/new.kqanTq 2026-08-03 17:57:31.433706816 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QBXuz6 2026-08-03 17:57:31.488706340 +0000
+++ /tmp/new.h79RoV 2026-08-03 17:57:31.489706332 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.iuDdO2 2026-08-03 17:57:31.549705813 +0000
+++ /tmp/new.yJrfxi 2026-08-03 17:57:31.550705804 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.WnQfFJ 2026-08-03 17:57:31.611705276 +0000
+++ /tmp/new.O2r5y8 2026-08-03 17:57:31.611705276 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.wi8oMK 2026-08-03 17:57:31.681704670 +0000
+++ /tmp/new.8n3ign 2026-08-03 17:57:31.681704670 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.jblqOi 2026-08-03 17:57:31.741704151 +0000
+++ /tmp/new.rexK8b 2026-08-03 17:57:31.741704151 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QgcFYN 2026-08-03 17:57:31.801703632 +0000
+++ /tmp/new.4USouF 2026-08-03 17:57:31.801703632 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
+if ($successCodes -contains $installProcess.ExitCode) {
+ Exit 0
+}
+
Exit $installProcess.ExitCode
} catch {
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/genesys-cloud/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/genesys-cloud/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.lTJpJR 2026-08-03 17:57:31.903702749 +0000
+++ /tmp/new.6NW2qs 2026-08-03 17:57:31.903702749 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.l0cegw 2026-08-03 17:57:31.958702274 +0000
+++ /tmp/new.PxbITj 2026-08-03 17:57:31.959702265 +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.yO3bQO 2026-08-03 17:57:32.013701798 +0000
+++ /tmp/new.v4fWUc 2026-08-03 17:57:32.013701798 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.XTraEp 2026-08-03 17:57:32.075701261 +0000
+++ /tmp/new.jylkTN 2026-08-03 17:57:32.076701253 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.1l3FbO 2026-08-03 17:57:32.138700716 +0000
+++ /tmp/new.dpeaNk 2026-08-03 17:57:32.138700716 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.HNMtfB 2026-08-03 17:57:32.190700266 +0000
+++ /tmp/new.6VyAXa 2026-08-03 17:57:32.190700266 +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.lD9PCI 2026-08-03 17:57:32.242699816 +0000
+++ /tmp/new.wpnn6t 2026-08-03 17:57:32.242699816 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.OxIUe6 2026-08-03 17:57:32.304699280 +0000
+++ /tmp/new.7udQNb 2026-08-03 17:57:32.304699280 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.2LXreY 2026-08-03 17:57:32.387698562 +0000
+++ /tmp/new.VMtEQy 2026-08-03 17:57:32.387698562 +0000
@@ -8,7 +8,7 @@
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`" G2MINSTALLFORALLUSERS=1" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`" G2MINSTALLFORALLUSERS=1" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/grammarly-desktop/darwin.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/granola/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/grepwin/windows.json=== Install // 8959087b -> 22e48c46 ===
--- /tmp/old.uEfzEG 2026-08-03 17:57:32.520697411 +0000
+++ /tmp/new.xwgQdb 2026-08-03 17:57:32.521697402 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Q0HqZL 2026-08-03 17:57:32.571696969 +0000
+++ /tmp/new.6ciAot 2026-08-03 17:57:32.571696969 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.foj8jf 2026-08-03 17:57:32.622696528 +0000
+++ /tmp/new.g5Xols 2026-08-03 17:57:32.622696528 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.TMnCxm 2026-08-03 17:57:32.674696078 +0000
+++ /tmp/new.t7lZrG 2026-08-03 17:57:32.674696078 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.VQslGW 2026-08-03 17:57:32.725695637 +0000
+++ /tmp/new.YqKLOQ 2026-08-03 17:57:32.725695637 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.EiaWXl 2026-08-03 17:57:32.782695144 +0000
+++ /tmp/new.c4ciFG 2026-08-03 17:57:32.782695144 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.tMiD76 2026-08-03 17:57:32.833694702 +0000
+++ /tmp/new.lRjk7t 2026-08-03 17:57:32.833694702 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.GrizYp 2026-08-03 17:57:32.884694261 +0000
+++ /tmp/new.fTTjmn 2026-08-03 17:57:32.884694261 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.hQSb1e 2026-08-03 17:57:32.935693820 +0000
+++ /tmp/new.i1l95X 2026-08-03 17:57:32.935693820 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.TN7ooj 2026-08-03 17:57:32.986693379 +0000
+++ /tmp/new.SguO4Z 2026-08-03 17:57:32.986693379 +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.JPPt7Z 2026-08-03 17:57:33.061692730 +0000
+++ /tmp/new.bW7Ul8 2026-08-03 17:57:33.062692721 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.BOQm5f 2026-08-03 17:57:33.140692046 +0000
+++ /tmp/new.g0DSGA 2026-08-03 17:57:33.140692046 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.qqTB7g 2026-08-03 17:57:33.196691561 +0000
+++ /tmp/new.UF6V6L 2026-08-03 17:57:33.196691561 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QjLtrc 2026-08-03 17:57:33.270690921 +0000
+++ /tmp/new.SKpRz4 2026-08-03 17:57:33.270690921 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.rkXwgM 2026-08-03 17:57:33.349690237 +0000
+++ /tmp/new.zHehSB 2026-08-03 17:57:33.349690237 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.FCiQjr 2026-08-03 17:57:33.424689589 +0000
+++ /tmp/new.S4pXWL 2026-08-03 17:57:33.424689589 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.V9T01x 2026-08-03 17:57:33.487689043 +0000
+++ /tmp/new.39n8kD 2026-08-03 17:57:33.487689043 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.TgM5E7 2026-08-03 17:57:33.542688568 +0000
+++ /tmp/new.Lt1pqd 2026-08-03 17:57:33.542688568 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.YradXF 2026-08-03 17:57:33.613687953 +0000
+++ /tmp/new.ok8Oic 2026-08-03 17:57:33.614687944 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.8LhqQI 2026-08-03 17:57:33.663687521 +0000
+++ /tmp/new.LpVhpe 2026-08-03 17:57:33.663687521 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ywvE4g 2026-08-03 17:57:33.740686854 +0000
+++ /tmp/new.eUew96 2026-08-03 17:57:33.741686846 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.IglGOK 2026-08-03 17:57:33.803686309 +0000
+++ /tmp/new.zwtZTv 2026-08-03 17:57:33.804686300 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.j5XNUY 2026-08-03 17:57:33.885685600 +0000
+++ /tmp/new.zjaNKA 2026-08-03 17:57:33.885685600 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.anRBvf 2026-08-03 17:57:33.943685098 +0000
+++ /tmp/new.Uypqgp 2026-08-03 17:57:33.943685098 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.5xr58S 2026-08-03 17:57:33.999684613 +0000
+++ /tmp/new.gJuya7 2026-08-03 17:57:34.000684605 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.QhZRuj 2026-08-03 17:57:34.055684129 +0000
+++ /tmp/new.nKsRix 2026-08-03 17:57:34.055684129 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.pGtfx6 2026-08-03 17:57:34.106683687 +0000
+++ /tmp/new.OPWXQ6 2026-08-03 17:57:34.106683687 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.HBQ8uG 2026-08-03 17:57:34.188682978 +0000
+++ /tmp/new.UZSkrV 2026-08-03 17:57:34.188682978 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.BDgzl0 2026-08-03 17:57:34.259682363 +0000
+++ /tmp/new.hL67Fr 2026-08-03 17:57:34.259682363 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.BhxSAW 2026-08-03 17:57:34.324681801 +0000
+++ /tmp/new.fRumHa 2026-08-03 17:57:34.324681801 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.q4pJdO 2026-08-03 17:57:34.382681299 +0000
+++ /tmp/new.JSsEVP 2026-08-03 17:57:34.382681299 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.T2gOr2 2026-08-03 17:57:34.436680832 +0000
+++ /tmp/new.xWu1y8 2026-08-03 17:57:34.436680832 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.hqcPrf 2026-08-03 17:57:34.521680096 +0000
+++ /tmp/new.yneZU2 2026-08-03 17:57:34.521680096 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.REGKx4 2026-08-03 17:57:34.602679396 +0000
+++ /tmp/new.xcf6yT 2026-08-03 17:57:34.603679387 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.DUz0xu 2026-08-03 17:57:34.663678868 +0000
+++ /tmp/new.1ifmGq 2026-08-03 17:57:34.663678868 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.Wo87T4 2026-08-03 17:57:34.763678002 +0000
+++ /tmp/new.oulm10 2026-08-03 17:57:34.763678002 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.xMYQeO 2026-08-03 17:57:34.881676981 +0000
+++ /tmp/new.cQ1nY3 2026-08-03 17:57:34.881676981 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.RUX3GA 2026-08-03 17:57:34.968676229 +0000
+++ /tmp/new.gewlpC 2026-08-03 17:57:34.968676229 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.vYh9fr 2026-08-03 17:57:35.024675744 +0000
+++ /tmp/new.aXp1GL 2026-08-03 17:57:35.024675744 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ENcRhY 2026-08-03 17:57:35.110675000 +0000
+++ /tmp/new.9Zwkmy 2026-08-03 17:57:35.111674991 +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.Ej0B1v 2026-08-03 17:57:35.167674507 +0000
+++ /tmp/new.KeHGwp 2026-08-03 17:57:35.167674507 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.YF27am 2026-08-03 17:57:35.244673840 +0000
+++ /tmp/new.uyiBwt 2026-08-03 17:57:35.244673840 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.bCmTZh 2026-08-03 17:57:35.300673356 +0000
+++ /tmp/new.bJB5tc 2026-08-03 17:57:35.300673356 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.9RL7qe 2026-08-03 17:57:35.383672638 +0000
+++ /tmp/new.pxln8J 2026-08-03 17:57:35.383672638 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.MVMouw 2026-08-03 17:57:35.466671920 +0000
+++ /tmp/new.tV4x0T 2026-08-03 17:57:35.466671920 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.yD405m 2026-08-03 17:57:35.539671288 +0000
+++ /tmp/new.Wtszlc 2026-08-03 17:57:35.539671288 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.8Xsnyw 2026-08-03 17:57:35.604670726 +0000
+++ /tmp/new.Sorpzq 2026-08-03 17:57:35.604670726 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.0713G2 2026-08-03 17:57:35.670670154 +0000
+++ /tmp/new.rds768 2026-08-03 17:57:35.671670146 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.tcnORJ 2026-08-03 17:57:35.754669428 +0000
+++ /tmp/new.xdrFbS 2026-08-03 17:57:35.754669428 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.T0mWMF 2026-08-03 17:57:35.836668718 +0000
+++ /tmp/new.KFTZG6 2026-08-03 17:57:35.836668718 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.xPC1Sn 2026-08-03 17:57:35.934667870 +0000
+++ /tmp/new.q20C9D 2026-08-03 17:57:35.934667870 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.kd0DkB 2026-08-03 17:57:36.018667143 +0000
+++ /tmp/new.xciUvh 2026-08-03 17:57:36.018667143 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.8VwwIv 2026-08-03 17:57:36.085666563 +0000
+++ /tmp/new.HBMmc3 2026-08-03 17:57:36.085666563 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ldH13U 2026-08-03 17:57:36.147666027 +0000
+++ /tmp/new.tf8Lfr 2026-08-03 17:57:36.147666027 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.nYMSkS 2026-08-03 17:57:36.199665577 +0000
+++ /tmp/new.OokgPg 2026-08-03 17:57:36.199665577 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.adqeIF 2026-08-03 17:57:36.259665058 +0000
+++ /tmp/new.5IGtA5 2026-08-03 17:57:36.259665058 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.YgH1BE 2026-08-03 17:57:36.327664470 +0000
+++ /tmp/new.RhNeYE 2026-08-03 17:57:36.327664470 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.mDHOCC 2026-08-03 17:57:36.416663699 +0000
+++ /tmp/new.AEKPb3 2026-08-03 17:57:36.416663699 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.zzr5Ty 2026-08-03 17:57:36.474663198 +0000
+++ /tmp/new.dVXqzD 2026-08-03 17:57:36.474663198 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.TtXKJM 2026-08-03 17:57:36.542662609 +0000
+++ /tmp/new.B6x7Yg 2026-08-03 17:57:36.542662609 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.ddQBcb 2026-08-03 17:57:36.599662116 +0000
+++ /tmp/new.xoFibh 2026-08-03 17:57:36.600662107 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.S7vFpq 2026-08-03 17:57:36.661661579 +0000
+++ /tmp/new.gOjcEH 2026-08-03 17:57:36.662661571 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
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.25PXll 2026-08-03 17:57:36.739660905 +0000
+++ /tmp/new.PJmEzz 2026-08-03 17:57:36.739660905 +0000
@@ -1,13 +1,21 @@
$logFile = "${env:TEMP}/fleet-install-software.log"
+# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,
+# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.
+$successCodes = @(0, 3010, 1641)
+
try {
$installProcess = Start-Process msiexec.exe `
- -ArgumentList "/quiet /norestart /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `
+ -ArgumentList "/quiet /norestart /lv `"${logFile}`" /i `"${env:INSTALLER_PATH}`"" `
-PassThru -Verb RunAs -Wait
Get-Content $logFile -Tail 500
+if ($successCodes -contains $installProcess.ExitCode) {
+ Exit 0
+}
+
Exit $installProcess.ExitCode
} catch {
=== Uninstall Script (no changes) === |
WalkthroughUpdated maintained-app manifests across Windows and macOS. Most Windows installers now accept MSI exit codes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 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/advanced-installer/windows.json`:
- Line 20: Update the embedded MSI installation script around Start-Process,
$installProcess, and $logFile to validate $env:INSTALLER_PATH with Test-Path
before launching, configure non-zero process exit handling safely, and verify
the log exists before Get-Content; preserve the existing $successCodes behavior
and catch launch failures with a non-zero exit. Apply the same changes in
ee/maintained-apps/outputs/advanced-installer/windows.json:20-20,
ee/maintained-apps/outputs/aircall/windows.json:19-19,
ee/maintained-apps/outputs/airparrot/windows.json:21-21,
ee/maintained-apps/outputs/alacritty/windows.json:20-20,
ee/maintained-apps/outputs/elgato-control-center/windows.json:20-20,
ee/maintained-apps/outputs/elgato-stream-deck/windows.json:20-20,
ee/maintained-apps/outputs/emclient/windows.json:21-21,
ee/maintained-apps/outputs/endnote/windows.json:20-20,
ee/maintained-apps/outputs/epic-games/windows.json:20-20,
ee/maintained-apps/outputs/filebeat/windows.json:20-20, and
ee/maintained-apps/outputs/flexwhere/windows.json:20-20.
In `@ee/maintained-apps/outputs/aws-sam-cli/windows.json`:
- Line 20: Update the installer PowerShell script in every referenced
windows.json entry: ee/maintained-apps/outputs/aws-sam-cli/windows.json:20-20,
ee/maintained-apps/outputs/aws-vpn-client/windows.json:20-20,
ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json:19-19,
ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json:19-19,
ee/maintained-apps/outputs/azure-functions-core-tools/windows.json:20-20,
ee/maintained-apps/outputs/ironpython/windows.json:20-20,
ee/maintained-apps/outputs/jami/windows.json:20-20,
ee/maintained-apps/outputs/keepassxc/windows.json:20-20,
ee/maintained-apps/outputs/lapce/windows.json:20-20,
ee/maintained-apps/outputs/lastpass/windows.json:20-20,
ee/maintained-apps/outputs/libreoffice/windows.json:20-20, and
ee/maintained-apps/outputs/mattermost/windows.json:21-21. Add ErrorAction Stop
to Start-Process so failures reach the catch block, and handle Get-Content
separately so a missing log does not alter the MSI exit-code result.
In `@ee/maintained-apps/outputs/bluej/windows.json`:
- Line 19: Update the BlueJ MSI script’s exit handling after Start-Process
completes so exit codes 3010 and 1641 are treated as successful installs, while
preserving the existing behavior for code 0 and returning failures unchanged.
Use the existing $installProcess.ExitCode flow before the catch block.
In `@ee/maintained-apps/outputs/cinc/windows.json`:
- Line 20: Update the msiexec result check in the uninstaller loop to treat exit
codes 0, 3010, and 1641 as successful. Keep logging and returning unexpected
nonzero exit codes through the existing failure path, while allowing
reboot-required codes to complete with the final success exit.
In `@ee/maintained-apps/outputs/devolutions-workspace/windows.json`:
- Line 20: Update the shared MSI installer script to add ErrorAction Stop to
both Start-Process and Get-Content, ensuring launch and log-read failures enter
catch; then regenerate the manifests. Apply the regenerated change at
ee/maintained-apps/outputs/devolutions-workspace/windows.json:20,
devpod/windows.json:20, dngrep/windows.json:20,
draftable-desktop/windows.json:20, drofus/windows.json:20,
dropbox/windows.json:19, druva-insync/windows.json:20,
duo-desktop/windows.json:21, eclipse-temurin-jdk-11/windows.json:21, and
eclipse-temurin-jdk-17/windows.json:20.
🪄 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: 78d32267-6a69-40dd-8932-b372294fffdc
📒 Files selected for processing (176)
ee/maintained-apps/outputs/1password/windows.jsonee/maintained-apps/outputs/7-zip/windows.jsonee/maintained-apps/outputs/8x8-work/windows.jsonee/maintained-apps/outputs/adobe-acrobat-pro/windows.jsonee/maintained-apps/outputs/adobe-acrobat-reader/windows.jsonee/maintained-apps/outputs/advanced-installer/windows.jsonee/maintained-apps/outputs/aircall/windows.jsonee/maintained-apps/outputs/airparrot/windows.jsonee/maintained-apps/outputs/alacritty/windows.jsonee/maintained-apps/outputs/alfaview/windows.jsonee/maintained-apps/outputs/allway-sync/windows.jsonee/maintained-apps/outputs/amazon-corretto-11/windows.jsonee/maintained-apps/outputs/amazon-corretto-17/windows.jsonee/maintained-apps/outputs/amazon-corretto-21/windows.jsonee/maintained-apps/outputs/amazon-corretto-24/windows.jsonee/maintained-apps/outputs/amazon-corretto-25/windows.jsonee/maintained-apps/outputs/amazon-corretto-26/windows.jsonee/maintained-apps/outputs/amazon-corretto-8/windows.jsonee/maintained-apps/outputs/amazon-corretto-jre-8/windows.jsonee/maintained-apps/outputs/amazon-dcv-client/windows.jsonee/maintained-apps/outputs/amazon-dcv-server/windows.jsonee/maintained-apps/outputs/amazon-redshift-odbc-driver/windows.jsonee/maintained-apps/outputs/amazon-workspaces/windows.jsonee/maintained-apps/outputs/apidog/darwin.jsonee/maintained-apps/outputs/aptakube/windows.jsonee/maintained-apps/outputs/arduino-ide/windows.jsonee/maintained-apps/outputs/audiveris/windows.jsonee/maintained-apps/outputs/autopsy/windows.jsonee/maintained-apps/outputs/aws-cli/windows.jsonee/maintained-apps/outputs/aws-sam-cli/windows.jsonee/maintained-apps/outputs/aws-vpn-client/windows.jsonee/maintained-apps/outputs/azul-zulu-25-jdk/windows.jsonee/maintained-apps/outputs/azul-zulu-25-jre/windows.jsonee/maintained-apps/outputs/azure-functions-core-tools/windows.jsonee/maintained-apps/outputs/beyond-compare/darwin.jsonee/maintained-apps/outputs/bitwig-studio/windows.jsonee/maintained-apps/outputs/blender/windows.jsonee/maintained-apps/outputs/bluej/windows.jsonee/maintained-apps/outputs/box-drive/windows.jsonee/maintained-apps/outputs/box-tools/windows.jsonee/maintained-apps/outputs/browserstacklocal/windows.jsonee/maintained-apps/outputs/bruno/windows.jsonee/maintained-apps/outputs/calibre/windows.jsonee/maintained-apps/outputs/camtasia/windows.jsonee/maintained-apps/outputs/chef-workstation/windows.jsonee/maintained-apps/outputs/cherry-keys/windows.jsonee/maintained-apps/outputs/chrome-remote-desktop/windows.jsonee/maintained-apps/outputs/cinc/windows.jsonee/maintained-apps/outputs/cisco-jabber/windows.jsonee/maintained-apps/outputs/cisco-webex-recorder-and-player/windows.jsonee/maintained-apps/outputs/claude/darwin.jsonee/maintained-apps/outputs/clickup/windows.jsonee/maintained-apps/outputs/clockassist/windows.jsonee/maintained-apps/outputs/clockify/windows.jsonee/maintained-apps/outputs/cloudflare-warp/windows.jsonee/maintained-apps/outputs/cmake-app/windows.jsonee/maintained-apps/outputs/colour-contrast-analyser/windows.jsonee/maintained-apps/outputs/crashplan/windows.jsonee/maintained-apps/outputs/creative-force-kelvin/windows.jsonee/maintained-apps/outputs/crestron-airmedia-peripherals/windows.jsonee/maintained-apps/outputs/crestron-airmedia/windows.jsonee/maintained-apps/outputs/cribl-edge/windows.jsonee/maintained-apps/outputs/crisisgo/windows.jsonee/maintained-apps/outputs/cryptomator/windows.jsonee/maintained-apps/outputs/cyberduck-cli/windows.jsonee/maintained-apps/outputs/cyberduck/windows.jsonee/maintained-apps/outputs/db-browser-for-sqlite/windows.jsonee/maintained-apps/outputs/delinea-connection-manager/windows.jsonee/maintained-apps/outputs/devolutions-launcher/windows.jsonee/maintained-apps/outputs/devolutions-workspace/windows.jsonee/maintained-apps/outputs/devpod/windows.jsonee/maintained-apps/outputs/dngrep/windows.jsonee/maintained-apps/outputs/docker/windows.jsonee/maintained-apps/outputs/draftable-desktop/windows.jsonee/maintained-apps/outputs/drofus/windows.jsonee/maintained-apps/outputs/dropbox/windows.jsonee/maintained-apps/outputs/druva-insync/windows.jsonee/maintained-apps/outputs/duo-desktop/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jdk-11/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jdk-17/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jdk-21/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jdk-8/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jre-11/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jre-17/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jre-21/windows.jsonee/maintained-apps/outputs/eclipse-temurin-jre-8/windows.jsonee/maintained-apps/outputs/egnyte-webedit/windows.jsonee/maintained-apps/outputs/elevate-uc/windows.jsonee/maintained-apps/outputs/elgato-control-center/windows.jsonee/maintained-apps/outputs/elgato-stream-deck/windows.jsonee/maintained-apps/outputs/emclient/windows.jsonee/maintained-apps/outputs/endnote/windows.jsonee/maintained-apps/outputs/epic-games/windows.jsonee/maintained-apps/outputs/filebeat/windows.jsonee/maintained-apps/outputs/flexwhere/windows.jsonee/maintained-apps/outputs/fortify/windows.jsonee/maintained-apps/outputs/gadwin-printscreen-pro/windows.jsonee/maintained-apps/outputs/gadwin-printscreen/windows.jsonee/maintained-apps/outputs/gadwin-screenrecorder/windows.jsonee/maintained-apps/outputs/genesys-cloud/darwin.jsonee/maintained-apps/outputs/genesys-cloud/windows.jsonee/maintained-apps/outputs/geogebra-classic/windows.jsonee/maintained-apps/outputs/git-extensions/windows.jsonee/maintained-apps/outputs/github-desktop/windows.jsonee/maintained-apps/outputs/go/windows.jsonee/maintained-apps/outputs/google-ads-editor/windows.jsonee/maintained-apps/outputs/google-chrome/windows.jsonee/maintained-apps/outputs/google-credential-provider-for-windows/windows.jsonee/maintained-apps/outputs/gotomeeting/windows.jsonee/maintained-apps/outputs/grammarly-desktop/darwin.jsonee/maintained-apps/outputs/granola/windows.jsonee/maintained-apps/outputs/grepwin/windows.jsonee/maintained-apps/outputs/ibm-semeru-jdk-11/windows.jsonee/maintained-apps/outputs/ibm-semeru-jdk-17/windows.jsonee/maintained-apps/outputs/ibm-semeru-jdk-21/windows.jsonee/maintained-apps/outputs/ibm-semeru-jdk-8/windows.jsonee/maintained-apps/outputs/ibm-semeru-jre-11/windows.jsonee/maintained-apps/outputs/ibm-semeru-jre-17/windows.jsonee/maintained-apps/outputs/ibm-semeru-jre-21/windows.jsonee/maintained-apps/outputs/ibm-semeru-jre-8/windows.jsonee/maintained-apps/outputs/imageglass/windows.jsonee/maintained-apps/outputs/imhex/windows.jsonee/maintained-apps/outputs/inkscape/windows.jsonee/maintained-apps/outputs/ironpython/windows.jsonee/maintained-apps/outputs/jami/windows.jsonee/maintained-apps/outputs/keepassxc/windows.jsonee/maintained-apps/outputs/lapce/windows.jsonee/maintained-apps/outputs/lastpass/windows.jsonee/maintained-apps/outputs/libreoffice/windows.jsonee/maintained-apps/outputs/mattermost/windows.jsonee/maintained-apps/outputs/microsoft-edge/windows.jsonee/maintained-apps/outputs/mixxx/windows.jsonee/maintained-apps/outputs/mongodb-compass/windows.jsonee/maintained-apps/outputs/mysqlworkbench/windows.jsonee/maintained-apps/outputs/naps2/windows.jsonee/maintained-apps/outputs/nessus-agent/windows.jsonee/maintained-apps/outputs/nextcloud/windows.jsonee/maintained-apps/outputs/nodejs/windows.jsonee/maintained-apps/outputs/openvpn-connect/windows.jsonee/maintained-apps/outputs/p4v/windows.jsonee/maintained-apps/outputs/pdfsam-basic/windows.jsonee/maintained-apps/outputs/powershell/windows.jsonee/maintained-apps/outputs/prisma-browser/windows.jsonee/maintained-apps/outputs/putty/windows.jsonee/maintained-apps/outputs/reflector/windows.jsonee/maintained-apps/outputs/remote-desktop-manager/windows.jsonee/maintained-apps/outputs/rider/darwin.jsonee/maintained-apps/outputs/royal-tsx/windows.jsonee/maintained-apps/outputs/shapr3d/darwin.jsonee/maintained-apps/outputs/sharefile/windows.jsonee/maintained-apps/outputs/snagit/windows.jsonee/maintained-apps/outputs/sonicwall-netextender/windows.jsonee/maintained-apps/outputs/sourcetree/windows.jsonee/maintained-apps/outputs/tailscale/windows.jsonee/maintained-apps/outputs/textexpander/windows.jsonee/maintained-apps/outputs/tightvnc/windows.jsonee/maintained-apps/outputs/topaz-gigapixel-ai/windows.jsonee/maintained-apps/outputs/topaz-photo-ai/windows.jsonee/maintained-apps/outputs/tortoisegit/windows.jsonee/maintained-apps/outputs/tower/windows.jsonee/maintained-apps/outputs/transmission/windows.jsonee/maintained-apps/outputs/twingate/windows.jsonee/maintained-apps/outputs/ultimaker-cura/windows.jsonee/maintained-apps/outputs/vlc/windows.jsonee/maintained-apps/outputs/wave/windows.jsonee/maintained-apps/outputs/weasis/windows.jsonee/maintained-apps/outputs/webex/windows.jsonee/maintained-apps/outputs/windirstat/windows.jsonee/maintained-apps/outputs/winlogbeat/windows.jsonee/maintained-apps/outputs/wireshark/windows.jsonee/maintained-apps/outputs/wrike/windows.jsonee/maintained-apps/outputs/yarn/windows.jsonee/maintained-apps/outputs/yubico-authenticator/windows.jsonee/maintained-apps/outputs/zoom-outlook-plugin/windows.jsonee/maintained-apps/outputs/zoom/windows.jsonee/maintained-apps/outputs/zulip/windows.json
| ], | ||
| "refs": { | ||
| "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", | ||
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== locate matching files =="
git ls-files | rg '^(ee/maintained-apps/outputs/.+)?/windows\.json$' | head -100
echo "== occurrences of 22e48c46 and script shape =="
rg -n '"22e48c46"' ee/maintained-apps/outputs/*/windows.json || true
echo "== Windows.json candidate contents =="
for f in \
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/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; do
if [ -f "$f" ]; then
echo "--- $f"
cat -n "$f"
fi
done
echo "== PowerShell availability and Start-Process ErrorAction behavior probe =="
if command -v pwsh >/dev/null 2>&1; then
pwsh -NoProfile -NoLogo -Command '
Add-Type -AssemblyName Microsoft.VisualBasic
$path = "C:\NonExistentInstaller.msi"
$tmp = Get-Item "$env:TEMP"
$log = "$tmp/fleet-install-repro-badpath.log"
# Probe non-existing executable path, not a real failed command line
$p = Start-Process pwsh -PassThru -Wait -ArgumentList "-NoProfile", "-Command", "process", "xyz" 2>$null
if ($PSBoundParameters.ContainsKey( \"ErrorAction\" )) {
Write-Output HAS_PARAM
} else {
Write-Output NO_PARAM
}
Write-Output "ExitCode=$( $null -eq $p ? \"null\" : $p.ExitCode )"
Write-Output "StandardError=$( $null -eq $p.StandardError ? \"null\" : $p.StandardError.ReadToEnd() )
'
else
echo "pwsh unavailable"
fiRepository: fleetdm/fleet
Length of output: 5581
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== 22e48c46 windows.json occurrences =="
rg -n '"22e48c46"|\$successCodes |ErrorAction Stop|Get-Content $logFile|Start-Process msiexec' ee/maintained-apps/outputs/*/windows.json || true
echo "== exact files from reviewed list =="
python3 - <<'PY'
from pathlib import Path
for p in [
"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/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",
]:
path=Path(p)
print(f"--- {p} exists={path.exists()} lines={sum(1 for _ in path.open()) if path.exists() else None}")
if path.exists():
for i,line in enumerate(path.read_text(errors="replace").splitlines(),1):
if i in (18,19,20,21,22):
print(f"{i: {line}")
PY
echo "== PowerShell behavior probe =="
if command -v pwsh >/dev/null 2>&1; then
pwsh -NoProfile -NoLogo -Command '
$caught = $false
try {
$tmp = Get-Item "$env:TEMP"
$log = "$tmp/fleet-install-repro-badpath.log"
$proc = Start-Process pwsh -PassThru -Wait -ArgumentList "-NoProfile", "-Command", "process", "xyz" 2>$null
Write-Output "No-start-exception"
Write-Output "ExitCode=$($null -eq $proc ? "null" : $proc.ExitCode)"
} catch {
$caught = $true
Write-Output "Caught=$($_.FullyQualifiedErrorId)"
Write-Output "TargetObject=$($_.TargetObject.GetType().FullName)"
Write-Output "HResult=$($_.Exception.HResult)"
}
Write-Output "Caught=$caught"
'
else
echo "pwsh unavailable"
fi
echo "== Start-Process docs in local repository? =="
rg -n "ErrorAction Stop|Start-Process" 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/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 || trueRepository: fleetdm/fleet
Length of output: 50370
🌐 Web query:
PowerShell Start-Process nonexistent path ErrorAction Stop catches exception target object type ProcessExitCodeException
💡 Result:
In PowerShell, the -ErrorAction Stop common parameter does not reliably catch errors—such as a nonexistent path—when using the Start-Process cmdlet, because Start-Process is a cmdlet that wraps external process creation rather than executing a native PowerShell command [1]. Key points regarding this behavior: 1. CMDLET VS. EXTERNAL COMMANDS: The -ErrorAction parameter is designed for PowerShell cmdlets [1]. While Start-Process is a cmdlet, the actual execution of the target file is performed by the underlying operating system (via.NET's System.Diagnostics.Process) [2][3]. If the target executable is not found, the resulting error is often an InvalidOperationException or Win32Exception thrown by the.NET layer, which may not always be intercepted by PowerShell's try/catch mechanism in the way expected for standard cmdlets [1][4][2]. 2. NONEXISTENT PATH ERRORS: When Start-Process fails to locate an executable (e.g., due to an incorrect path or if the file is not in the system PATH), it frequently outputs an error message to the console instead of throwing a terminating error that can be caught [4][5]. In many environments, it produces an InvalidOperationException [4][5][3]. 3. PROCESS EXIT CODE ISSUES: You mentioned a ProcessExitCodeException. This is not a standard exception thrown by PowerShell's Start-Process cmdlet itself. It is a custom exception type often defined in third-party libraries (such as Azure Pipelines agent code) to specifically handle non-zero exit codes after a process completes [6]. Recommended Workarounds: * MANUAL VALIDATION: To handle potential errors robustly, verify the existence of the file before calling Start-Process using the Test-Path cmdlet: if (Test-Path -Path $MyExecutablePath) { Start-Process -FilePath $MyExecutablePath } else { Write-Error "File not found." } * CHECKING EXIT CODES: If you need to detect failures after the process has started (rather than file-not-found issues), do not rely on -ErrorAction Stop. Instead, if using -PassThru, you can inspect the ExitCode property of the returned process object after it has exited (ensure you access the.Handle property first if you encounter null values due to known issues with -NoNewWindow) [7][8][9]. * DIRECT.NET EXECUTION: For more granular control over exception handling, you can bypass Start-Process and use the System.Diagnostics.Process class directly in PowerShell: $p = [System.Diagnostics.Process]::Start($FileName) $p.WaitForExit [2][7]
Citations:
- 1: https://stackoverflow.com/questions/54443922/erroraction-stop-not-working-in-try-catch
- 2: https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.start?view=net-9.0
- 3: https://stackguides.com/questions/35113917/suppressing-the-command-window-opening-when-using-start-process
- 4: https://qask.org/server/2023/09/25/powershell-on-windows-start-process-fails-if-output-redirection-arguments-are-used
- 5: https://stackoverflow.com/questions/66540033/powershell-complains-when-not-using-absolute-path
- 6: https://github.com/microsoft/azure-pipelines-agent/blob/master/src/Agent.Sdk/ProcessInvoker.cs
- 7: Start-Process does not populate the process object's exit code with NoNewWindow switch PowerShell/PowerShell#20400
- 8: https://stackoverflow.com/questions/44057728/start-process-system-diagnostics-process-exitcode-is-null-with-nonewwindow
- 9: Fix #20400, Start-Process with -NoNewWindow returns null ExitCode on Process object with -PassThru PowerShell/PowerShell#20749
Handle MSI launch failures outside Start-Process’s built-in errors.
-ErrorAction Stop does not cover all Start-Process msiexec.exe failures. Use Test-Path "${env:INSTALLER_PATH}" before launching, handle a missing log, and set $ProcessExitCodesNonZeroExitAction = "Error" or use direct [System.Diagnostics.Process]::Start(...) if non-zero exit codes need to fail safely. Apply the same guard to each embedded 22e48c46 script.
📍 Affects 11 files
ee/maintained-apps/outputs/advanced-installer/windows.json#L20-L20(this comment)ee/maintained-apps/outputs/aircall/windows.json#L19-L19ee/maintained-apps/outputs/airparrot/windows.json#L21-L21ee/maintained-apps/outputs/alacritty/windows.json#L20-L20ee/maintained-apps/outputs/elgato-control-center/windows.json#L20-L20ee/maintained-apps/outputs/elgato-stream-deck/windows.json#L20-L20ee/maintained-apps/outputs/emclient/windows.json#L21-L21ee/maintained-apps/outputs/endnote/windows.json#L20-L20ee/maintained-apps/outputs/epic-games/windows.json#L20-L20ee/maintained-apps/outputs/filebeat/windows.json#L20-L20ee/maintained-apps/outputs/flexwhere/windows.json#L20-L20
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ee/maintained-apps/outputs/advanced-installer/windows.json` at line 20,
Update the embedded MSI installation script around Start-Process,
$installProcess, and $logFile to validate $env:INSTALLER_PATH with Test-Path
before launching, configure non-zero process exit handling safely, and verify
the log exists before Get-Content; preserve the existing $successCodes behavior
and catch launch failures with a non-zero exit. Apply the same changes in
ee/maintained-apps/outputs/advanced-installer/windows.json:20-20,
ee/maintained-apps/outputs/aircall/windows.json:19-19,
ee/maintained-apps/outputs/airparrot/windows.json:21-21,
ee/maintained-apps/outputs/alacritty/windows.json:20-20,
ee/maintained-apps/outputs/elgato-control-center/windows.json:20-20,
ee/maintained-apps/outputs/elgato-stream-deck/windows.json:20-20,
ee/maintained-apps/outputs/emclient/windows.json:21-21,
ee/maintained-apps/outputs/endnote/windows.json:20-20,
ee/maintained-apps/outputs/epic-games/windows.json:20-20,
ee/maintained-apps/outputs/filebeat/windows.json:20-20, and
ee/maintained-apps/outputs/flexwhere/windows.json:20-20.
| ], | ||
| "refs": { | ||
| "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", | ||
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
files=(
"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/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"
)
printf 'PowerShell availability: '
if command -v pwsh >/dev/null 2>&1; then
pwsh -NoProfile -Command '$PSVersionTable.PSVersion.ToString(); Exit 0'
else
echo "pwsh unavailable"
fi
printf '\nMatching scripts:\n'
for f in "${files[@]}"; do
printf '\n--- %s ---\n' "$f"
if [ -f "$f" ]; then
rg -n '"[0-9a-f]{8}":|Start-Process|Get-Content|ExitCode|ErrorAction|ErrorActionPreference|ALLUSERS' "$f" -C 2
else
echo "missing"
fi
done
printf '\nPowerShell behavioral probe (if pwsh available):\n'
if command -v pwsh >/dev/null 2>&1; then
pwsh -NoProfile -Command '
$caught = $false
try {
Set-StrictMode -Version 3.0
$installProcess = Start-Process -PassThru -FilePath nonexistent-msiexec.exe -ArgumentList "-help"
Write-Host "no-start-process-error"
} catch {
$caught = $true
Write-Host ("caught:" + $_.CategoryInfo.Category.ToString())
}
Write-Host ("caught-flag:" + $caught)
'
else
echo "skipped"
fiRepository: fleetdm/fleet
Length of output: 23312
🌐 Web query:
Microsoft PowerShell error handling non-terminating error catch Start-Process -ErrorAction Stop
💡 Result:
In PowerShell, a try/catch block only catches terminating errors [1][2]. Many cmdlets, including Start-Process and Stop-Process, often generate non-terminating errors by default [1][3]. When a non-terminating error occurs, the pipeline continues, and the catch block is bypassed [4][1]. To handle these as terminating errors so that they can be caught by a catch block, you must explicitly escalate the error to a terminating one [4]. 1. Use -ErrorAction Stop: The most reliable way to force a command to trigger a catch block is to add -ErrorAction Stop to the cmdlet [4]. try { Start-Process -FilePath "nonexistent.exe" -ErrorAction Stop } catch { Write-Error "Failed to start process:
Citations:
- 1: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-7.6
- 2: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_try_catch_finally?view=powershell-7.5
- 3: https://devblogs.microsoft.com/powershell/debugging-monad-scripts-part-1-teminating-vs-non-terminating-errorrecord/
- 4: https://devblogs.microsoft.com/scripting/understanding-non-terminating-errors-in-powershell/
- 5: https://forums.powershell.org/t/start-process-error-handling/3803
- 6: Provide guidance as to when Start-Process is appropriate vs. direct / &-based invocation MicrosoftDocs/PowerShell-Docs#6239
- 7: https://learn.microsoft.com/en-us/powershell/scripting/samples/managing-processes-with-process-cmdlets?view=powershell-7.5
- 8: https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/non-terminating-errors?view=powershell-7.6
🏁 Script executed:
#!/bin/bash
set -euo pipefail
if command -v pwsh >/dev/null 2>&1; then
pwsh -NoProfile -Command '
Set-StrictMode -Version 3.0
$caught = $false
try {
$v = $null
$proc = Start-Process -PassThru -FilePath nonexistent-msiexec.exe -ArgumentList "-help"
$v = $proc.ExitCode
Write-Host "no-start-process-error"
} catch {
$caught = $true
Write-Host ("catch-category:" + $_.CategoryInfo.Category.ToString())
}
Write-Host ("caught-flag:" + $caught)
Write-Host ("variable-null:" + ($null -eq $v))
try {
$x = $v.ExitCode
Write-Host "exitcode-property-access-succeeded"
} catch {
Write-Host ("property-error-category:" + $_.CategoryInfo.Category.ToString())
}
$logFileName = "\uFEFFfleet-install-software.log"
$gotContent = $false
try {
try {
$gotContent = Get-Content -LiteralPath $logFileName -Tail 500 | Out-String
Write-Host "get-content-succeeded"
} catch {
Write-Host ("get-content-capture-category:" + $_.CategoryInfo.Category.ToString())
Write-Host ("exception-message:" + $_.Exception.Message)
if ($_ -is [PSInvocationStopped]) {
Write-Host "is-psinvocationstopped:true"
} else {
Write-Host "is-psinvocationstopped:false"
}
}
Write-Host ("got-content-after-inner-catch:" + $gotContent)
} catch {
Write-Host ("outer-catch-saw:" + $_.CategoryInfo.Category.ToString())
Write-Host ("caught-after-log-inner-catch:" + $caught)
}
'
else
echo "pwsh unavailable"
fiRepository: fleetdm/fleet
Length of output: 566
🌐 Web query:
Microsoft PowerShell Get-Content nonexistent file -ErrorAction SilentlyContinue output empty no error
💡 Result:
When you use Get-Content on a nonexistent file with -ErrorAction SilentlyContinue, PowerShell suppresses the error message that would otherwise be printed to the console [1]. Because the error is suppressed, the command effectively returns nothing (an empty output), and the script continues execution [1]. This behavior occurs because Get-Content generates a non-terminating error when it cannot locate a file [2][3]. The -ErrorAction SilentlyContinue parameter specifically instructs PowerShell to suppress non-terminating errors, preventing them from displaying in the console while allowing the script to proceed [2][1]. To verify the success of the operation when using SilentlyContinue, you can use the following approaches: 1. Check the automatic $? variable: This variable is set to $true if the previous command succeeded and $false if it failed [1].
Citations:
- 1: https://netwrix.com/en/resources/blog/powershell-try-catch/
- 2: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-7.6
- 3: https://stackoverflow.com/questions/75044948/powershell-erroraction-silentlycontinue-not-adding-error-to-error-variable
- 4: https://stackoverflow.com/questions/25033668/powershell-cant-catch-unauthorizedaccessexception-thrown-by-get-content
🌐 Web query:
PowerShell Get-Content nonexistent file no ErrorAction default behavior returns empty non-terminating error
💡 Result:
When you attempt to use Get-Content on a nonexistent file, the cmdlet produces a non-terminating error [1][2][3]. The default behavior in PowerShell is to write this error to the error stream (displaying it in the console) and then continue execution of the script or pipeline [1][2][4][3]. It does not return "empty" in the sense of suppressing the error, but rather outputs an error record while returning no content [1][2][3]. Because this is a non-terminating error, it cannot be caught by a standard try/catch block using default settings [1][2][3]. To handle this error programmatically with a catch block, you must escalate the error to a terminating error by setting the -ErrorAction parameter to Stop (e.g., Get-Content -Path "nonexistent.txt" -ErrorAction Stop) [2][5][4][3].
Citations:
- 1: https://jhoneill.github.io/powershell/2022/06/13/Errors.html
- 2: https://rnemeth90.github.io/posts/2023-08-15-powershell-try-catch/
- 3: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-7.6
- 4: https://powershellcommands.com/powershell-error
- 5: https://petri.com/understanding-the-powershell-7-error-variable/
Fix installer error handling in every referenced script.
Current Start-Process can fail while allowing the try block to continue. Then $installProcess remains unset and its non-terminating failure is not caught before the MSI exit-code comparison. Add -ErrorAction Stop to Start-Process, and handle Get-Content separately so missing logs do not change the installer result. This fixes the same issue in all referenced windows.json entries.
Proposed PowerShell adjustment
try {
- $installProcess = Start-Process msiexec.exe `
+ $installProcess = Start-Process msiexec.exe `
-ArgumentList ... `
- -PassThru -Verb RunAs -Wait
+ -PassThru -Verb RunAs -Wait -ErrorAction Stop
- Get-Content $logFile -Tail 500
+ if (Test-Path -LiteralPath $logFile) {
+ Get-Content -LiteralPath $logFile -Tail 500 -ErrorAction Stop
+ }📝 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.
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", | |
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait -ErrorAction Stop\n\nif (Test-Path -LiteralPath $logFile) {\n Get-Content -LiteralPath $logFile -Tail 500 -ErrorAction Stop\n}\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", |
📍 Affects 12 files
ee/maintained-apps/outputs/aws-sam-cli/windows.json#L20-L20(this comment)ee/maintained-apps/outputs/aws-vpn-client/windows.json#L20-L20ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json#L19-L19ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json#L19-L19ee/maintained-apps/outputs/azure-functions-core-tools/windows.json#L20-L20ee/maintained-apps/outputs/ironpython/windows.json#L20-L20ee/maintained-apps/outputs/jami/windows.json#L20-L20ee/maintained-apps/outputs/keepassxc/windows.json#L20-L20ee/maintained-apps/outputs/lapce/windows.json#L20-L20ee/maintained-apps/outputs/lastpass/windows.json#L20-L20ee/maintained-apps/outputs/libreoffice/windows.json#L20-L20ee/maintained-apps/outputs/mattermost/windows.json#L21-L21
🤖 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/aws-sam-cli/windows.json` at line 20, Update the
installer PowerShell script in every referenced windows.json entry:
ee/maintained-apps/outputs/aws-sam-cli/windows.json:20-20,
ee/maintained-apps/outputs/aws-vpn-client/windows.json:20-20,
ee/maintained-apps/outputs/azul-zulu-25-jdk/windows.json:19-19,
ee/maintained-apps/outputs/azul-zulu-25-jre/windows.json:19-19,
ee/maintained-apps/outputs/azure-functions-core-tools/windows.json:20-20,
ee/maintained-apps/outputs/ironpython/windows.json:20-20,
ee/maintained-apps/outputs/jami/windows.json:20-20,
ee/maintained-apps/outputs/keepassxc/windows.json:20-20,
ee/maintained-apps/outputs/lapce/windows.json:20-20,
ee/maintained-apps/outputs/lastpass/windows.json:20-20,
ee/maintained-apps/outputs/libreoffice/windows.json:20-20, and
ee/maintained-apps/outputs/mattermost/windows.json:21-21. Add ErrorAction Stop
to Start-Process so failures reach the catch block, and handle Get-Content
separately so a missing log does not alter the MSI exit-code result.
| ], | ||
| "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", |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
manifest='ee/maintained-apps/outputs/bluej/windows.json'
jq -r '.refs["85459eac"]' "$manifest" |
rg -n 'Exit .*ExitCode|successCodes|3010|1641'Repository: fleetdm/fleet
Length of output: 184
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
manifest='ee/maintained-apps/outputs/bluej/windows.json'
echo "BlueJ 85459eac exit handling:"
jq -r '.refs["85459eac"]' "$manifest" | nl -ba | sed -n '1,80p'
echo
echo "Locate shared exit-code handling references:"
rg -n "successCodes|1641|3010|WIN32_ERROR|ExitCode|exit.*3010|exit.*1641" ee/maintained-apps/outputs -g '*.json' -g '*.ps1' | head -n 120
echo
echo "Candidate files around shared MSI handling:"
fd -e json -e ps1 . ee/maintained-apps/outputs | grep -Ei 'msi|windows|manifest|common|shared' | head -n 80Repository: fleetdm/fleet
Length of output: 221
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
manifest='ee/maintained-apps/outputs/bluej/windows.json'
echo "BlueJ 85459eac exit handling:"
jq -r '.refs["85459eac"]' "$manifest" | awk '{ printf "%7d\t%s\n", NR, $0 }' | sed -n '1,120p'
echo
echo "Locate shared exit-code handling references:"
rg -n "successCodes|1641|3010|WIN32_ERROR|ExitCode|exit.*3010|exit.*1641" ee/maintained-apps/outputs -g '*.json' -g '*.ps1' | head -n 120
echo
echo "Candidate files around shared MSI handling:"
fd -e json -e ps1 . ee/maintained-apps/outputs 2>/dev/null | grep -Ei 'msi|windows|manifest|common|shared|windows\.json|powershell' | head -n 120Repository: fleetdm/fleet
Length of output: 50372
🌐 Web query:
Microsoft MSI return codes ERROR_SUCCESS_REBOOT_REQUIRED 3010 ERROR_SUCCESS_REBOOT_INITIATED 1641 documentation
💡 Result:
In Windows Installer (MSI) operations, both ERROR_SUCCESS_REBOOT_REQUIRED and ERROR_SUCCESS_REBOOT_INITIATED are classified as success codes, indicating that the installation process itself finished successfully while requiring or triggering a system restart to finalize changes [1][2][3]. ERROR_SUCCESS_REBOOT_REQUIRED (3010) This code indicates that the installation completed successfully, but a system restart is required to fully complete the installation operation [1][2]. It does not indicate an error and should be treated as a success signal by deployment tools [1][3]. This code does not apply to installations that trigger a ForceReboot action [1][3]. ERROR_SUCCESS_REBOOT_INITIATED (1641) This code indicates that the installer has proactively initiated a system restart [2][3]. Like 3010, this is considered a success status [1][2][4]. Because system reboots are asynchronous, the restart may occur before this return code is received by the calling process [5]. These return values are specifically defined for Windows Installer functions such as MsiExec.exe and InstMsi.exe [1][3]. Deployment systems and scripts should be configured to recognize both 3010 and 1641 as successful completion states to avoid reporting false installation failures [4].
Citations:
- 1: https://learn.microsoft.com/en-us/windows/win32/msi/error-codes
- 2: https://documentation.help/Windows-Installer/error_codes.htm
- 3: https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/Msi/error-codes.md
- 4: https://help.pdq.com/hc/en-us/articles/220530547-Error-code-1641
- 5: https://documentation.help/Windows-Installer/system_reboots.htm
Handle Windows Installer success reboot codes in BlueJ’s MSI script.
BlueJ installs through msiexec.exe, but the script exits $installProcess.ExitCode without mapping 3010 or 1641 to success. Treat those codes as completed installs so Fleet does not report a successful MSI restart as a failure.
🤖 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
MSI script’s exit handling after Start-Process completes so exit codes 3010 and
1641 are treated as successful installs, while preserving the existing behavior
for code 0 and returning failures unchanged. Use the existing
$installProcess.ExitCode flow before the catch block.
| "34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($process.ExitCode -ne 0) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n", | ||
| "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" | ||
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", | ||
| "34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($process.ExitCode -ne 0) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== target file context =="
sed -n '1,80p' ee/maintained-apps/outputs/cinc/windows.json 2>/dev/null || true
echo
echo "== related uninstall scripts and win-msi exit-code patterns =="
rg -n "Success[Code]|exit[[:space:]]+codes|3010|1641|ERROR_SUCCESS_REBOOT|WinExitCode|MSI exit|msiexec --quiet|/quiet|WindowsInstaller" ee/maintained-apps/outputs -S
echo
echo "== git diff stat/name for maintained-apps =="
git diff --stat HEAD -- ee/maintained-apps/outputs || true
git diff -- ee/maintained-apps/outputs | sed -n '1,220p' || trueRepository: fleetdm/fleet
Length of output: 50370
🌐 Web query:
Microsoft msiexec exit code 3010 1641 reboot required initiated documentation
💡 Result:
When running a Microsoft Windows Installer (msiexec.exe) package, exit codes 1641 and 3010 both indicate that the installation process completed successfully but required a system restart to finish the configuration [1][2]. The primary difference between the two codes is whether the installer triggered the restart itself: Exit Code 1641 (ERROR_SUCCESS_REBOOT_INITIATED): This code indicates that the installer has already initiated a system restart [1][3]. Exit Code 3010 (ERROR_SUCCESS_REBOOT_REQUIRED): This code indicates that a restart is required to complete the installation, but the installer has not initiated the restart itself [1][2][4]. This is common in silent or unattended installations where automatic reboots are suppressed [4][5]. Both codes are considered success codes by the Windows Installer [1][3]. In deployment environments such as System Center Configuration Manager (SCCM) or other software management tools, administrators often configure the deployment to treat both 1641 and 3010 as successful outcomes rather than failures, allowing the system to handle the pending reboot according to the organization's maintenance policy [2][4]. Because these reboots may be asynchronous, the actual system restart might occur before the installer process returns the exit code to the calling environment [6]. Note that these codes do not apply to installs where a ForceReboot action has been executed, as those scenarios use different internal handling [1][6].
Citations:
- 1: https://learn.microsoft.com/en-us/windows/win32/msi/error-codes
- 2: https://stackoverflow.com/questions/61089313/my-installer-package-throws-3010-or-1641-when-run-from-sccm-works-fine-if-i-run
- 3: https://documentation.help/Windows-Installer/error_codes.htm
- 4: https://docs.pdq.com/current-version/Deploy/ms-installer-errors.htm
- 5: https://learn.microsoft.com/en-us/windows/win32/msi/event-logging
- 6: https://learn.microsoft.com/en-us/windows/win32/msi/system-reboots
Treat MSI reboot-required exit codes as success in the Cinc uninstaller.
msiexec returns 3010 or 1641 after a successful uninstall that needs rebooting. The script currently exits with the uninstall code, so Fleet can report this as failure. Add 0, 3010, and 1641 to the success-code check used for msiexec /x.
Proposed fix
+# MSI exit codes that indicate success.
+$successCodes = @(0, 3010, 1641)
+
- if ($process.ExitCode -ne 0) {
+ if ($successCodes -notcontains $process.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.
| "34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($process.ExitCode -ne 0) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" | |
| "34a531d4": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($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" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ee/maintained-apps/outputs/cinc/windows.json` at line 20, Update the msiexec
result check in the uninstaller loop to treat exit codes 0, 3010, and 1641 as
successful. Keep logging and returning unexpected nonzero exit codes through the
existing failure path, while allowing reboot-required codes to complete with the
final success exit.
| "refs": { | ||
| "6b837909": "# 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('{EA58A259-5C39-43E8-9183-EAAB09293D3F}')) {\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", | ||
| "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" | ||
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
while IFS= read -r file; do
script="$(jq -er '.refs["22e48c46"]' "$file")"
grep -Fq -- '-ErrorAction Stop' <<<"$script" || {
printf 'Missing explicit error handling: %s\n' "$file" >&2
exit 1
}
done < <(rg -l '"install_script_ref": "22e48c46"' ee/maintained-apps/outputs -g 'windows.json')Repository: fleetdm/fleet
Length of output: 204
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf 'Repo files matching windows.json in outputs:\n'
git ls-files 'ee/maintained-apps/outputs/*/windows.json' | sed -n '1,120p'
printf '\nOccurrences of 22e48c46:\n'
rg -n '"22e48c46"|install_script_ref|ExitCode|Start-Process msiexec' ee/maintained-apps/outputs/*/windows.json || true
printf '\nInspect first matched manifest:\n'
python3 - <<'PY'
import json, pathlib, re
for p in sorted(pathlib.Path('ee/maintained-apps/outputs').glob('*/windows.json')):
txt = p.read_text()
if '"22e48c46"' in txt:
print(f'--- {p} ---')
data = json.loads(txt)
script = data.get('refs', {}).get('22e48c46')
if script:
print('refs 22e48c46 contains -ErrorAction Stop:', '-ErrorAction Stop' in script)
print('cmdlet error action occurrences:')
for line in script.splitlines():
if 'ErrorAction' in line or 'Start-Process' in line or 'Get-Content' in line:
print(line.strip())
PY
printf '\nMaintained apps cmd source candidates:\n'
git ls-files | rg 'maintained-apps|cmd/maintained-apps|scripts|generate|installer|windows' | sed -n '1,240p'Repository: fleetdm/fleet
Length of output: 50370
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf 'Count of 22e48c46 refs:\n'
rg -c '"install_script_ref": "22e48c46"' ee/maintained-apps/outputs/*/windows.json || true
printf '\nManifests with unhandled cmdlet error actions in ref 22e48c46:\n'
python3 - <<'PY'
import json, pathlib
for p in sorted(pathlib.Path('ee/maintained-apps/outputs').glob('*/windows.json')):
txt = p.read_text(errors='replace')
if '"install_script_ref": "22e48c46"' not in txt:
continue
data = json.loads(txt)
script = data.get('refs', {}).get('22e48c46', '')
start = script.find('try')
body = script[start:] if start != -1 else script
unchecked = []
missing_erroraction_stop = []
for i, line in enumerate(body.splitlines(), 1):
if any(cmd in line for cmd in ['Start-Process', 'Get-Content']):
if '-ErrorAction Stop' not in line:
missing_erroraction_stop.append((i, line.strip()))
unchecked.append((i, line.strip()))
if unchecked:
print(f'--- {p} ---')
for i, line in unchecked:
print(f'cmdlet line: {line}')
for i, line in missing_erroraction_stop:
print(f'no -ErrorAction Stop: {line}')
PY
printf '\nTop 12 cmd source candidates:\n'
git ls-files | rg '(^go.mod$|cmd/maintained-apps|maintained-apps.*\.go|scripts/|fleetctl|\.ts$|\.js$)' | sed -n '1,240p'
printf '\nReferences to 22e48c46 in tracked source (excluding pre-existing output manifests):\n'
rg -n '"22e48c46"|Start-Process.*msiexec|Get-Content.*fleet-install-software' --glob '!ee/maintained-apps/outputs/*' || trueRepository: fleetdm/fleet
Length of output: 50369
🌐 Web query:
Microsoft Learn PowerShell about_error_handling catch block non-terminating error cmdlet ErrorAction Stop
💡 Result:
In PowerShell, try/catch blocks are specifically designed to handle terminating errors, which include both statement-terminating and script-terminating errors [1][2]. Non-terminating errors, such as those typically generated by Write-Error or certain cmdlet failures (like Get-Item on a missing file), do not trigger catch blocks by default and will instead simply write to the error stream while execution continues [2][3]. Using the -ErrorAction Stop parameter (or setting the $ErrorActionPreference variable to 'Stop') is the standard way to elevate a non-terminating error into a terminating error so it can be handled within a catch block [4][2][5]. When -ErrorAction Stop is applied: 1. The engine intercepts the non-terminating error generated by the cmdlet [4]. 2. It wraps the original error in an ActionPreferenceStopException and converts it into a terminating error [4][5]. 3. Because it is now a terminating error, the PowerShell engine will look for a catch block or trap statement in the current or parent scopes [4][1]. 4. Inside the catch block, you can access the original error information via the $_ automatic variable, specifically by accessing $_.Exception.ErrorRecord [4]. Important distinctions to keep in mind: - Scope: In non-advanced scripts, -ErrorAction Stop can escalate errors to script-terminating, causing the entire script to halt unless caught. In advanced functions, it generally acts as a statement-terminating error [4]. - Pipeline Behavior: While -ErrorAction Stop makes an error catchable, it does not necessarily stop the entire execution of a script if the error occurs within a pipeline or a specific statement; it only stops the execution of that specific command or statement [2][6]. To stop the entire script after catching an error, you must explicitly use a command like throw or exit within your catch block [6][7]. - Catching specific errors: You can use typed catch blocks (e.g., catch [System.Management.Automation.ItemNotFoundException]) to handle specific error types escalated by -ErrorAction Stop, allowing for more granular error management [7].
Citations:
- 1: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_try_catch_finally?view=powershell-7.6
- 2: https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-exceptions?view=powershell-7.6
- 3: https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-exceptions?view=powershell-7.4
- 4: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-7.6
- 5: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_commonparameters?view=powershell-7.4
- 6: https://stackoverflow.com/questions/33098608/powershell-non-terminating-error-and-try-catch-block
- 7: https://www.fivenumber.com/powershell-try-catch-not-catching-error/
Fix the shared 22e48c46 MSI installer script once, then regenerate every affected manifest.
This installer reference is used by over 180 Windows manifests, but Start-Process and Get-Content can emit non-terminating cmdlet errors without -ErrorAction Stop. Add -ErrorAction Stop to both commands so launch or log-read failures enter catch instead of continuing and exiting on an unreliable $installProcess.ExitCode.
Proposed shared fix
- -PassThru -Verb RunAs -Wait
+ -PassThru -Verb RunAs -Wait -ErrorAction Stop
-Get-Content $logFile -Tail 500
+Get-Content -Path $logFile -Tail 500 -ErrorAction Stop📝 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.
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", | |
| "22e48c46": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv `\"${logFile}`\" /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait -ErrorAction Stop\n\nGet-Content -Path $logFile -Tail 500 -ErrorAction Stop\n\nif ($successCodes -contains $installProcess.ExitCode) {\n Exit 0\n}\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", |
📍 Affects 10 files
ee/maintained-apps/outputs/devolutions-workspace/windows.json#L20-L20(this comment)ee/maintained-apps/outputs/devpod/windows.json#L20-L20ee/maintained-apps/outputs/dngrep/windows.json#L20-L20ee/maintained-apps/outputs/draftable-desktop/windows.json#L20-L20ee/maintained-apps/outputs/drofus/windows.json#L20-L20ee/maintained-apps/outputs/dropbox/windows.json#L19-L19ee/maintained-apps/outputs/druva-insync/windows.json#L20-L20ee/maintained-apps/outputs/duo-desktop/windows.json#L21-L21ee/maintained-apps/outputs/eclipse-temurin-jdk-11/windows.json#L21-L21ee/maintained-apps/outputs/eclipse-temurin-jdk-17/windows.json#L20-L20
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ee/maintained-apps/outputs/devolutions-workspace/windows.json` at line 20,
Update the shared MSI installer script to add ErrorAction Stop to both
Start-Process and Get-Content, ensuring launch and log-read failures enter
catch; then regenerate the manifests. Apply the regenerated change at
ee/maintained-apps/outputs/devolutions-workspace/windows.json:20,
devpod/windows.json:20, dngrep/windows.json:20,
draftable-desktop/windows.json:20, drofus/windows.json:20,
dropbox/windows.json:19, druva-insync/windows.json:20,
duo-desktop/windows.json:21, eclipse-temurin-jdk-11/windows.json:21, and
eclipse-temurin-jdk-17/windows.json:20.
Automated ingestion of latest Fleet-maintained app data.
Summary by CodeRabbit
Bug Fixes
Updates