Index: Setup/updateFileInfo.tcl
==================================================================
--- Setup/updateFileInfo.tcl
+++ Setup/updateFileInfo.tcl
@@ -81,14 +81,14 @@
[string length $outputDirectory] == 0} then {
set outputDirectory [file join $path Output]
}
#
-# NOTE: Setup the regular expression pattern with the necessary captures. This
-# pattern is mostly non-greedy; however, at the end we need to match
-# exactly 40 hexadecimal characters. In theory, in Tcl, this could have
-# an undefined result due to the mixing of greedy and non-greedy
+# NOTE: Setup the regular expression patterns with the necessary captures.
+# These patterns are mostly non-greedy; however, at the end we need to
+# match exactly 40 hexadecimal characters. In theory, in Tcl, this could
+# have an undefined result due to the mixing of greedy and non-greedy
# quantifiers; however, in practice, this seems to work properly. Also,
# this pattern assumes a particular structure for the [HTML] file to be
# updated.
#
set pattern1 {(.*?).*?\((\d+?\.\d+?)\
MiB\).*?sha1: ([0-9A-F]{40})}
+set pattern3 {href="/downloads/(.*?)"}
+set pattern4 {\(sha1: ([0-9A-F]{40})\)}
+
#
# NOTE: Grab all the data from the file to be updated.
#
set data [readFile $updateFileName]
@@ -177,14 +180,39 @@
incr start [string length $fileHash]
}
}
}
+
+#
+# NOTE: Attempt to verify that each file name now has the correct SHA1 hash
+# associated with it on the page.
+#
+foreach {dummy3 fileName} [regexp -all -inline -nocase -- $pattern3 $data] \
+ {dummy4 fileHash} [regexp -all -inline -nocase -- $pattern4 $data] {
+ #
+ # NOTE: Get the fully qualified file name based on the configured
+ # directory.
+ #
+ set fullFileName [file join $outputDirectory [file tail $fileName]]
+
+ #
+ # NOTE: Make sure the file hash from the [modified] data matches the
+ # calculated hash for the file. If not, fail.
+ #
+ set fullFileHash [getFileHash $fullFileName]
+
+ if {$fileHash ne $fullFileHash} then {
+ puts stdout "ERROR: SHA1 hash mismatch for\
+ file \"$fullFileName\", have \"$fileHash\" (from data),\
+ need \"$fullFileHash\" (calculated)."
+ }
+}
#
# NOTE: Write the [modified] data to the file to be updated.
#
if {$count > 0} then {
writeFile $updateFileName $data
} else {
puts stdout "WARNING: No changes, update of \"$updateFileName\" skipped."
}
Index: www/downloads.wiki
==================================================================
--- www/downloads.wiki
+++ www/downloads.wiki
@@ -481,12 +481,11 @@
This is the only setup package that is capable of installing the
design-time components for Visual Studio 2005.
However, if you do not require the design-time components, please
- consider downloading the associated
- Precompiled Binaries
+ consider downloading the associated "Precompiled Binaries"
instead.
(sha1: daa0f42621b93769755fb7a6546eddd3d56b8e72)
@@ -581,12 +580,11 @@
This is the only setup package that is capable of installing the
design-time components for Visual Studio 2008.
However, if you do not require the design-time components, please
- consider downloading the associated
- Precompiled Binaries
+ consider downloading the associated "Precompiled Binaries"
instead.
(sha1: 03d86dba982e89dadfd19fc9bce775dcab040632)
@@ -680,13 +678,12 @@
This is the only setup package that is capable of installing the
design-time components for Visual Studio 2010.
However, if you do not require the design-time components, please
- consider downloading the associated
- Precompiled Binaries
- instead.
+ consider downloading the associated "Precompiled Binaries"
+ instead.
(sha1: 182ae1db5c4747a4d24a8498a0c8ab14dfea3a55)
@@ -779,17 +776,16 @@
This is the only setup package that is capable of installing the
design-time components for Visual Studio 2012.
However, if you do not require the design-time components, please
- consider downloading the associated
- Precompiled Binaries
- instead.
+ consider downloading the associated "Precompiled Binaries"
+ instead.
- Using Entity Framework 6 design-time support may require installing the
- Visual Studio 2012 "flavor" of the
+ Using Entity Framework 6 design-time support may require
+ installing the Visual Studio 2012 "flavor" of the
Entity Framework 6 Tools for Visual Studio 2012 & 2013.
(sha1: ff9df099dce5e3f0d478e33f587a2866cae9c8ab)
@@ -885,17 +881,16 @@
This is the only setup package that is capable of installing the
design-time components for Visual Studio 2013.
However, if you do not require the design-time components, please
- consider downloading the associated
- Precompiled Binaries
- instead.
+ consider downloading the associated "Precompiled Binaries"
+ instead.
- Using Entity Framework 6 design-time support may require installing the
- Visual Studio 2013 "flavor" of the
+ Using Entity Framework 6 design-time support may require
+ installing the Visual Studio 2013 "flavor" of the
Entity Framework 6 Tools for Visual Studio 2012 & 2013.
(sha1: 15e31d48589c72d17e2269f72110c7e7a32cb6e3)
@@ -1234,11 +1229,11 @@