From 34eef8e97dbcab6a3e4a91231948e2307fcd4c2f Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Fri, 10 May 2019 14:08:43 -0700 Subject: [PATCH] Add download task for SsmsMin (#5460) * Add SsmsMin files * no message * Add script to install extension --- build/gulpfile.vscode.js | 22 +++++++++++++++++++ extensions/admin-tool-ext-win/.vscodeignore | 1 + .../admin-tool-ext-win/InstallSsmsMin.bat | 4 ++++ extensions/admin-tool-ext-win/src/config.json | 12 ++++++++++ extensions/admin-tool-ext-win/src/main.ts | 4 +++- 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 extensions/admin-tool-ext-win/InstallSsmsMin.bat create mode 100644 extensions/admin-tool-ext-win/src/config.json diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 917e65fb99..c988384009 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -703,3 +703,25 @@ function installService() { gulp.task('install-sqltoolsservice', () => { return installService(); }); + +function installSsmsMin() { + let config = require('../extensions/admin-tool-ext-win/src/config.json'); + return platformInfo.getCurrent().then(p => { + let runtime = p.runtimeId; + // fix path since it won't be correct + config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory); + var installer = new serviceDownloader(config); + let serviceInstallFolder = installer.getInstallDirectory(runtime); + console.log('Cleaning up the install folder: ' + serviceInstallFolder); + return del(serviceInstallFolder + '/*').then(() => { + console.log('Installing the service. Install folder: ' + serviceInstallFolder); + return installer.installService(runtime); + }, delError => { + console.log('failed to delete the install folder error: ' + delError); + }); + }); +} + +gulp.task('install-ssmsmin', () => { + return installSsmsMin(); +}); diff --git a/extensions/admin-tool-ext-win/.vscodeignore b/extensions/admin-tool-ext-win/.vscodeignore index 97a2f5b2ea..c84cb57447 100644 --- a/extensions/admin-tool-ext-win/.vscodeignore +++ b/extensions/admin-tool-ext-win/.vscodeignore @@ -2,3 +2,4 @@ out/test/** src/** .gitignore tsconfig.json +InstallSsmsMin.bat \ No newline at end of file diff --git a/extensions/admin-tool-ext-win/InstallSsmsMin.bat b/extensions/admin-tool-ext-win/InstallSsmsMin.bat new file mode 100644 index 0000000000..49e6dbf88a --- /dev/null +++ b/extensions/admin-tool-ext-win/InstallSsmsMin.bat @@ -0,0 +1,4 @@ +@echo off + +REM Run this command to install SsmsMin for local development testing +gulp install-ssmsmin \ No newline at end of file diff --git a/extensions/admin-tool-ext-win/src/config.json b/extensions/admin-tool-ext-win/src/config.json new file mode 100644 index 0000000000..8a0b4f53c5 --- /dev/null +++ b/extensions/admin-tool-ext-win/src/config.json @@ -0,0 +1,12 @@ +{ + "downloadUrl": "https://sqlopsextensions.blob.core.windows.net/tools/ssmsmin/{#version#}/{#fileName#}", + "version": "15.0.18120.0", + "downloadFileNames": { + "Windows_64": "SsmsMin-15.0.18120.0-win-x64.zip", + "Windows_86": "SsmsMin-15.0.18120.0-win-x86.zip" + }, + "installDirectory": "ssmsmin/{#platform#}/{#version#}", + "executableFiles": [ + "SsmsMin.exe" + ] +} \ No newline at end of file diff --git a/extensions/admin-tool-ext-win/src/main.ts b/extensions/admin-tool-ext-win/src/main.ts index 2cc3a9a4fb..dd968d2ae8 100644 --- a/extensions/admin-tool-ext-win/src/main.ts +++ b/extensions/admin-tool-ext-win/src/main.ts @@ -12,6 +12,8 @@ import { doubleEscapeSingleQuotes, backEscapeDoubleQuotes } from './utils'; import { ChildProcess, exec } from 'child_process'; const localize = nls.loadMessageBundle(); +const ssmsMinVer = JSON.parse(JSON.stringify(require('./config.json'))).version; + let exePath: string; const runningProcesses: Map = new Map(); @@ -66,7 +68,7 @@ export async function activate(context: vscode.ExtensionContext): Promise // This is for Windows-specific support so do nothing on other platforms if (process.platform === 'win32') { Telemetry.sendTelemetryEvent('startup/ExtensionActivated'); - exePath = path.join(context.extensionPath, 'ssmsmin', 'ssmsmin.exe'); + exePath = path.join(context.extensionPath, 'ssmsmin', 'Windows', ssmsMinVer, 'ssmsmin.exe'); registerCommands(context); } }