VC++ extracted MSIs: bypass LaunchCondition CA via NOVSUI=1
The extracted VC++ 2008/2010/2012/2013/2022 MSIs have a hardcoded
CustomAction CA_LaunchCondition (type 19 = msidbCustomActionTypeError)
whose Target is "To install this product, please run Setup.exe. For
other installation options, see the Installation section of ReadMe.htm."
The CA's Condition row in InstallExecuteSequence is:
NOT( (ADDEPLOY = 1 OR NOVSUI = 1 OR VSEXTUI = 1 OR
ADVERTISED = 1 OR ProductState >= 1) )
So it fires (= aborts the install with that error) unless one of those
sentinel properties is set on the command line. The 2008 MSI uses a
slightly different name (CA_LaunchCondition_5122) and a different set:
NOT( (USING_EXUIH = 1 OR USING_EXUIH_SILENT = 1 OR ProductState >= 1) )
The bootstrappers normally set NOVSUI=1 / USING_EXUIH_SILENT=1 to
identify themselves as non-interactive installers. When we run the
extracted MSI directly via msiexec, the property isn't set, the CA
fires, msiexec returns 1603 with MSI Note 1: 1708, and the install
rolls back.
Fix: pass both properties unconditionally on every VC++ install. MSIs
ignore unknown properties, so one args string works for all of them.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
"Name": "VC++ Redistributable 2008 x86",
|
||||
"Installer": "vcredist/2008/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{9BE518E6-ECC6-35A9-88E4-87755C07200F}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -28,7 +28,7 @@
|
||||
"Name": "VC++ Redistributable 2010 x86",
|
||||
"Installer": "vcredist/2010/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -38,7 +38,7 @@
|
||||
"Name": "VC++ Redistributable 2012 x86 (Minimum)",
|
||||
"Installer": "vcredist/2012-min/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -47,7 +47,7 @@
|
||||
"Name": "VC++ Redistributable 2012 x86 (Additional)",
|
||||
"Installer": "vcredist/2012-add/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{B175520C-86A2-35A7-8619-86DC379688B9}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -57,7 +57,7 @@
|
||||
"Name": "VC++ Redistributable 2013 x86 (Minimum)",
|
||||
"Installer": "vcredist/2013-min/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -66,7 +66,7 @@
|
||||
"Name": "VC++ Redistributable 2013 x86 (Additional)",
|
||||
"Installer": "vcredist/2013-add/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -76,7 +76,7 @@
|
||||
"Name": "VC++ Redistributable 2022 x86 (Minimum)",
|
||||
"Installer": "vcredist/2022-min/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{922480B5-CAEB-4B1B-AAA4-9716EFDCE26B}",
|
||||
"PCTypes": ["*"]
|
||||
@@ -85,7 +85,7 @@
|
||||
"Name": "VC++ Redistributable 2022 x86 (Additional)",
|
||||
"Installer": "vcredist/2022-add/installer.msi",
|
||||
"Type": "MSI",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress",
|
||||
"InstallArgs": "/qn /norestart REBOOT=ReallySuppress NOVSUI=1 USING_EXUIH_SILENT=1",
|
||||
"DetectionMethod": "Registry",
|
||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{C18FB403-1E88-43C8-AD8A-CED50F23DE8B}",
|
||||
"PCTypes": ["*"]
|
||||
|
||||
Reference in New Issue
Block a user