DEVEL15-bozo-fs-create-unused-ptr-20090319
[openafs.git] / README-NT
index f506607..7402075 100644 (file)
--- a/README-NT
+++ b/README-NT
@@ -3,35 +3,37 @@ License.  For details, see the LICENSE file in the top-level source
 directory or on-line at http://www.openafs.org/dl/license10.html
 
 The document now provides a step by step procedure that takes the user 
-from a basic Windows 2000/XP/2003 workstation to an OpenAFS development 
-environment.   Details are provided so that a 'beginning' windows 
-developer can build an OpenAFS installable package for Windows 2000/XP/2003.
+from a basic Windows 2000/XP/2003/Vista/2008 workstation to an OpenAFS 
+development environment.   Details are provided so that a 'beginning' 
+windows developer can build an OpenAFS installable package for Windows 
+2000/XP/2003/Vista/2008.
 
 NOTE 1:
 As of the OpenAFS 1.3 release series, Windows platforms released
-prior to Windows 2000 are not being supported.  The InstallShield
-installer is still in the source tree but is no longer supported.
-A new open source installer based on NSIS 2.0 replaces it.
+prior to Windows 2000 are no longer supported. As of the OpenAFS 1.5
+series, the Windows 9x components are being removed from the source tree.
 
-NOTE 2:
-In this release, in addition to the production quality CIFS-AFS 
-gateway based client service there also exists an experimental
-implementation of an Installable File System (IFS).
-To build the IFS version, follow the directions below, but note that
-only the NSIS installer script has been updated to support it.
-Also, the IFS kernel module must be built separately, using the IFS/DDK
-build environment.
-
-
-***********   Windows 2000/XP/2003 Build Process ****************
+***********   Windows 2000/XP/2003/Vista/2008 Build Process *************
 
 Building OpenAFS for Windows requires configuring a Windows
 development system by installing compilation tools and header files.
-Open AFS Software development can be done on Windows 2000 or XP.  The
-target system, where OpenAFS will be installed, should be either
-Windows 2000, Windows XP, or Windows 2003.  The building process is 
-controlled by a nmake file that generates the necessary binaries and 
-binds them into an install package.
+Open AFS Software development can be done on Windows 2000, XP, 2003, 
+or Vista.  The target system, where OpenAFS will be installed, can be 
+one of:
+
+ * Windows 2000
+ * Windows XP
+ * Windows XP SP2
+ * Windows 2003 
+ * Windows 2003 SP1
+ * Windows XP 64
+ * Windows 2003 64
+ * Windows 2003 R2 (32 or 64)
+ * Windows Vista (32 or 64)
+ * Windows 2008 (32 or 64)
+
+The build process is controlled by a nmake file that generates the 
+necessary binaries and binds them into an install package.
 
 The following steps describe how to configure Windows 2000/XP:
 
@@ -40,10 +42,10 @@ The following steps describe how to configure Windows 2000/XP:
    C. Install SDK header files
    D. Configure NTBUILD.BAT
    E. Set program version Level
-   F. Build Win2000 binaries
-   G. Install NSIS 2.0
+   F. Build the binaries
+   G. Install NSIS 2.30
    H. Build NSIS Install Package
-   I. Install Wix 2.0
+   I. Install Wix 2.0.5325
    J. Build Wix MSI Install Package
    K. Final Results
    L. Optional Items
@@ -55,15 +57,18 @@ versions are supported:
     Microsoft Visual Studio .NET 
       available via a MSDN subscription
 
-    Microsoft Visual Studio .NET 2003 (recommended)
+    Microsoft Visual Studio .NET 2003
       available via a MSDN subscription
 
-    Microsoft Visual Studio .NET 2005 (do not use for production)
+    Microsoft Visual Studio .NET 2005
       available via a MSDN subscription
+      (recommended - required for 64-bit builds)
+
+    Microsoft Visual Studio 2008 is not supported
 
 The following Microsoft SDK is required:
 
