diff --git a/build/ci.go b/build/ci.go
index 01b183ba29e3b9c51f53feb2b83d82793ff2534b..4e4f85386e753b4eef6f820e9d42fbb6e42e20f5 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -336,12 +336,17 @@ func downloadLinter(cachedir string) string {
 
 	csdb := build.MustLoadChecksums("build/checksums.txt")
 	arch := runtime.GOARCH
-	if arch == "arm" {
+	ext := ".tar.gz"
+
+        if runtime.GOOS == "windows" {
+	        ext = ".zip"
+        }
+        if arch == "arm" {
 		arch += "v" + os.Getenv("GOARM")
 	}
 	base := fmt.Sprintf("golangci-lint-%s-%s-%s", version, runtime.GOOS, arch)
-	url := fmt.Sprintf("https://github.com/golangci/golangci-lint/releases/download/v%s/%s.tar.gz", version, base)
-	archivePath := filepath.Join(cachedir, base+".tar.gz")
+	url := fmt.Sprintf("https://github.com/golangci/golangci-lint/releases/download/v%s/%s%s", version, base, ext)
+	archivePath := filepath.Join(cachedir, base+ext)
 	if err := csdb.DownloadFile(url, archivePath); err != nil {
 		log.Fatal(err)
 	}
diff --git a/internal/build/download.go b/internal/build/download.go
index 0ed0b5e130d1f46332575a0cb9d36bc94418f932..efb223b3270102663d6e732b6ffe94caff58521b 100644
--- a/internal/build/download.go
+++ b/internal/build/download.go
@@ -58,7 +58,7 @@ func (db *ChecksumDB) Verify(path string) error {
 	}
 	fileHash := hex.EncodeToString(h.Sum(nil))
 	if !db.findHash(filepath.Base(path), fileHash) {
-		return fmt.Errorf("invalid file hash %s", fileHash)
+		return fmt.Errorf("invalid file hash %s for %s", fileHash, filepath.Base(path))
 	}
 	return nil
 }