From 3a35853a5df3f3b17a158f11c9f6b95edc813780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 19 Jul 2017 15:42:56 +0200 Subject: [PATCH] streamline update process --- .../update/electron-main/auto-updater.win32.ts | 16 +++++++++++++++- .../update/electron-main/updateFeedUrl.ts | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/update/electron-main/auto-updater.win32.ts b/src/vs/platform/update/electron-main/auto-updater.win32.ts index 9ef3644e35c..2add374a83a 100644 --- a/src/vs/platform/update/electron-main/auto-updater.win32.ts +++ b/src/vs/platform/update/electron-main/auto-updater.win32.ts @@ -7,6 +7,7 @@ import { localize } from 'vs/nls'; import * as path from 'path'; +import * as fs from 'fs'; import * as pfs from 'vs/base/node/pfs'; import { checksum } from 'vs/base/node/crypto'; import { EventEmitter } from 'events'; @@ -21,7 +22,7 @@ import { IAutoUpdater } from 'vs/platform/update/common/update'; import product from 'vs/platform/node/product'; import { IStorageService } from 'vs/platform/storage/node/storage'; import { dialog } from 'electron'; -import { getUpdateFeedUrl } from './updateFeedUrl'; +import { getUpdateFeedUrl, Win32UninstallPath } from './updateFeedUrl'; interface IUpdate { url: string; @@ -182,6 +183,19 @@ export class Win32AutoUpdaterImpl extends EventEmitter implements IAutoUpdater { return; } + if (process.arch === 'ia32' && this.arch === 'x64') { + const updatePackageContents = `@echo off\r\n"${Win32UninstallPath} /silent"\r\nstart /b "" "${this.updatePackagePath}" /silent /mergetasks=runcode,!desktopicon,!quicklaunchicon\r\n`; + const updatePackagePath = path.join(tmpdir(), 'vscode-update-32-to-64.bat'); + fs.writeFileSync(updatePackagePath, updatePackageContents); + + spawn('cmd.exe', [updatePackagePath], { + detached: true, + stdio: ['ignore', 'ignore', 'ignore'] + }); + + return; + } + spawn(this.updatePackagePath, ['/silent', '/mergetasks=runcode,!desktopicon,!quicklaunchicon'], { detached: true, stdio: ['ignore', 'ignore', 'ignore'] diff --git a/src/vs/platform/update/electron-main/updateFeedUrl.ts b/src/vs/platform/update/electron-main/updateFeedUrl.ts index 78dcd2ccc72..57c56b974cb 100644 --- a/src/vs/platform/update/electron-main/updateFeedUrl.ts +++ b/src/vs/platform/update/electron-main/updateFeedUrl.ts @@ -9,12 +9,14 @@ import * as fs from 'original-fs'; import * as path from 'path'; import product from 'vs/platform/node/product'; +export const Win32UninstallPath = path.join(path.dirname(process.execPath), 'unins000.exe'); + export function getUpdateFeedUrl(channel: string, arch: string = process.arch): string { if (!channel) { return null; } - if (process.platform === 'win32' && !fs.existsSync(path.join(path.dirname(process.execPath), 'unins000.exe'))) { + if (process.platform === 'win32' && !fs.existsSync(Win32UninstallPath)) { return null; } -- GitLab