diff --git a/include/NTMakefile b/include/NTMakefile
index 85ea4e270..f3749fa4e 100644
--- a/include/NTMakefile
+++ b/include/NTMakefile
@@ -34,6 +34,7 @@ RELDIR=include
SUBDIRS=kadm5 hcrypto gssapi
!include ../windows/NTMakefile.w32
+!include ../windows/NTMakefile.version
!include ../windows/NTMakefile.config
INCFILES= \
@@ -50,7 +51,7 @@ $(OBJ)\bits.exe: $(OBJ)\bits.obj
$(EXECONLINK)
$(EXEPREP_NODIST)
-$(INCDIR)\config.h: config.h.w32 ..\windows\NTMakefile.config NTMakefile
+$(INCDIR)\config.h: config.h.w32 ..\windows\NTMakefile.config ..\windows\NTMakefile.version NTMakefile
$(PERL) << < config.h.w32 > $@
while(<>) {
@@ -105,7 +106,7 @@ while(<>) {
<<
-$(INCDIR)\version.h: ..\windows\NTMakefile.config NTMakefile
+$(INCDIR)\version.h: ..\windows\NTMakefile.version NTMakefile
$(CP) << $@
const char *heimdal_long_version = "@(#)$$Version: $(VER_PACKAGE_NAME) $(VER_PACKAGE_VERSION) by $(USERNAME) on $(COMPUTERNAME) ($(CPU)-pc-windows) $$";
const char *heimdal_version = "$(VER_PACKAGE_NAME) $(VER_PACKAGE_VERSION)";
diff --git a/packages/windows/assembly/NTMakefile b/packages/windows/assembly/NTMakefile
index 3a6571b80..25248fe57 100644
--- a/packages/windows/assembly/NTMakefile
+++ b/packages/windows/assembly/NTMakefile
@@ -51,6 +51,8 @@ prep:: mk-asm-dirs
ASMKRBDIR=$(ASMDIR)\Heimdal.Kerberos
ASMKRBVER=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX).$(VER_PRODUCT_PATCH)
+ASMKRBVER_OLD_BEGIN=$(VER_OLD_BEGIN_MAJOR).$(VER_OLD_BEGIN_MINOR).$(VER_OLD_BEGIN_AUX).$(VER_OLD_BEGIN_PATCH)
+ASMKRBVER_OLD_END=$(VER_OLD_END_MAJOR).$(VER_OLD_END_MINOR).$(VER_OLD_END_AUX).$(VER_OLD_END_PATCH)
ASMKRBMAN=$(ASMKRBNAME).manifest
ASMKRBBINS=\
@@ -132,7 +134,8 @@ POLKRBCAT=$(POLKRBDIR)\$(ASMKRBVER).cat
$(POLKRBFILE): policy.Heimdal.Kerberos.in
$(SED) -e "s,[@]krbname[@],$(ASMKRBNAME),g" \
-e "s,[@]krbversion[@],$(ASMKRBVER),g" \
- -e "s,[@]krbverfrom[@],$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR),g" \
+ -e "s,[@]krbverfrom_begin[@],$(ASMKRBVER_OLD_BEGIN),g" \
+ -e "s,[@]krbverfrom_end[@],$(ASMKRBVER_OLD_END),g" \
-e "s,[@]krbpolname[@],$(POLKRB),g" \
-e "s,[@]cpu[@],$(MCPU),g" \
-e "s,[@]pkt[@],$(CODESIGN_PKT),g" < $** > $@
diff --git a/packages/windows/assembly/policy.Heimdal.Kerberos.in b/packages/windows/assembly/policy.Heimdal.Kerberos.in
index 12f9f3c2b..b56e9a7af 100644
--- a/packages/windows/assembly/policy.Heimdal.Kerberos.in
+++ b/packages/windows/assembly/policy.Heimdal.Kerberos.in
@@ -12,7 +12,7 @@
name="@krbname@"
language="*"
processorArchitecture="@cpu@"/>
-
diff --git a/windows/NTMakefile.config b/windows/NTMakefile.config
index b7b916850..3d6fe7abd 100644
--- a/windows/NTMakefile.config
+++ b/windows/NTMakefile.config
@@ -1,33 +1,12 @@
-# Version strings
-
-VER_PACKAGE=heimdal
-VER_PACKAGE_NAME=Heimdal
-VER_PACKAGE_BUGREPORT=heimdal-bugs@h5l.org
-VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2011 Royal Institute of Technology, Stockholm, Sweden
-VER_PACKAGE_COMPANY=www.h5l.org
-
-VER_PRODUCT_MAJOR=1
-VER_PRODUCT_MINOR=5
-VER_PRODUCT_AUX=9900
-VER_PRODUCT_PATCH=0
-
-VER_PACKAGE_VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX)
-
-# Define to 1 if this is a pre-release build. Undefine otherwise
-VER_PRERELEASE=1
-
-# Define to a valid string if this build DOES NOT follow normal
-# release procedures. I.e. this is a private build whose version
-# numbers are not co-ordinated with mainline development.
-
-#VER_PRIVATE=Private build for MyCompany
-
-# Define to a valid string if this build DOES follow normal release
-# procedures, but is a variation of the standard files of the same
-# version numbers.
-
-#VER_SPECIAL=Special build for testing ticket 12345
-
+!if exist (..\..\..\windows\NTMakefile.version)
+! include <..\..\..\windows\NTMakefile.version>
+!elseif exist (..\..\windows\NTMakefile.version)
+! include <..\..\windows\NTMakefile.version>
+!elseif exist (..\windows\NTMakefile.version)
+! include <..\windows\NTMakefile.version>
+!else
+! include
+!endif
# ------------------------------------------------------------
# Features
diff --git a/windows/NTMakefile.version b/windows/NTMakefile.version
new file mode 100644
index 000000000..5ee3c051f
--- /dev/null
+++ b/windows/NTMakefile.version
@@ -0,0 +1,47 @@
+# Version strings
+
+VER_PACKAGE=heimdal
+VER_PACKAGE_NAME=Heimdal
+VER_PACKAGE_BUGREPORT=heimdal-bugs@h5l.org
+VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2011 Royal Institute of Technology, Stockholm, Sweden
+VER_PACKAGE_COMPANY=www.h5l.org
+
+VER_PRODUCT_MAJOR=1
+VER_PRODUCT_MINOR=5
+VER_PRODUCT_AUX=9900
+VER_PRODUCT_PATCH=0
+
+# ------------------------------------------------------------
+# The VER_OLD_BEGIN and VER_OLD_END version values are used in
+# constructing the assembly publisher configuration. The end
+# must be less than the VER_PRODUCT value. If the current
+# version is 1.5.100.0 then VER_OLD_END version is
+# 1.5.99.65535.
+
+VER_OLD_BEGIN_MAJOR=1
+VER_OLD_BEGIN_MINOR=5
+VER_OLD_BEGIN_AUX=0
+VER_OLD_BEGIN_PATCH=0
+
+VER_OLD_END_MAJOR=1
+VER_OLD_END_MINOR=5
+VER_OLD_END_AUX=9949
+VER_OLD_END_PATCH=65535
+
+VER_PACKAGE_VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX)
+
+# Define to 1 if this is a pre-release build. Undefine otherwise
+VER_PRERELEASE=1
+
+# Define to a valid string if this build DOES NOT follow normal
+# release procedures. I.e. this is a private build whose version
+# numbers are not co-ordinated with mainline development.
+
+#VER_PRIVATE=Private build for MyCompany
+
+# Define to a valid string if this build DOES follow normal release
+# procedures, but is a variation of the standard files of the same
+# version numbers.
+
+#VER_SPECIAL=Special build for testing ticket 12345
+