@@ -26,29 +26,7 @@ export async function downloadAndInstallPackages(
2626 telemetryReporter ?: ITelemetryReporter ,
2727 token ?: CancellationToken
2828) : Promise < boolean > {
29- function sendInstallationFailureTelemetry ( pkg : AbsolutePathPackage , installationStage : string , error : any ) : void {
30- if ( ! telemetryReporter ) {
31- return ;
32- }
33-
34- const telemetryProperties : { [ key : string ] : string } = {
35- installStage : installationStage ,
36- packageId : pkg . id ,
37- isOptional : pkg . isOptional ? 'true' : 'false' ,
38- } ;
39-
40- if ( error instanceof NestedError && error . err instanceof PackageError ) {
41- telemetryProperties [ 'error.message' ] = error . err . message ;
42- telemetryProperties [ 'error.packageUrl' ] = error . err . pkg . url ;
43- } else if ( error instanceof PackageError ) {
44- telemetryProperties [ 'error.message' ] = error . message ;
45- telemetryProperties [ 'error.packageUrl' ] = error . pkg . url ;
46- }
47-
48- const eventName = pkg . isOptional ? 'OptionalPackageInstallationFailed' : 'PackageInstallationFailed' ;
49- telemetryReporter . sendTelemetryEvent ( eventName , telemetryProperties ) ;
50- }
51-
29+ let downloadFailed = false ;
5230 eventStream . post ( new PackageInstallStart ( ) ) ;
5331 for ( const pkg of packages ) {
5432 let installationStage = 'touchBeginFile' ;
@@ -89,12 +67,7 @@ export async function downloadAndInstallPackages(
8967 // Send telemetry for the failure
9068 sendInstallationFailureTelemetry ( pkg , installationStage , error ) ;
9169
92- // If the package is optional, log and continue with the next package
93- if ( pkg . isOptional ) {
94- continue ;
95- }
96-
97- return false ;
70+ downloadFailed = true ;
9871 } finally {
9972 try {
10073 if ( await installFileExists ( pkg . installPath , InstallFileType . Begin ) ) {
@@ -106,5 +79,27 @@ export async function downloadAndInstallPackages(
10679 }
10780 }
10881
109- return true ;
82+ return ! downloadFailed ;
83+
84+ function sendInstallationFailureTelemetry ( pkg : AbsolutePathPackage , installationStage : string , error : any ) : void {
85+ if ( ! telemetryReporter ) {
86+ return ;
87+ }
88+
89+ const telemetryProperties : { [ key : string ] : string } = {
90+ installStage : installationStage ,
91+ packageId : pkg . id ,
92+ isOptional : pkg . isOptional ? 'true' : 'false' ,
93+ } ;
94+
95+ if ( error instanceof NestedError && error . err instanceof PackageError ) {
96+ telemetryProperties [ 'error.message' ] = error . err . message ;
97+ telemetryProperties [ 'error.packageUrl' ] = error . err . pkg . url ;
98+ } else if ( error instanceof PackageError ) {
99+ telemetryProperties [ 'error.message' ] = error . message ;
100+ telemetryProperties [ 'error.packageUrl' ] = error . pkg . url ;
101+ }
102+
103+ telemetryReporter . sendTelemetryEvent ( 'PackageInstallationFailed' , telemetryProperties ) ;
104+ }
110105}
0 commit comments