12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- diff --git a/src/vs/platform/update/common/update.ts b/src/vs/platform/update/common/update.ts
- index 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.ts
- index 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']
- + });
- + }
- }
|