readme-nt-20041101

Remove last vestiges of Win9x comments

Update Wix 2.0 information

Provide download or ordering information on how to obtain all the
necessary tools required to build OpenAFS for FREE
This commit is contained in:
Jeffrey Altman 2004-11-01 11:45:29 +00:00 committed by Jeffrey Altman
parent b9f527243e
commit 66cf365c50

321
README-NT
View File

@ -42,17 +42,38 @@ The Microsoft development tools require anywhere from 660 MB to 1.8GB
of storage depending on which compilers are selected. The following of storage depending on which compilers are selected. The following
versions are supported: versions are supported:
Microsoft Visual C++ 6.0
Microsoft Visual .NET Microsoft Visual .NET
Microsoft Visual .NET 2003 (recommended) available via a MSDN subscription
Microsoft Platform SDK for Windows XP SP2 Microsoft Visual .NET 2003 (recommended)
[Core and Data Access SDKs are required] available via a MSDN subscription
Microsoft Visual C++ Toolkit 2003 (same as .NET 2003)
http://msdn.microsoft.com/visualc/vctoolkit2003/
The following Microsoft SDK is required:
Microsoft Platform SDK for Windows XP SP2 [Core, Data Access and Installer SDKs are required]
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 DDK
available via a MSDN subscription or via free CD
http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx
The NSIS installer requires about 14 MB of storage. The following The NSIS installer requires about 14 MB of storage. The following
version is supported. version is supported:
Nullsoft Scriptable Installation System 2.0 Nullsoft Scriptable Installation System 2.0
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 The InstallShield scripts (although not supported) require version 5.5
of InstallShiled. Version 6.0 or higher of InstallShield are not of InstallShiled. Version 6.0 or higher of InstallShield are not
@ -69,13 +90,13 @@ Transfer OpenAFS source tree onto your hardrive. The source can be
downloaded from the OpenAFS web site: downloaded from the OpenAFS web site:
http://www.OpenAFS.org/release/snapindex.html. 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: 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 HINT: DailySnapShots are pre-release source trees and much more
likely to have compilation errors. If this is your first attempt, do 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 you have completed a build process successfully, you can experiment with
other source trees. other source trees.
@ -83,23 +104,24 @@ You will need an unzip utility that can expand compressed tar files.
For example "Pkzip for Windows" from Pkware will uncompress tar files. For example "Pkzip for Windows" from Pkware will uncompress tar files.
(http://www.pkware.com/) (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 directory (c:\OpenAFS), the unzip routine will expand the source into a
subdirectory tree: 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 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: 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\. cd c:\OpenAFS\OpenAFS-1.3.74
copy c:\OpenAFS\OpenAFS-1.3.60\src\ntbuild.bat c:\OpenAFS\OpenAFS-1.3.60\. copy src\NTMakefile .
copy src\ntbuild.bat .
The AFS base directory should look something like the following: The AFS base directory should look something like the following:
c:\OpenAFS\OpenAFS-1.3.60\ c:\OpenAFS\OpenAFS-1.3.74\
NTMakefile NTMakefile
ntbuild.bat ntbuild.bat
src src
@ -107,8 +129,8 @@ The AFS base directory should look something like the following:
STEP B. Install compiler and development tools. STEP B. Install compiler and development tools.
Install a copy of Microsoft Visual C++ 6.0, Visual .NET, or Visual .NET 2003. Install a copy of Microsoft Visual .NET, Visual .NET 2003, Visual C++
The "Typical" install setting is sufficient. Toolkit 2003. The "Typical" install setting is sufficient.
(1) You can reduce the installation size by selecting "Custom" install (1) You can reduce the installation size by selecting "Custom" install
and remove all but the following Options: and remove all but the following Options:
@ -121,17 +143,19 @@ and remove all but the following Options:
STEP C. Install SDK header files. STEP C. Install SDK header files.
Files from Microsoft's Platform SDK (August 2001 or later) are required to Files from Microsoft's Platform SDK for Windows XP SP2 is required to
complete a build on Windows 2000 or XP. You can install the "Core SDK" complete a build on Windows 2000/XP/2003. You can install the "Core, Data
from Access and Installer SDKs" from
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
by using Internet Explorer 5.x or higher. (Active X controls are required) 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 are found from a Microsoft SDK are:
netspi.h (Windows 9x builds)
npapi.h (Windows 2000,XP,2003 builds) npapi.h (Windows 2000,XP,2003 builds)
netcfgx.h (NSIS Loopback Adapter installer - 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) netcfgn.h (NSIS Loopback Adapter installer - Windows 2000,XP,2003 builds)
@ -139,16 +163,11 @@ The header files that are required are found from a Microsoft SDK are:
These files come from the following Microsoft DDKs/SDKs: These files come from the following Microsoft DDKs/SDKs:
npapi.h: npapi.h:
Windows XP/2003 Platform SDK - include/ Windows XP SP2 Platform SDK - include/
netcfgn.h, netcfgx.h: netcfgn.h, netcfgx.h:
Windows XP/2003 DDK - inc/wxp/ 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"
STEP D. Configure NTBUILD.BAT. STEP D. Configure NTBUILD.BAT.
@ -159,6 +178,7 @@ must be defined to match your configuration:
AFSVER_CL: Set to 1200 if using MS Visual C++ 6.0 AFSVER_CL: Set to 1200 if using MS Visual C++ 6.0
Set to 1300 if using MS Visual .NET Set to 1300 if using MS Visual .NET
Set to 1310 if using MS Visual .NET 2003 Set to 1310 if using MS Visual .NET 2003
Set to 1400 if using MS Visual .NET 2005
MSVCDIR: Set to the short name version of the directory into which MSVCDIR: Set to the short name version of the directory into which
the visual C++ compiler was installed regardless of version the visual C++ compiler was installed regardless of version
@ -184,17 +204,17 @@ Edit file %AFSROOT%\src\config\NTMakefile.i386_nt40
AFSPRODUCT_VER_MINOR - Version Minor Number AFSPRODUCT_VER_MINOR - Version Minor Number
AFSPRODUCT_VER_PATCH - Version Patch Number AFSPRODUCT_VER_PATCH - Version Patch Number
AFSPRODUCT_VER_BUILD - Version Build Number AFSPRODUCT_VER_BUILD - Version Build Number
CELLSERVDB_INSTALL - The default file name for the CellServDB CELLSERVDB_INSTALL - The default file name for the CellServDB
included in the install Package. included in the install Package.
CELLNAME_DEFAULT - The default home cell name. CELLNAME_DEFAULT - The default home cell name.
CELLSERVDB_WEB - The default web address to obtain CellServDB 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_nt40 you would
see the following: see the following:
AFSPRODUCT_VER_MAJOR=1 AFSPRODUCT_VER_MAJOR=1
AFSPRODUCT_VER_MINOR=3 AFSPRODUCT_VER_MINOR=3
AFSPRODUCT_VER_PATCH=6000 AFSPRODUCT_VER_PATCH=7400
AFSPRODUCT_VER_BUILD=0 AFSPRODUCT_VER_BUILD=0
CELLNAME_DEFAULT=openafs.org CELLNAME_DEFAULT=openafs.org
CELLSERVDB_INSTALL=CellServDB.GrandCentral CELLSERVDB_INSTALL=CellServDB.GrandCentral
@ -206,7 +226,7 @@ one that can be downloaded from the web (CELLSERVDB_WEB).
STEP F. Begin the build 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 (2) Change to the %AFSROOT% directory
@ -267,16 +287,16 @@ sources. The following changes were made to exehead\config.h.
STEP H. Build OpenAFS NSIS install package STEP H. Build OpenAFS NSIS install package
From the DOS command prompt window run: From the %AFSROOT% directory execute:
nmake /f NTMakefile NSIS nmake /f NTMakefile NSIS
STEP I. Install Wix MSI Installer STEP I. Install Wix MSI Installer
Download the Wix 2.0.1927.1 installer from Download the Wix 2.0.2217.0 installer from
http://prdownloads.sourceforge.net/wix/sources-2.0.1927.1.zip http://prdownloads.sourceforge.net/wix/sources-2.0.2217.0.zip
Apply the following patches to the source tree and execute Apply the following patches to the source tree and execute
@ -284,152 +304,114 @@ Apply the following patches to the source tree and execute
from the \src\wix directory. 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 Index: src/wix/Compiler.cs
=================================================================== ===================================================================
RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v
retrieving revision 1.10 retrieving revision 1.14
diff -u -w -r1.10 Compiler.cs diff -w -r1.14 Compiler.cs
--- src/wix/Compiler.cs 28 Jul 2004 15:50:22 -0000 1.10 847c847
+++ src/wix/Compiler.cs 4 Aug 2004 16:28:16 -0000 < 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
@@ -647,7 +647,7 @@ ---
// add the core registry keys for each context in the class > 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
for (int i = 0; i < contextCount; ++i) 2352a2353,2358
{ > // if a Value attribute was given by itself, make this a type 19 custom action
- this.AddRegistryKey(sourceLineNumbers, null, 0, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[!", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context > if( sourceBits == 0 && targetBits == MsiInterop.MsidbCustomActionTypeTextData )
+ this.AddRegistryKey(sourceLineNumbers, null, 0, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[#", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context > {
if (null != icon) // ClassId default icon > sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile;
{ > }
if (null != iconIndex) >
@@ -7385,6 +7385,20 @@ 3881c3887
break; < minDate = attrib.Value;
} ---
break; > minDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString();
+ case "Delete": 3884c3890
+ switch (attrib.Value) < maxDate = attrib.Value;
+ { ---
+ case "install": > maxDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString();
+ events |= MsiInterop.MsidbServiceControlEventDelete; 8187a8194,8207
+ break; > case "Delete":
+ case "uninstall": > switch (attrib.Value)
+ events |= MsiInterop.MsidbServiceControlEventUninstallDelete; > {
+ break; > case "install":
+ case "both": > events |= MsiInterop.MsidbServiceControlEventDelete;
+ events |= MsiInterop.MsidbServiceControlEventDelete | MsiInterop.MsidbServiceControlEventUninstallDelete; > break;
+ break; > case "uninstall":
+ } > events |= MsiInterop.MsidbServiceControlEventUninstallDelete;
+ break; > break;
case "Wait": > case "both":
wait = Common.IsYes(attrib.Value, sourceLineNumbers, node.Name, attrib.Name, id) ? "1" : "0"; // strings used since integer column is nullable > events |= MsiInterop.MsidbServiceControlEventDelete | MsiInterop.MsidbServiceControlEventUninstallDelete;
break; > break;
@@ -8715,6 +8729,7 @@ > }
} > break;
bits ^= (bit * 65536); 9685a9706
break; >
+
default:
bit = this.NameToBit(MsiInterop.CommonControlAttributes, attrib.Name, attrib.Value, node.Name, id);
if (-1 == bit)
Index: src/wix/Preprocessor.cs Index: src/wix/Preprocessor.cs
=================================================================== ===================================================================
RCS file: /cvsroot/wix/wix/src/wix/Preprocessor.cs,v RCS file: /cvsroot/wix/wix/src/wix/Preprocessor.cs,v
retrieving revision 1.5 retrieving revision 1.6
diff -u -w -r1.5 Preprocessor.cs diff -w -r1.6 Preprocessor.cs
--- src/wix/Preprocessor.cs 28 Jul 2004 15:50:22 -0000 1.5 274c274
+++ src/wix/Preprocessor.cs 4 Aug 2004 16:28:16 -0000 < context = new IfContext(context.IsTrue & context.Active, this.variables.ContainsKey(reader.Value.Trim()), IfState.If);
@@ -267,12 +267,12 @@ ---
break; > context = new IfContext(context.IsTrue & context.Active, this.IsDefined(reader.Value.Trim()), IfState.If);
case "ifdef": 279c279
stack.Push(context); < context = new IfContext(context.IsTrue & context.Active, !this.variables.ContainsKey(reader.Value.Trim()), IfState.If);
- 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); > context = new IfContext(context.IsTrue & context.Active, !this.IsDefined(reader.Value.Trim()), IfState.If);
ignore = true; 360a361,362
break; > case "error":
case "ifndef": > throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), this.PreprocessVariables(reader.Value));
stack.Push(context); 419a422,437
- context = new IfContext(context.IsTrue & context.Active, !this.variables.ContainsKey(reader.Value.Trim()), IfState.If); > /// Returns true if the symbol exists.
+ context = new IfContext(context.IsTrue & context.Active, !this.IsDefined(reader.Value.Trim()), IfState.If); > /// </summary>
ignore = true; > /// <param name="symbol">symbol name to check</param>
break; > /// <returns>true if symbol is defined</returns>
case "elseif": > private bool IsDefined(string symbol)
@@ -354,6 +354,8 @@ > {
break; > if( symbol.StartsWith("env.") )
case "endforeach": // endforeach is handled in PreprocessForeach, so seeing it here is an error > return Environment.GetEnvironmentVariable(symbol.Substring(4)) != null;
throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), "Cannot have a <?endforeach?> processing instruction without a matching <?foreach?>."); > if( symbol.StartsWith("var.") )
+ case "error": > return this.variables.ContainsKey(symbol.Substring(4));
+ throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), this.PreprocessVariables(reader.Value)); > if( symbol.StartsWith("sys.") )
default: > return this.systemVariables.ContainsKey(symbol.Substring(4));
// Console.WriteLine("processing instruction: {0}, {1}", reader.Name, reader.Value); > return this.variables.ContainsKey(symbol);
break; > }
@@ -401,6 +403,22 @@ >
} > /// <summary>
/// <summary>
+ /// 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>
/// Replaces parameters in the source text.
/// </summary>
/// <param name="value">Text that may contain parameters to replace.</param>
Index: src/wix/wix.csproj Index: src/wix/wix.csproj
=================================================================== ===================================================================
RCS file: /cvsroot/wix/wix/src/wix/wix.csproj,v RCS file: /cvsroot/wix/wix/src/wix/wix.csproj,v
retrieving revision 1.4 retrieving revision 1.4
diff -u -w -r1.4 wix.csproj diff -w -r1.4 wix.csproj
--- src/wix/wix.csproj 31 May 2004 01:07:40 -0000 1.4 661a662,666
+++ src/wix/wix.csproj 4 Aug 2004 16:28:16 -0000 > RelPath = "Xsd\wix.xsx"
@@ -659,9 +659,19 @@ > DependentUpon = "wix.xsd"
BuildAction = "EmbeddedResource" > BuildAction = "None"
/> > />
<File > <File
+ RelPath = "Xsd\wix.xsx" 664a670,674
+ DependentUpon = "wix.xsd" > <File
+ BuildAction = "None" > RelPath = "Xsd\wixloc.xsx"
+ /> > DependentUpon = "wixloc.xsd"
+ <File > BuildAction = "None"
RelPath = "Xsd\wixloc.xsd" > />
BuildAction = "Content"
/>
+ <File
+ RelPath = "Xsd\wixloc.xsx"
+ DependentUpon = "wixloc.xsd"
+ BuildAction = "None"
+ />
</Include>
</Files>
</CSHARP>
Index: src/wix/Xsd/wix.xsd
===================================================================
RCS file: /cvsroot/wix/wix/src/wix/Xsd/wix.xsd,v
retrieving revision 1.12
diff -u -w -r1.12 wix.xsd
--- src/wix/Xsd/wix.xsd 28 Jul 2004 15:50:24 -0000 1.12
+++ src/wix/Xsd/wix.xsd 4 Aug 2004 16:28:17 -0000
@@ -2733,6 +2733,7 @@
</xs:restriction>
</xs:simpleType>
</xs:attribute>
+ <xs:attribute name="Separator" type="xs:string"/>
<xs:attribute name="Permanent" type="YesNoType"/>
<xs:attribute name="System" type="YesNoType"/>
</xs:complexType>
STEP J. Build Wix MSI install package STEP J. Build Wix MSI install package
From the DOS command prompt window run: From the %AFSROOT% directory execute:
nmake /f NTMakefile wix nmake /f NTMakefile wix
@ -442,7 +424,7 @@ STEP K. Final Results
The build process generates its binaries in %AFSROOT%\DEST. The subdirectory The build process generates its binaries in %AFSROOT%\DEST. The subdirectory
would look like the following: would look like the following:
%AFSROOT%:\DEST\{checked,free}\ %AFSROOT%\DEST\{checked,free}\
bin bin
etc etc
include include
@ -454,7 +436,8 @@ would look like the following:
Bin - contains build utilities. Bin - contains build utilities.
root.client - contains Open AFS binaries root.client - contains Open AFS binaries
root.server - contain Open AFS Server 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 L. Optional Items STEP L. Optional Items