@@ -584,6 +584,32 @@ function Fetch-Dependencies {
584
584
}
585
585
}
586
586
587
+ function Extract-ZipFile {
588
+ param (
589
+ [string ]$ZipFileName ,
590
+ [string ]$BinaryCache ,
591
+ [string ]$ExtractPath
592
+ )
593
+
594
+ $zipFilePath = Join-Path - Path $BinaryCache - ChildPath $ZipFileName
595
+ $extractedPath = Join-Path - Path $BinaryCache - ChildPath $ExtractPath
596
+
597
+ # Check if the extracted directory already exists and is up to date.
598
+ if (Test-Path $extractedPath ) {
599
+ $zipLastWriteTime = (Get-Item $zipFilePath ).LastWriteTime
600
+ $extractedLastWriteTime = (Get-Item $extractedPath ).LastWriteTime
601
+ # Compare the last write times
602
+ if ($zipLastWriteTime -le $extractedLastWriteTime ) {
603
+ Write-Output " '$ZipFileName ' is already extracted and up to date."
604
+ return
605
+ }
606
+ }
607
+
608
+ Write-Output " Extracting '$ZipFileName ' ..."
609
+ New-Item - ItemType Directory - ErrorAction Ignore - Path $BinaryCache | Out-Null
610
+ Expand-Archive - Path $zipFilePath - DestinationPath $BinaryCache - Force
611
+ }
612
+
587
613
$WiXVersion = " 4.0.4"
588
614
$WiXURL = " https://www.nuget.org/api/v2/package/wix/$WiXVersion "
589
615
$WiXHash = " A9CA12214E61BB49430A8C6E5E48AC5AE6F27DC82573B5306955C4D35F2D34E2"
@@ -635,10 +661,7 @@ function Fetch-Dependencies {
635
661
$NDKHash = " A478D43D4A45D0D345CDA6BE50D79642B92FB175868D9DC0DFC86181D80F691E"
636
662
DownloadAndVerify $NDKURL " $BinaryCache \android-ndk-$AndroidNDKVersion -windows.zip" $NDKHash
637
663
638
- # TODO(compnerd) stamp/validate that we need to re-extract
639
- Write-Output " Extracting Android NDK $AndroidNDKVersion ..."
640
- New-Item - ItemType Directory - ErrorAction Ignore $BinaryCache | Out-Null
641
- Expand-Archive - Path $BinaryCache \android- ndk- $AndroidNDKVersion - windows.zip - Destination $BinaryCache - Force
664
+ Extract- ZipFile - ZipFileName " android-ndk-$AndroidNDKVersion -windows.zip" - BinaryCache $BinaryCache - ExtractPath " android-ndk-$AndroidNDKVersion "
642
665
}
643
666
644
667
if ($WinSDKVersion ) {
0 commit comments