@@ -442,6 +442,13 @@ export class DownloadTask {
442442 await this . downloadFile ( params ) ;
443443 await this . recreateDirectory ( params . unzipDirectory ) ;
444444 await zlib . decompressFile ( params . targetFile , params . unzipDirectory ) ;
445+ try {
446+ if ( fileIo . accessSync ( params . targetFile ) ) {
447+ await fileIo . unlink ( params . targetFile ) ;
448+ }
449+ } catch ( e ) {
450+ console . error ( 'Failed to delete temporary zip file after decompression:' , e ) ;
451+ }
445452 }
446453
447454 private async doPatchFromApp ( params : DownloadTaskParams ) : Promise < void > {
@@ -484,6 +491,13 @@ export class DownloadTask {
484491 ) ,
485492 params . unzipDirectory ,
486493 ) ;
494+ try {
495+ if ( fileIo . accessSync ( params . targetFile ) ) {
496+ await fileIo . unlink ( params . targetFile ) ;
497+ }
498+ } catch ( e ) {
499+ console . error ( 'Failed to delete temporary zip file after patching:' , e ) ;
500+ }
487501 }
488502
489503 private async doPatchFromPpk ( params : DownloadTaskParams ) : Promise < void > {
@@ -517,6 +531,13 @@ export class DownloadTask {
517531 enableMerge : plan . enableMerge ,
518532 } ) ;
519533 console . info ( 'Patch from PPK completed' ) ;
534+ try {
535+ if ( fileIo . accessSync ( params . targetFile ) ) {
536+ await fileIo . unlink ( params . targetFile ) ;
537+ }
538+ } catch ( e ) {
539+ console . error ( 'Failed to delete temporary patch file after patching:' , e ) ;
540+ }
520541 }
521542
522543 private async copyFromResource (
@@ -548,27 +569,35 @@ export class DownloadTask {
548569 parentDirs . map ( dir => this . ensureDirectory ( dir ) ) ,
549570 ) ;
550571 await Promise . all (
551- targets . map ( target => this . writeFileContent ( target , mediaBuffer . buffer ) ) ,
572+ targets . map ( target => this . writeFileContent ( target , mediaBuffer ) ) ,
552573 ) ;
553574 continue ;
554575 }
555576 const fromContent = await resourceManager . getRawFd ( currentFrom ) ;
556- const [ firstTarget , ...restTargets ] = targets ;
557- const parentDirs = [
558- ...new Set (
559- targets . map ( t => t . substring ( 0 , t . lastIndexOf ( '/' ) ) ) . filter ( Boolean ) ,
560- ) ,
561- ] ;
562- await Promise . all (
563- parentDirs . map ( dir => this . ensureDirectory ( dir ) )
564- ) ;
565- if ( fileIo . accessSync ( firstTarget ) ) {
566- await fileIo . unlink ( firstTarget ) ;
577+ try {
578+ const [ firstTarget , ...restTargets ] = targets ;
579+ const parentDirs = [
580+ ...new Set (
581+ targets . map ( t => t . substring ( 0 , t . lastIndexOf ( '/' ) ) ) . filter ( Boolean ) ,
582+ ) ,
583+ ] ;
584+ await Promise . all (
585+ parentDirs . map ( dir => this . ensureDirectory ( dir ) )
586+ ) ;
587+ if ( fileIo . accessSync ( firstTarget ) ) {
588+ await fileIo . unlink ( firstTarget ) ;
589+ }
590+ saveFileToSandbox ( fromContent , firstTarget ) ;
591+ await Promise . all (
592+ restTargets . map ( target => this . copySandboxFile ( firstTarget , target ) ) ,
593+ ) ;
594+ } finally {
595+ try {
596+ await resourceManager . closeRawFd ( currentFrom ) ;
597+ } catch ( closeError ) {
598+ console . error ( `Failed to close raw fd for ${ currentFrom } :` , closeError ) ;
599+ }
567600 }
568- saveFileToSandbox ( fromContent , firstTarget ) ;
569- await Promise . all (
570- restTargets . map ( target => this . copySandboxFile ( firstTarget , target ) ) ,
571- ) ;
572601 }
573602 } catch ( error ) {
574603 error . message =
@@ -589,7 +618,7 @@ export class DownloadTask {
589618 params . unzipDirectory ,
590619 params . hash || '' ,
591620 params . originHash || '' ,
592- 7 ,
621+ 3 ,
593622 ) ;
594623 } catch ( error ) {
595624 error . message = 'Cleanup failed:' + error . message ;
0 commit comments