@@ -52,7 +52,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
5252import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils' ;
5353import { ITelemetryAppenderChannel , TelemetryAppenderClient } from 'vs/platform/telemetry/common/telemetryIpc' ;
5454import { TelemetryService , ITelemetryServiceConfig } from 'vs/platform/telemetry/common/telemetryService' ;
55- import { resolveCommonProperties } from 'vs/platform/telemetry/node/commonProperties' ;
55+ import { resolveCommonProperties , machineIdStorageKey , machineIdIpcChannel } from 'vs/platform/telemetry/node/commonProperties' ;
5656import { getDelayedChannel } from 'vs/base/parts/ipc/common/ipc' ;
5757import product from 'vs/platform/node/product' ;
5858import pkg from 'vs/platform/node/package' ;
@@ -94,6 +94,7 @@ function main(accessor: ServicesAccessor, mainIpcServer: Server, userEnv: platfo
9494 const environmentService = accessor . get ( IEnvironmentService ) ;
9595 const lifecycleService = accessor . get ( ILifecycleService ) ;
9696 const configurationService = accessor . get ( IConfigurationService ) as ConfigurationService < any > ;
97+ const storageService = accessor . get ( IStorageService ) ;
9798 let windowsMainService : IWindowsMainService ;
9899
99100 // We handle uncaught exceptions here to prevent electron from opening a dialog to the user
@@ -118,6 +119,11 @@ function main(accessor: ServicesAccessor, mainIpcServer: Server, userEnv: platfo
118119 }
119120 } ) ;
120121
122+ ipc . on ( machineIdIpcChannel , ( event , machineId : string ) => {
123+ logService . log ( 'IPC#vscode-machineId' ) ;
124+ storageService . setItem ( machineIdStorageKey , machineId ) ;
125+ } ) ;
126+
121127 logService . log ( 'Starting VS Code in verbose mode' ) ;
122128 logService . log ( `from: ${ environmentService . appRoot } ` ) ;
123129 logService . log ( 'args:' , environmentService . args ) ;
@@ -159,7 +165,11 @@ function main(accessor: ServicesAccessor, mainIpcServer: Server, userEnv: platfo
159165 if ( environmentService . isBuilt && ! environmentService . isExtensionDevelopment && ! ! product . enableTelemetry ) {
160166 const channel = getDelayedChannel < ITelemetryAppenderChannel > ( sharedProcessClient . then ( c => c . getChannel ( 'telemetryAppender' ) ) ) ;
161167 const appender = new TelemetryAppenderClient ( channel ) ;
162- const commonProperties = resolveCommonProperties ( product . commit , pkg . version ) ;
168+ const commonProperties = resolveCommonProperties ( product . commit , pkg . version )
169+ . then ( result => Object . defineProperty ( result , 'common.machineId' , {
170+ get : ( ) => storageService . getItem ( machineIdStorageKey ) ,
171+ enumerable : true
172+ } ) ) ;
163173 const piiPaths = [ environmentService . appRoot , environmentService . extensionsPath ] ;
164174 const config : ITelemetryServiceConfig = { appender, commonProperties, piiPaths } ;
165175 services . set ( ITelemetryService , new SyncDescriptor ( TelemetryService , config ) ) ;
0 commit comments