-    Microsoft Platform SDK for Windows XP SP2 [Core, Data Access and Installer SDKs are required]
+    Microsoft Platform SDK for Windows Server 2003 SP1 or Vista or 2008
       http://www.microsoft.com/msdownload/platformsdk/sdkupdate/downlevel.htm [IE required]
       http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
 
@@ -73,21 +78,25 @@ The following Microsoft DDK is required:
       available via a MSDN subscription or via free CD
       http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx
 
+The Microsoft HTML Help Workshop is required:
+
+    http://www.microsoft.com/downloads/details.aspx?familyid=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en
+
+The Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1 is required:
+
+    http://www.microsoft.com/downloads/details.aspx?FamilyId=AD6158D7-DDBA-416A-9109-07607425A815&displaylang=en
+
 The NSIS installer requires about 14 MB of storage. The following 
 version is supported:
 
-    Nullsoft Scriptable Installation System 2.0 
+    Nullsoft Scriptable Installation System 2.30
       http://nsis.sourceforge.net/home/
 
 The WiX installer requires about 18 MB of storage.  The following 
 version is supported:
 
-    Wix 2.0.2217.0
-      http://prdownloads.sourceforge.net/wix/sources-2.0.2217.0.zip
-
-The InstallShield scripts (although not supported) require version 5.5
-of InstallShiled. Version 6.0 or higher of InstallShield are not 
-compatible.
+    Wix 2.0.5325.0
+      http://prdownloads.sourceforge.net/wix/sources-2.0.5325.0.zip
 
 The OpenAFS Source directory requires about 360 MB storage. The Source
 directory size includes additional space for files that will be
@@ -100,13 +109,13 @@ Transfer OpenAFS source tree onto your hardrive.  The source can be
 downloaded from the OpenAFS web site:
        http://www.OpenAFS.org/release/snapindex.html.
 
-For this example, download source for version 1.3.74 using the
+For this example, download source for version 1.5.51 using the
 following URL:
-http://www.openafs.org/dl/openafs/1.3.74/openafs-1.3.74-src.tar
+http://www.openafs.org/dl/openafs/1.5.51/openafs-1.5.51-src.tar
 
 HINT: DailySnapShots are pre-release source trees and much more
 likely to have compilation errors. If this is your first attempt, do
-your build based on a release version of the source, e.g. 1.3.74. Once
+your build based on a release version of the source, e.g. 1.5.51. Once
 you have completed a build process successfully, you can experiment with
 other source trees.
 
