cmd/release: build Windows MSI files

Change-Id: I4a5b1bd900f7d0eead67cb465573496dc2f397b9
Reviewed-on: https://go-review.googlesource.com/12283
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/cmd/release/release.go b/cmd/release/release.go
index 1c5b780..0772b86 100644
--- a/cmd/release/release.go
+++ b/cmd/release/release.go
@@ -204,12 +204,6 @@
 		return err
 	}
 
-	// Write out version file.
-	b.logf("Writing VERSION file.")
-	if err := client.Put(strings.NewReader(*version), "go/VERSION", 0644); err != nil {
-		return err
-	}
-
 	// Push source to VM
 	b.logf("Pushing source to VM.")
 	const (
@@ -246,6 +240,12 @@
 		}
 	}
 
+	// Write out version file.
+	b.logf("Writing VERSION file.")
+	if err := client.Put(strings.NewReader(*version), "go/VERSION", 0644); err != nil {
+		return err
+	}
+
 	b.logf("Cleaning goroot (pre-build).")
 	if err := client.RemoveAll(addPrefix(goDir, preBuildCleanFiles)...); err != nil {
 		return err
@@ -341,6 +341,11 @@
 		return err
 	}
 
+	b.logf("Cleaning goroot (post-build).")
+	if err := client.RemoveAll(addPrefix(goDir, postBuildCleanFiles)...); err != nil {
+		return err
+	}
+
 	b.logf("Pushing and running releaselet.")
 	// TODO(adg): locate releaselet.go in GOPATH
 	const releaselet = "releaselet.go"
@@ -357,7 +362,7 @@
 		return err
 	}
 
-	cleanFiles := append(addPrefix(goDir, postBuildCleanFiles), goPath, releaselet, go14)
+	cleanFiles := []string{goPath, releaselet, go14}
 
 	switch b.OS {
 	case "darwin":
@@ -367,19 +372,16 @@
 		}
 		cleanFiles = append(cleanFiles, "pkg")
 	case "windows":
-		if false { // TODO(adg): implement this
-			filename := *version + "." + b.String() + ".msi"
-			if err := b.fetchFile(client, filename, "msi"); err != nil {
-				return err
-			}
-			cleanFiles = append(cleanFiles, "msi")
+		filename := *version + "." + b.String() + ".msi"
+		if err := b.fetchFile(client, filename, "msi"); err != nil {
+			return err
 		}
+		cleanFiles = append(cleanFiles, "msi")
 	}
 
-	b.logf("Cleaning goroot (post-build).")
-
 	// Need to delete everything except the final "go" directory,
 	// as we make the tarball relative to workdir.
+	b.logf("Cleaning workdir.")
 	if err := client.RemoveAll(cleanFiles...); err != nil {
 		return err
 	}