X-Git-Url: http://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=README-NT;h=1ce0c0f63f8820aae8b0a79e62ed8e9e8361c066;hp=436a68445751b877b74a36e0dcd42f6a75928646;hb=87efbab4e8c0dc37c1938503eea88f7f319b7e5d;hpb=18a9be2b18b7baf3eb0d1aa40a6337c97bd0571e diff --git a/README-NT b/README-NT index 436a684..1ce0c0f 100644 --- a/README-NT +++ b/README-NT @@ -3,25 +3,45 @@ 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 workstation to an OpenAFS development +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. -NOTE: +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. +The IFS implementation does not contain a Network Provider interface +to register an AFS service name. *********** Windows 2000/XP/2003 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) + +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: @@ -30,26 +50,55 @@ 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.18 H. Build NSIS Install Package - I. Final Results - J. Optional Items + I. Install Wix 2.0.4310 + J. Build Wix MSI Install Package + K. Final Results + L. Optional Items The Microsoft development tools require anywhere from 660 MB to 1.8GB of storage depending on which compilers are selected. The following versions are supported: - Microsoft Visual C++ 6.0 - Microsoft Visual .NET - Microsoft Visual .NET 2003 (recommended) + Microsoft Visual Studio .NET + available via a MSDN subscription - Any version of the Microsoft SDK and Tools released August 2001 or later. + Microsoft Visual Studio .NET 2003 + available via a MSDN subscription + + Microsoft Visual Studio .NET 2005 (required for AMD64 builds) + available via a MSDN subscription + (recommended - required for 64-bit builds) + +The following Microsoft SDK is required: + + Microsoft Platform SDK for Windows XP SP2 or Server 2003 SP1 or Vista + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/downlevel.htm [IE required] + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm + +The following Microsoft DDK is required: + + Microsoft Windows Server 2003 SP1 DDK + 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 NSIS installer requires about 14 MB of storage. The following -version is supported. +version is supported: + + Nullsoft Scriptable Installation System 2.18 + http://nsis.sourceforge.net/home/ + +The WiX installer requires about 18 MB of storage. The following +version is supported: - Nullsoft Scriptable Installation System 2.0 + Wix 2.0.4310.0 + http://prdownloads.sourceforge.net/wix/sources-2.0.4310.0.zip The InstallShield scripts (although not supported) require version 5.5 of InstallShiled. Version 6.0 or higher of InstallShield are not @@ -66,13 +115,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.60 using the +For this example, download source for version 1.3.74 using the following URL: -http://www.openafs.org/dl/openafs/1.3.60/openafs-1.3.60-src.tar +http://www.openafs.org/dl/openafs/1.3.74/openafs-1.3.74-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.60. Once +your build based on a release version of the source, e.g. 1.3.74. Once you have completed a build process successfully, you can experiment with other source trees. @@ -80,23 +129,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.60-src.tar) into target +Expand the downloaded tar file (openafs-1.3.74-src.tar) into target directory (c:\OpenAFS), the unzip routine will expand the source into a subdirectory tree: - c:\OpenAFS\OpenAFS-1.3.60\src + c:\OpenAFS\OpenAFS-1.3.74\src Copy the files 'NTMakefile' and 'ntbuild.bat' from 'src' to the OpenAFS -base directory: +base directory (aka %AFSROOT%): From a DOS command prompt window, enter the following copy commands: - copy c:\OpenAFS\OpenAFS-1.3.60\src\NTMakefile c:\OpenAFS\OpenAFS-1.3.60\. - copy c:\OpenAFS\OpenAFS-1.3.60\src\ntbuild.bat c:\OpenAFS\OpenAFS-1.3.60\. + cd c:\OpenAFS\OpenAFS-1.3.74 + 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.60\ + c:\OpenAFS\OpenAFS-1.3.74\ NTMakefile ntbuild.bat src @@ -104,8 +154,8 @@ The AFS base directory should look something like the following: STEP B. Install compiler and development tools. -Install a copy of Microsoft Visual C++ 6.0, Visual .NET, or Visual .NET 2003. -The "Typical" install setting is sufficient. +Install a copy of Microsoft Visual Studio .NET, Visual Studio .NET 2003, +or Visual Studio .NET 2005. The "Typical" install setting is sufficient. (1) You can reduce the installation size by selecting "Custom" install and remove all but the following Options: @@ -118,17 +168,19 @@ and remove all but the following Options: STEP C. Install SDK header files. -Files from Microsoft's Platform SDK (August 2001 or later) are required to -complete a build on Windows 2000 or XP. You can install the "Core SDK" -from +Files from Microsoft's Platform SDK for Windows XP SP2 or Server 2003 are +required to complete a build on Windows 2000/XP/2003. You can install +the "Core, Data Access and Installer SDKs" 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 -The header files that are required are found from a Microsoft SDK are: + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm + +The header files that are required from a Microsoft SDK/DDK are: - netspi.h (Windows 9x builds) 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) @@ -136,16 +188,16 @@ The header files that are required are found from a Microsoft SDK are: These files come from the following Microsoft DDKs/SDKs: npapi.h: - Windows XP/2003 Platform SDK - include/ + Windows XP SP2 Platform SDK - include/ netcfgn.h, netcfgx.h: Windows XP/2003 DDK - inc/wxp/ - netmpr.h, netspi.h: - July 1998 Windows 95 DDK - net/inc/netmpr.h and net/inc/netspi.h - July 1999 Windows 98 DDK - src/net/inc/netmpr.h and src/net/inc/netspi.h - - you need to install "Legacy and Related - driver samples" +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 + STEP D. Configure NTBUILD.BAT. @@ -154,18 +206,32 @@ customized for use on your development system. The following variables must be defined to match your configuration: AFSVER_CL: Set to 1200 if using MS Visual C++ 6.0 - Set to 1300 if using MS Visual .NET - Set to 1310 if using MS Visual .NET 2003 + 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 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 - AFSROOT: Set to the short name of the OpenAFS Base directory + _WIN32_IE: Must match APPVER + + MSVCVer: Set to 8.0 if using Visual Studio 8 STEP E. Set version and installation options (optional) @@ -176,22 +242,22 @@ from: http://grand.central.org/dl/cellservdb/CellServDB then copy it to %AFSROOT%\src\WINNT\install\NSIS and name it afsdcell.ini -Edit file %AFSROOT%\src\config\NTMakefile.i386_nt40 +Edit file %AFSROOT%\src\config\NTMakefile.i386_w2k AFSPRODUCT_VER_MAJOR - Version Major Number AFSPRODUCT_VER_MINOR - Version Minor Number AFSPRODUCT_VER_PATCH - Version Patch Number AFSPRODUCT_VER_BUILD - Version Build Number - CELLSERVDB_INSTALL - The default file name for the CellServDB - included in the install Package. - CELLNAME_DEFAULT - The default home cell name. - CELLSERVDB_WEB - The default web address to obtain CellServDB + CELLSERVDB_INSTALL - The default file name for the CellServDB + included in the install Package. + 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 see the following: AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MINOR=3 - AFSPRODUCT_VER_PATCH=6000 + AFSPRODUCT_VER_PATCH=7400 AFSPRODUCT_VER_BUILD=0 CELLNAME_DEFAULT=openafs.org CELLSERVDB_INSTALL=CellServDB.GrandCentral @@ -203,13 +269,13 @@ one that can be downloaded from the web (CELLSERVDB_WEB). STEP F. Begin the build -(1) From Windows 2000/XP open up a DOS prompt window. +(1) From Windows 2000/XP/2003 open up a DOS prompt window. (2) Change to the %AFSROOT% directory (3) Configure the environment variables: - For a release build: + For a release build (SMB version): (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the Visual Studio environment you installed. @@ -218,7 +284,16 @@ STEP F. Begin the build (c) Execute the NTBUILD.BAT file with the parameter "free" - For a debug build: + 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 Visual Studio environment you installed. @@ -227,11 +302,20 @@ 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 -(5) Build the complete Windows NT/2000 development environment. +(5) Build the complete Windows 2000/XP/2003 development environment. nmake /f NTMakefile install @@ -240,10 +324,13 @@ 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.0 (optional). +STEP G. Install NSIS 2.07 (optional). -Download the Nullsoft Scriptable Installation System (NSIS) 2.0 from +Download the Nullsoft Scriptable Installation System (NSIS) 2.07 from http://nsis.sourceforge.net/home/ @@ -264,17 +351,144 @@ sources. The following changes were made to exehead\config.h. STEP H. Build OpenAFS NSIS install package -From the DOS command prompt window run: +From the %AFSROOT% directory execute: nmake /f NTMakefile NSIS -STEP I. Final Results +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. +> /// +> /// symbol name to check +> /// true if symbol is defined +> 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); +> } +> +> /// +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" +> /> +> RelPath = "Xsd\wixloc.xsx" +> DependentUpon = "wixloc.xsd" +> BuildAction = "None" +> /> + + +STEP J. Build Wix MSI install package + +From the %AFSROOT% directory execute: + + nmake /f NTMakefile wix + +Make sure the binaries installed to \src\wix\release\ship are +available in the PATH environment variable + + +STEP K. Final Results The build process generates its binaries in %AFSROOT%\DEST. The subdirectory would look like the following: -%AFSROOT%:\DEST\{checked,free}\ +%AFSROOT%\DEST\{checked,free}\ bin etc include @@ -286,10 +500,11 @@ would look like the following: Bin - contains build utilities. root.client - contains Open AFS binaries root.server - contain Open AFS Server binaries - WinInstall\OpenAFSforWindows.exe - is the install package for Open AFS + WinInstall\OpenAFSforWindows.exe - is the NSIS install package + WinInstall\openafs-en_US.msi - is the WiX MSI install package -STEP J. Optional Items +STEP L. Optional Items The build process has an error table that is compiled for many OpenAFS applications. This table is generated by Unix based tools. It is not