@@ -114,24 +123,24 @@ You will need an unzip utility that can expand compressed tar files.
 For example "Pkzip for Windows" from Pkware will uncompress tar files.
 (http://www.pkware.com/)
 
-Expand the downloaded tar file (openafs-1.3.74-src.tar) into target
+Expand the downloaded tar file (openafs-1.5.51-src.tar) into target
 directory (c:\OpenAFS), the unzip routine will expand the source into a
 subdirectory tree:
-    c:\OpenAFS\OpenAFS-1.3.74\src
+    c:\OpenAFS\OpenAFS-1.5.51\src
 
 Copy the files 'NTMakefile' and 'ntbuild.bat' from 'src' to the OpenAFS 
 base directory (aka %AFSROOT%):
 
   From a DOS command prompt window, enter the following copy commands:
 
-    cd c:\OpenAFS\OpenAFS-1.3.74
+    cd c:\OpenAFS\OpenAFS-1.5.51
     copy src\NTMakefile .
     copy src\ntbuild.bat .
 
 
-The AFS base directory should look something like the following:
+The OpenAFS base directory should look something like the following:
 
-  c:\OpenAFS\OpenAFS-1.3.74\
+  c:\OpenAFS\OpenAFS-1.5.51\
     NTMakefile
     ntbuild.bat
     src
@@ -140,7 +149,9 @@ The AFS base directory should look something like the following:
 STEP B. Install compiler and development tools.
 
 Install a copy of Microsoft Visual Studio .NET, Visual Studio .NET 2003, 
-or Visual Studio .NET 2005.  The "Typical" install setting is sufficient.
+or Visual Studio .NET 2005.  Visual Studio 2008 has not been sufficiently
+tested to be considered "supported".  The "Typical" install setting is 
+sufficient.
 
 (1) You can reduce the installation size by selecting "Custom" install
 and remove all but the following Options:
@@ -153,22 +164,29 @@ and remove all but the following Options:
 
 STEP C. Install SDK header files.
 
-Files from Microsoft's Platform SDK for Windows XP SP2 is required to
-complete a build on Windows 2000/XP/2003.   You can install the "Core, Data
-Access and Installer SDKs" from
+Files from Microsoft's Platform SDK for Windows Server 2003 SP1 are
+required to complete a build on Windows 2000/XP/2003.   At a minimum the
+following componets are known to be required: 
+
+  * Core
+  * Data Access
+  * Installer
+  * Windows Management Instrumentation
+  * Web Workshop (IE)
+
+It is advised that you install the entire SDK.  The SDK can be obtained
+from:
 
   http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
 
 by using Internet Explorer 5.x or higher.  (Active X controls are required)
-If you do not which to use IE a complete SDK package is available from
 
-  http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
-
-The header files that are required are found from a Microsoft SDK are:
+The header files that are required from a Microsoft SDK/DDK are:
 
    npapi.h    (Windows 2000,XP,2003 builds)
    netcfgx.h  (NSIS Loopback Adapter installer - Windows 2000,XP,2003 builds)
    netcfgn.h  (NSIS Loopback Adapter installer - Windows 2000,XP,2003 builds)
+   normalization.h (AFS Cache Manager)
 
 These files come from the following Microsoft DDKs/SDKs:
 
@@ -178,11 +196,8 @@ These files come from the following Microsoft DDKs/SDKs:
    netcfgn.h, netcfgx.h:
         Windows XP/2003 DDK - inc/wxp/
 
-If you are interested in experimenting with the IFS you must purchase from
-Microsoft a copy of the Windows 2003 SP1 IFS Kit.
-
-  http://www.microsoft.com/whdc/devtools/ifskit/default.mspx
-
+   normalization.h:
+        Microsoft IDN Mitigation APIs 1.1 - include/
 
 STEP D. Configure NTBUILD.BAT.
 
@@ -194,18 +209,37 @@ must be defined to match your configuration:
              Set to 1300 if using MS Visual Studio .NET
              Set to 1310 if using MS Visual Studio .NET 2003
              Set to 1400 if using MS Visual Studio .NET 2005
+             Set to 1500 if using MS Visual Studio 2008
 
   MSVCDIR: Set to the short name version of the directory into which
            the visual C++ compiler was installed regardless of version
 
+  MSVCDIR64: On AMD64 systems, set to the 64-bit visual C++ compiler
+
   MSSDKDIR: Set to the short name of the directory into which
             the Platform SDK was installed
 
-  NTDDKDIR: Set the short name of the directory containing the npapi.h file
+  NTDDKDIR: Set to the short name of the INC\WNET DDK directory
+
+  NTDDKDIR2: Set to the short name of the INC\CRT DDK directory
 
   AFSROOT: Set to the short name of the OpenAFS Base directory.  This
            cannot be set to a UNC path.
 
+  SYS_NAME: One of "i386_w2k" or "amd64_w2k"
+
+  APPVER:   0x500 for Windows 2000 and above; 0x502 for AMD64 systems
+
+  _WIN32_IE: Must match APPVER
+
+  MSVCVer:  Set to 8.0 if using Visual Studio 8
+
+  CODESIGN_DESC: Product Name
+  
+  CODESIGN_TIMESTAMP: Time Stamp Service for Code Signing Certificate
+   
+  CODESIGN_URL: Support URL Displayed to End Users
+
 
 STEP E. Set version and installation options (optional)
 
@@ -225,12 +259,12 @@ Edit file %AFSROOT%\src\config\NTMakefile.i386_w2k
     CELLNAME_DEFAULT     - The default home cell name.
     CELLSERVDB_WEB       - The default web address to obtain CellServDB
 
-For example: in the file %AFSROOT%\src\config\NTMakefile.i386_nt40 you would
+For example: in the file %AFSROOT%\src\config\NTMakefile.i386_w2k you would
 see the following:
 
    AFSPRODUCT_VER_MAJOR=1
-   AFSPRODUCT_VER_MINOR=3
-   AFSPRODUCT_VER_PATCH=7400
+   AFSPRODUCT_VER_MINOR=5
+   AFSPRODUCT_VER_PATCH=5100
    AFSPRODUCT_VER_BUILD=0
    CELLNAME_DEFAULT=openafs.org
    CELLSERVDB_INSTALL=CellServDB.GrandCentral
@@ -257,15 +291,6 @@ STEP F. Begin the build
 
     (c) Execute the NTBUILD.BAT file with the parameter "free"
 
-    For a release build (IFS version):
-
-    (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the
-        Visual Studio environment you installed.
-
-    (b) Execute the SETENV.BAT file with the parameters "/2000 /RETAIL"
-
-    (c) Execute the NTBUILD.BAT file with the parameter "free ifs"
-
     For a debug build (SMB version):
 
     (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the
@@ -275,15 +300,6 @@ STEP F. Begin the build
 
     (c) Execute the NTBUILD.BAT file with the parameter "checked"
 
-    For a debug build (IFS version):
-
-    (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the
-        Visual Studio environment you installed.
-
-    (b) Execute the SETENV.BAT file with the parameters "/2000 /DEBUG"
-
-    (c) Execute the NTBUILD.BAT file with the parameter "checked ifs"
-
 (4) Clean the work area:
 
     nmake /f NTMakefile clean
@@ -297,30 +313,21 @@ behavior is normal; the build process is successful as long as the build
 process doesn't terminate with an error ("nmake.exe return code 0x2")
 and it displays 'Build Finished Successfully'.
 
-(6) [IFS only] Open a DDK/IFS Build Environment command window, change 
-    to the src\WINNT\afsrdr directory, and execute the "build" command.
 
+STEP G. Install NSIS 2.30 (optional).
 
-STEP G. Install NSIS 2.0 (optional).
-
-Download the Nullsoft Scriptable Installation System (NSIS) 2.0 from
+Download the Nullsoft Scriptable Installation System (NSIS) 2.30 from
 
     http://nsis.sourceforge.net/home/
 
-Run the nsis20.exe installer.
-
-NOTE: The NSIS installer may be rebuilt from source files 
-   
-    C:\Program Files\NSIS\Source
+Run the nsis-2.30.exe installer and install to "C:\Program Files\NSIS".
+Then download the large strings build zip file and replace the installed 
+files with the versions from the zip file.  These versions increase 
+the maximum string length from 1024 characters to 8192 characters.  
+This is necessary for installation on systems with long PATH environment 
+strings.
 
-to enable options not built into the default configuration.  The 
-OpenAFS installers are built using a modified version of the NSIS
-sources.  The following changes were made to exehead\config.h.
-
-    NSIS_MAX_STRLEN set to 4096
-    NSIS_CONFIG_LOG defined
-    NSIS_CONFIG_LOG_ODS defined
-    
+Note: The NSIS installer can only be used to produce 32-bit installers.
 
 STEP H.  Build OpenAFS NSIS install package
 
@@ -331,119 +338,9 @@ From the %AFSROOT% directory execute:
 
 STEP I.  Install Wix MSI Installer
 
-Download the Wix 2.0.2217.0 installer from 
-
-    http://prdownloads.sourceforge.net/wix/sources-2.0.2217.0.zip
-
-Apply the following patches to the source tree and execute 
-
-    make ship
-
-from the \src\wix directory.  
-
-Index: src/wix/Common.cs
-===================================================================
-RCS file: /cvsroot/wix/wix/src/wix/Common.cs,v
-retrieving revision 1.7
-diff -w -r1.7 Common.cs
-140a141,146
->              public static long GetFileTimeFromDateTime(string dateTime) 
->              {
->                      System.DateTime sdt = System.Xml.XmlConvert.ToDateTime(dateTime);
->                      return sdt.ToFileTime();
->              }
-> 
-Index: src/wix/Compiler.cs
-===================================================================
-RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v
-retrieving revision 1.14
-diff -w -r1.14 Compiler.cs
-847c847
-<                     this.AddRegistryKey(sourceLineNumbers, null, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[!", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context
----
->                     this.AddRegistryKey(sourceLineNumbers, null, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[#", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context
-2352a2353,2358
->                      // if a Value attribute was given by itself, make this a type 19 custom action
->                      if( sourceBits == 0 && targetBits == MsiInterop.MsidbCustomActionTypeTextData ) 
->                      {
->                              sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile;
->                      }
-> 
-3881c3887
-<                         minDate = attrib.Value;
----
->                         minDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString();
-3884c3890
-<                         maxDate = attrib.Value;
----
->                         maxDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString();
-8187a8194,8207
->                                      case "Delete":
->                                              switch (attrib.Value)
->                                              {
->                                                      case "install":
->                                                              events |= MsiInterop.MsidbServiceControlEventDelete;
->                                                              break;
->                                                      case "uninstall":
->                                                              events |= MsiInterop.MsidbServiceControlEventUninstallDelete;
->                                                              break;
->                                                      case "both":
->                                                              events |= MsiInterop.MsidbServiceControlEventDelete | MsiInterop.MsidbServiceControlEventUninstallDelete;
->                                                              break;
->                                              }
->                                              break;
-9685a9706
-> 
-Index: src/wix/Preprocessor.cs
-===================================================================
-RCS file: /cvsroot/wix/wix/src/wix/Preprocessor.cs,v
-retrieving revision 1.6
-diff -w -r1.6 Preprocessor.cs
-274c274
-<                             context = new IfContext(context.IsTrue & context.Active, this.variables.ContainsKey(reader.Value.Trim()), IfState.If);
----
->                             context = new IfContext(context.IsTrue & context.Active, this.IsDefined(reader.Value.Trim()), IfState.If);
-279c279
-<                             context = new IfContext(context.IsTrue & context.Active, !this.variables.ContainsKey(reader.Value.Trim()), IfState.If);
----
->                             context = new IfContext(context.IsTrue & context.Active, !this.IsDefined(reader.Value.Trim()), IfState.If);
-360a361,362
->                                              case "error":
->                                                      throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), this.PreprocessVariables(reader.Value));
-419a422,437
->              /// Returns true if the symbol exists.
->              /// </summary>
->              /// <param name="symbol">symbol name to check</param>
->              /// <returns>true if symbol is defined</returns>
->              private bool IsDefined(string symbol)
->              {
->                      if( symbol.StartsWith("env.") )
->                              return Environment.GetEnvironmentVariable(symbol.Substring(4)) != null;
->                      if( symbol.StartsWith("var.") )
->                              return this.variables.ContainsKey(symbol.Substring(4));
->                      if( symbol.StartsWith("sys.") )
->                              return this.systemVariables.ContainsKey(symbol.Substring(4));
->                      return this.variables.ContainsKey(symbol);
->              }
-> 
->         /// <summary>
-Index: src/wix/wix.csproj
-===================================================================
-RCS file: /cvsroot/wix/wix/src/wix/wix.csproj,v
-retrieving revision 1.4
-diff -w -r1.4 wix.csproj
-661a662,666
->                     RelPath = "Xsd\wix.xsx"
->                     DependentUpon = "wix.xsd"
->                     BuildAction = "None"
->                 />
->                 <File
-664a670,674
->                 <File
->                     RelPath = "Xsd\wixloc.xsx"
->                     DependentUpon = "wixloc.xsd"
->                     BuildAction = "None"
->                 />
+Download the Wix 2.0.5325.0 installer from 
+
+    http://prdownloads.sourceforge.net/wix/sources-2.0.5325.0.zip
 
 
 STEP J.  Build Wix MSI install package