From: Jeffrey Altman Date: Mon, 21 Jun 2004 18:23:36 +0000 (+0000) Subject: readme-nt-20040620 X-Git-Tag: openafs-devel-1_3_65~40 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=cb5052f2e9b0c060ac51cd52f4790a22a2b57e37 readme-nt-20040620 Update README-NT with details on Wix MSI installer (last time README-NT did not get picked up by cvs) --- diff --git a/README-NT b/README-NT index 436a684..37895c8 100644 --- a/README-NT +++ b/README-NT @@ -33,8 +33,10 @@ The following steps describe how to configure Windows 2000/XP: F. Build Win2000 binaries G. Install NSIS 2.0 H. Build NSIS Install Package - I. Final Results - J. Optional Items + I. Install Wix 2.0 + 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 @@ -269,7 +271,161 @@ From the DOS command prompt window run: nmake /f NTMakefile NSIS -STEP I. Final Results +STEP I. Install Wix MSI Installer + +Download the Wix 2.0.1727 installer from + + http://prdownloads.sourceforge.net/wix/sources-2.0.1727.0.zip + +Apply the following patches to the source tree and execute + + make ship + +from the \src\wix directory. + +Index: src/wix/Compiler.cs +=================================================================== +RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v +retrieving revision 1.9 +diff -u -b -r1.9 Compiler.cs +--- src/wix/Compiler.cs 31 May 2004 01:07:39 -0000 1.9 ++++ src/wix/Compiler.cs 20 Jun 2004 14:06:54 -0000 +@@ -657,7 +657,7 @@ + // add the core registry keys for each context in the class + for (int i = 0; i < contextCount; ++i) + { +- this.AddRegistryKey(sourceLineNumbers, null, 0, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[!", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context ++ 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 + { + if (null != iconIndex) +@@ -5710,6 +5710,20 @@ + break; + } + break; ++ 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; + case "Wait": + wait = Common.IsYes(attrib.Value, sourceLineNumbers, node.Name, attrib.Name, id) ? "1" : "0"; // strings used since integer column is nullable + break; +@@ -7034,6 +7048,7 @@ + } + bits ^= (bit * 65536); + break; ++ + default: + bit = this.NameToBit(MsiInterop.CommonControlAttributes, attrib.Name, attrib.Value, node.Name, id); + if (-1 == bit) +Index: src/wix/Decompiler.cs +=================================================================== +RCS file: /cvsroot/wix/wix/src/wix/Decompiler.cs,v +retrieving revision 1.6 +diff -u -b -r1.6 Decompiler.cs +--- src/wix/Decompiler.cs 21 May 2004 03:57:42 -0000 1.6 ++++ src/wix/Decompiler.cs 20 Jun 2004 14:06:54 -0000 +@@ -2562,7 +2562,7 @@ + this.writer.WriteAttributeString("Group", "yes"); + text = text.Substring(1); + } +- this.writer.WriteString(text); ++ this.writer.WriteAttributeString("Id", text); + this.writer.WriteEndElement(); + } + } +Index: src/wix/Preprocessor.cs +=================================================================== +RCS file: /cvsroot/wix/wix/src/wix/Preprocessor.cs,v +retrieving revision 1.4 +diff -u -b -r1.4 Preprocessor.cs +--- src/wix/Preprocessor.cs 31 May 2004 01:07:40 -0000 1.4 ++++ src/wix/Preprocessor.cs 20 Jun 2004 14:06:55 -0000 +@@ -269,12 +269,12 @@ + break; + case "ifdef": + 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.IsDefined(reader.Value.Trim()), IfState.If); + ignore = true; + break; + case "ifndef": + 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.IsDefined(reader.Value.Trim()), IfState.If); + ignore = true; + break; + case "elseif": +@@ -356,6 +356,8 @@ + break; + case "endforeach": // endforeach is handled in PreprocessForeach, so seeing it here is an error + throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), "Cannot have a processing instruction without a matching ."); ++ case "error": ++ throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), this.PreprocessVariables(reader.Value)); + default: + // Console.WriteLine("processing instruction: {0}, {1}", reader.Name, reader.Value); + break; +@@ -403,6 +405,22 @@ + } + + /// ++ /// 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); ++ } ++ ++ /// + /// Replaces parameters in the source text. + /// + /// Text that may contain parameters to replace. +Index: src/wix/Xsd/wix.xsd +=================================================================== +RCS file: /cvsroot/wix/wix/src/wix/Xsd/wix.xsd,v +retrieving revision 1.11 +diff -u -b -r1.11 wix.xsd +--- src/wix/Xsd/wix.xsd 31 May 2004 01:07:40 -0000 1.11 ++++ src/wix/Xsd/wix.xsd 20 Jun 2004 14:06:55 -0000 +@@ -1736,6 +1736,7 @@ + + + ++ + + + + + +STEP J. Build Wix MSI install package + +From the DOS command prompt window run: + + 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: @@ -289,7 +445,7 @@ would look like the following: WinInstall\OpenAFSforWindows.exe - is the install package for Open AFS -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