| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | diff --git a/src/vs/platform/update/common/update.ts b/src/vs/platform/update/common/update.tsindex 0f79e17..97ea778 100644--- a/src/vs/platform/update/common/update.ts+++ b/src/vs/platform/update/common/update.ts@@ -48,3 +48,4 @@ export const enum UpdateType { 	Archive,-	Snap+	Snap,+	WindowsInstaller, }diff --git a/src/vs/platform/update/electron-main/updateService.win32.ts b/src/vs/platform/update/electron-main/updateService.win32.tsindex 99bf807..27e77f0 100644--- a/src/vs/platform/update/electron-main/updateService.win32.ts+++ b/src/vs/platform/update/electron-main/updateService.win32.ts@@ -41,5 +41,9 @@ function getUpdateType(): UpdateType { 	if (typeof _updateType === 'undefined') {-		_updateType = fs.existsSync(path.join(path.dirname(process.execPath), 'unins000.exe'))-			? UpdateType.Setup-			: UpdateType.Archive;+		if (fs.existsSync(path.join(path.dirname(process.execPath), 'unins000.exe'))) {+			_updateType = UpdateType.Setup;+		} else if (path.basename(path.normalize(path.join(process.execPath, '..', '..'))) === 'Program Files') {+			_updateType = UpdateType.WindowsInstaller;+		} else {+			_updateType = UpdateType.Archive;+		} 	}@@ -103,6 +107,16 @@ export class Win32UpdateService extends AbstractUpdateService implements IRelaun -		if (getUpdateType() === UpdateType.Archive) {-			platform += '-archive';-		} else if (this.productService.target === 'user') {-			platform += '-user';+		switch (getUpdateType()) {+			case UpdateType.Archive:+				platform += '-archive';+				break;+			case UpdateType.WindowsInstaller:+				platform += '-msi';+				break;+			default:+				if (this.productService.target === 'user') {+					platform += '-user';+				}+				else {+					platform += '-system';+				} 		}@@ -257,6 +271,14 @@ export class Win32UpdateService extends AbstractUpdateService implements IRelaun 		} else {-			spawn(this.availableUpdate.packagePath, ['/silent', '/log', '/mergetasks=runcode,!desktopicon,!quicklaunchicon'], {-				detached: true,-				stdio: ['ignore', 'ignore', 'ignore']-			});+			const type = getUpdateType();+			if (type == UpdateType.WindowsInstaller) {+				spawn('msiexec.exe', ['/i', this.availableUpdate.packagePath], {+					detached: true,+					stdio: ['ignore', 'ignore', 'ignore']+				});+			} else {+				spawn(this.availableUpdate.packagePath, ['/silent', '/log', '/mergetasks=runcode,!desktopicon,!quicklaunchicon'], {+					detached: true,+					stdio: ['ignore', 'ignore', 'ignore']+				});+			} 		}
 |