Update of /cvsroot/wix/wix/src/ext/sca/wixext In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14145/src/ext/sca/wixext Modified Files: AssemblyInfo.cs ScaCompilerExtension.cs ScaExtension.cs Added Files: ScaDecompilerExtension.cs ScaExtension.csproj Removed Files: ScaExt.csproj Log Message: DerekC: Support a shorter syntax for specifying wix extensions on the command line. SBonev: Make PropertyRef extensible. DerekC: Update all internal WiX extensions to the latest "standards". DerekC: Lots of decompiler-related bug fixes: - warn when a table is decompiled as a custom table - Add decompiler support for the SecureObjects, ServiceConfig, ServiceControl, ServiceInstall, and XmlFile tables (and turn on the corresponding decompilation qtests) - Fix a canonicalization bug when extracting embedded cabinet files - Fix a dark and light bug related to showing the path to the temp working directory when binder or decompiler construction doesn't occur - Fix a problem with all extensions whereby each call to get a particular extension-type (like a CompilerExtension) would return a new instance of that extension instead of one - Move the User, UserGroup, and Group table definitions over to the sca extension where they belong (from the WiX core) - Setup the infrastructure for the ScaDecompiler extension - Rename the ScaExt project to ScaExtension to match other extensions - Fix an error message in the compilation of CustomTables - Remove unused code from the compilation of the ServiceInstall elements - Fix a bug in the linker related to handing of null values in the CustomTable support DerekC: Random decompiler and light fixes: - Fix decompilation of sequence tables when there are sequence number collisions - Read the dark option for suppressing relative action sequencing from the "sras" option instead of the "srs" option - Fix a decompilation bug with ensuring empty custom tables - Fix a binder bug with setting different compression levels on multiple cabinet files - Fix a binder bug with honoring the supress assemblies and suppress gathering file hash/version/language/size information options - Simplify the fix for the notidy option in light and dark - Implement decompilation for the ExecuteAction and InstallAdminPackage actions - Make the decompiler switch to absolute sequencing mode when it detect any action that will require absolute sequencing (this ensures that absolutely sequenced actions will always be in the proper locations in the final output). In real usage, this means that the AppSearch action will often trigger absolute sequencing mode - but its better to be safe then try to minimize authoring DerekC: Implement decompiler support for patch creation (pcp) files. DerekC: Embed the serverca binary wixlib file inside its extension (and add the necessary functionality to the WiX toolset to support completely self-contained extensions). DerekC: Stop nesting the Binary element inside the serverca schema and fix a recent regression with serverca error messages throwing an exception. DerekC: Add decompiler support for the remaining merge module tables ModuleAdvtUISequence, ModuleConfiguration, ModuleDependency, ModuleIgnoreTable, and ModuleSubstitution. Add compiler support for the ModuleIgnoreTable table. Fix a bug in the compiler for parsing of the ModuleDependency table. DerekC: Add support for hard-coding the Feature.Display column's value. Don't allow features to be simultaneously nested under a Product element and another element since a feature can only have one parent feature (or none). RGustin: Add MMC Snap-In registration extension. Move Compiler.GenerateIdentifier to CompilerCore.GenerateIdentifier to make it available to extensions. RobMen: Allow MsiAssembly table to be suppressed using -sma switch to light. BobArnso: Add back the ProgressText (ActionText) and Error loc strings; enabled their use by adding UIRef/@Id="WixUI_ErrorProgressText" to your source. ScotK: 4 ServerCA related fixes: - Fixing compiler support for rollback actions on SqlScript and SqlStrings. - Cleaning up usage of defines from Server CAs. - Adding support for RollbackOnReinstall support to compiler since CAs already supported it. - BREAKING CHANGE: Changed casing of ExecuteOnReInstall to ExecuteOnReinstall for SqlScript and SqlString. RobMen: Generate caerr.wxi --- ScaExt.csproj DELETED --- --- NEW FILE: ScaDecompilerExtension.cs --- //------------------------------------------------------------------------------------------------- // <copyright file="ScaCompilerExtension.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // // The use and distribution terms for this software are covered by the // Common Public License 1.0 (http://opensource.org/licenses/cpl.php) // which can be found in the file CPL.TXT at the root of this distribution. // By using this software in any fashion, you are agreeing to be bound by // the terms of this license. // // You must not remove this notice, or any other, from this software. // </copyright> // // <summary> // The server decompiler extension for the Windows Installer Xml toolset. // </summary> //------------------------------------------------------------------------------------------------- namespace Microsoft.Tools.WindowsInstallerXml.Extensions [...2250 lines suppressed...] Sca.WebAddress webAddress = (Sca.WebAddress)this.Core.GetIndexedElement(row); if (!addedWebAddresses.Contains(webAddress)) { Sca.WebSite webSite = (Sca.WebSite)this.Core.GetIndexedElement("IIsWebSite", (string)row[1]); if (null != webSite) { webSite.AddChild(webAddress); } else { this.Core.OnMessage(WixWarnings.ExpectedForeignRow(this.Core.SourceLineNumbers, iisWebAddressTable.Name, row.GetPrimaryKey(DecompilerCore.PrimaryKeyDelimiter), "Web_", (string)row[1], "IIsWebSite")); } } } } } } } Index: ScaCompilerExtension.cs =================================================================== RCS file: /cvsroot/wix/wix/src/ext/sca/wixext/ScaCompilerExtension.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ScaCompilerExtension.cs 8 Dec 2005 01:02:33 -0000 1.1 --- ScaCompilerExtension.cs 26 Dec 2005 12:05:53 -0000 1.2 *************** *** 17,21 **** //------------------------------------------------------------------------------------------------- ! namespace Microsoft.Tools.WindowsInstallerXml { using System; --- 17,21 ---- //------------------------------------------------------------------------------------------------- ! namespace Microsoft.Tools.WindowsInstallerXml.Extensions { using System; *************** *** 31,40 **** public sealed class ScaCompilerExtension : CompilerExtension { - private static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" }; - private static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" }; - private static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" }; - private XmlSchema schema; /// <summary> /// Gets the schema for this extension. --- 31,64 ---- public sealed class ScaCompilerExtension : CompilerExtension { private XmlSchema schema; + // user creation attributes definitions (from sca.h) + internal const int ScaUDontExpirePasswrd = 0x00000001; + internal const int ScaUPasswdCantChange = 0x00000002; + internal const int ScaUPasswdChangeReqdOnLogin = 0x00000004; + internal const int ScaUDisableAccount = 0x00000008; + internal const int ScaUFailIfExists = 0x00000010; + internal const int ScaUUpdateIfExists = 0x00000020; + + internal const int ScaUDontRemoveOnUninstall = 0x00000100; + internal const int ScaUDontCreateUser = 0x00000200; + + // sql database attributes definitions (from sca.h) + internal const int ScaDbCreateOnInstall = 0x00000001; + internal const int ScaDbDropOnUninstall = 0x00000002; + internal const int ScaDbContinueOnError = 0x00000004; + internal const int ScaDbDropOnInstall = 0x00000008; + internal const int ScaDbCreateOnUninstall = 0x00000010; + internal const int ScaDbConfirmOverwrite = 0x00000020; + internal const int ScaDbCreateOnReinstall = 0x00000040; + internal const int ScaDbDropOnReinstall = 0x00000080; + + // sql string/script attributes definitions (from sca.h) + internal const int ScaSqlExecuteOnInstall = 0x00000001; + internal const int ScaSqlExecuteOnUninstall = 0x00000002; + internal const int ScaSqlContinueOnError = 0x00000004; + internal const int ScaSqlRollback = 0x00000008; + internal const int ScaSqlExecuteOnReinstall = 0x00000010; + /// <summary> /// Gets the schema for this extension. *************** *** 47,51 **** if (null == this.schema) { ! this.schema = LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Xsd.sca.xsd"); } --- 71,75 ---- if (null == this.schema) { ! this.schema = LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Xsd.sca.xsd"); } *************** *** 193,274 **** /// <summary> - /// Parses a binary element. - /// </summary> - /// <param name="node">Element to parse.</param> - /// <returns>Identifier for the new row.</returns> - private string ParseBinaryElement(XmlNode node) - { - SourceLineNumberCollection sourceLineNumbers = this.Core.GetSourceLineNumbers(node); - string id = null; - string sourceFile = null; - - foreach (XmlAttribute attrib in node.Attributes) - { - switch (attrib.LocalName) - { - case "Id": - id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); - break; - case "SourceFile": - case "src": - if (null != sourceFile) - { - this.Core.OnMessage(WixErrors.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name, "SourceFile", "src")); - } - - if ("src" == attrib.LocalName) - { - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name, attrib.Name, "SourceFile")); - } - sourceFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - break; - default: - this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); - break; - } - } - - if (null == id) - { - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Id")); - id = CompilerCore.IllegalIdentifier; - } - else if (CompilerCore.IllegalIdentifier != id) // only check legal values - { - if (55 < id.Length) - { - this.Core.OnMessage(WixErrors.StreamNameTooLong(sourceLineNumbers, node.Name, "Id", id, id.Length, 55)); - } - else if (18 < id.Length) - { - this.Core.OnMessage(WixWarnings.IdentifierCannotBeModularized(sourceLineNumbers, node.Name, "Id", id, id.Length, 18)); - } - } - - if (null == sourceFile) - { - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "SourceFile")); - } - - // find unexpected child elements - foreach (XmlNode child in node.ChildNodes) - { - if (XmlNodeType.Element == child.NodeType) - { - this.Core.UnexpectedElement(node, child); - } - } - - if (!this.Core.EncounteredError) - { - Row row = this.Core.CreateRow(sourceLineNumbers, "Binary"); - row[0] = id; - row[1] = sourceFile; - } - - return id; - } - - /// <summary> /// Parses a certificate element. /// </summary> --- 217,220 ---- *************** *** 503,507 **** if (1 > node.ChildNodes.Count) { ! this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name, "Permission")); } --- 449,453 ---- if (1 > node.ChildNodes.Count) { ! this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name, "FileSharePermission")); } *************** *** 557,565 **** default: YesNoType attribValue = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); ! if (!CompilerCore.NameToBit(StandardPermissions, attrib.Name, attribValue, bits, 16)) { ! if (!CompilerCore.NameToBit(GenericPermissions, attrib.Name, attribValue, bits, 28)) { ! if (!CompilerCore.NameToBit(FolderPermissions, attrib.Name, attribValue, bits, 0)) { this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); --- 503,511 ---- default: YesNoType attribValue = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); ! if (!CompilerCore.NameToBit(ScaExtension.StandardPermissions, attrib.Name, attribValue, bits, 16)) { ! if (!CompilerCore.NameToBit(ScaExtension.GenericPermissions, attrib.Name, attribValue, bits, 28)) { ! if (!CompilerCore.NameToBit(ScaExtension.FolderPermissions, attrib.Name, attribValue, bits, 0)) { this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); *************** *** 892,900 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 32; } else { ! attributes &= ~32; } break; --- 838,846 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbConfirmOverwrite; } else { ! attributes &= ~ScaDbConfirmOverwrite; } break; *************** *** 907,915 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 4; } else { ! attributes &= ~4; } break; --- 853,861 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbContinueOnError; } else { ! attributes &= ~ScaDbContinueOnError; } break; *************** *** 922,930 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 1; } else { ! attributes &= ~1; } break; --- 868,876 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbCreateOnInstall; } else { ! attributes &= ~ScaDbCreateOnInstall; } break; *************** *** 937,945 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x40; } else { ! attributes &= ~0x40; } break; --- 883,891 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbCreateOnReinstall; } else { ! attributes &= ~ScaDbCreateOnReinstall; } break; *************** *** 952,960 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 16; } else { ! attributes &= ~16; } break; --- 898,906 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbCreateOnUninstall; } else { ! attributes &= ~ScaDbCreateOnUninstall; } break; *************** *** 970,978 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 8; } else { ! attributes &= ~8; } break; --- 916,924 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbDropOnInstall; } else { ! attributes &= ~ScaDbDropOnInstall; } break; *************** *** 985,993 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x80; } else { ! attributes &= ~0x80; } break; --- 931,939 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbDropOnReinstall; } else { ! attributes &= ~ScaDbDropOnReinstall; } break; *************** *** 1001,1009 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 2; } else { ! attributes &= ~2; } break; --- 947,955 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaDbDropOnUninstall; } else { ! attributes &= ~ScaDbDropOnUninstall; } break; *************** *** 1225,1228 **** --- 1171,1175 ---- case "BinaryKey": binary = this.Core.GetAttributeValue(sourceLineNumbers, attrib); + this.Core.AddValidReference("Binary", binary); break; case "Sequence": *************** *** 1245,1253 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 4; } else { ! attributes &= ~4; } break; --- 1192,1200 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlContinueOnError; } else { ! attributes &= ~ScaSqlContinueOnError; } break; *************** *** 1255,1273 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 1; } else { ! attributes &= ~1; } break; ! case "ExecuteOnReInstall": if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x10; } else { ! attributes &= ~0x10; } break; --- 1202,1220 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnInstall; } else { ! attributes &= ~ScaSqlExecuteOnInstall; } break; ! case "ExecuteOnReinstall": if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnReinstall; } else { ! attributes &= ~ScaSqlExecuteOnReinstall; } break; *************** *** 1275,1283 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 2; } else { ! attributes &= ~2; } break; --- 1222,1230 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnUninstall; } else { ! attributes &= ~ScaSqlExecuteOnUninstall; } break; *************** *** 1285,1293 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 8; } else { ! attributes &= ~8; } break; --- 1232,1254 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnInstall; ! attributes |= ScaSqlRollback; } else { ! attributes &= ~ScaSqlExecuteOnInstall; ! attributes &= ~ScaSqlRollback; ! } ! break; ! case "RollbackOnReinstall": ! if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) ! { ! attributes |= ScaSqlExecuteOnReinstall; ! attributes |= ScaSqlRollback; ! } ! else ! { ! attributes |= ~ScaSqlExecuteOnReinstall; ! attributes |= ~ScaSqlRollback; } break; *************** *** 1295,1306 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 16; } else { ! attributes &= ~16; } break; - default: this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); --- 1256,1268 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnUninstall; ! attributes |= ScaSqlRollback; } else { ! attributes |= ~ScaSqlExecuteOnUninstall; ! attributes |= ~ScaSqlRollback; } break; default: this.Core.UnexpectedAttribute(sourceLineNumbers, attrib); *************** *** 1314,1317 **** --- 1276,1284 ---- } + if (null == binary) + { + this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "BinaryKey")); + } + foreach (XmlNode child in node.ChildNodes) { *************** *** 1321,1330 **** { case "Binary": ! if (null != binary) ! { ! this.Core.OnMessage(ScaErrors.SingleBinaryRequired(sourceLineNumbers, node.Name)); ! } ! ! binary = this.ParseBinaryElement(child); break; default: --- 1288,1292 ---- { case "Binary": ! this.Core.OnMessage(ScaErrors.DeprecatedBinaryChildElement(sourceLineNumbers, node.Name)); break; default: *************** *** 1335,1346 **** } - if (null == binary) - { - this.Core.OnMessage(ScaErrors.SingleBinaryRequired(sourceLineNumbers, node.Name)); - } - else - { - this.Core.AddValidReference("Binary", binary); - } this.Core.AddValidReference("User", user); --- 1297,1300 ---- *************** *** 1389,1397 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 4; } else { ! attributes &= ~4; } break; --- 1343,1351 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlContinueOnError; } else { ! attributes &= ~ScaSqlContinueOnError; } break; *************** *** 1399,1417 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 1; } else { ! attributes &= ~1; } break; ! case "ExecuteOnReInstall": if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x10; } else { ! attributes &= ~0x10; } break; --- 1353,1371 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnInstall; } else { ! attributes &= ~ScaSqlExecuteOnInstall; } break; ! case "ExecuteOnReinstall": if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnReinstall; } else { ! attributes &= ~ScaSqlExecuteOnReinstall; } break; *************** *** 1419,1427 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 2; } else { ! attributes &= ~2; } break; --- 1373,1381 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnUninstall; } else { ! attributes &= ~ScaSqlExecuteOnUninstall; } break; *************** *** 1429,1437 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 8; } else { ! attributes &= ~8; } break; --- 1383,1405 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnInstall; ! attributes |= ScaSqlRollback; } else { ! attributes &= ~ScaSqlExecuteOnInstall; ! attributes &= ~ScaSqlRollback; ! } ! break; ! case "RollbackOnReinstall": ! if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) ! { ! attributes |= ScaSqlExecuteOnReinstall; ! attributes |= ScaSqlRollback; ! } ! else ! { ! attributes &= ~ScaSqlExecuteOnReinstall; ! attributes &= ~ScaSqlRollback; } break; *************** *** 1439,1447 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 16; } else { ! attributes &= ~16; } break; --- 1407,1417 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaSqlExecuteOnUninstall; ! attributes |= ScaSqlRollback; } else { ! attributes &= ~ScaSqlExecuteOnUninstall; ! attributes &= ~ScaSqlRollback; } break; *************** *** 1542,1546 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000002; //#define SCAU_PASSWD_CANT_CHANGE 0x00000002 } break; --- 1512,1516 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUPasswdCantChange; } break; *************** *** 1553,1557 **** if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000200; //#define SCAU_DONT_CREATE_USER 0x00000200 } break; --- 1523,1527 ---- if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUDontCreateUser; } break; *************** *** 1564,1568 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000008; //#define SCAU_DISABLE_ACCOUNT 0x00000008 } break; --- 1534,1538 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUDisableAccount; } break; *************** *** 1578,1582 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000010; //#define SCAU_FAIL_IF_EXISTS 0x00000010 } break; --- 1548,1552 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUFailIfExists; } break; *************** *** 1595,1599 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000004; //#define SCAU_PASSWD_CHANGE_REQD_ON_LOGIN 0x00000004 } break; --- 1565,1569 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUPasswdChangeReqdOnLogin; } break; *************** *** 1606,1610 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000001; //#define SCAU_DONT_EXPIRE_PASSWRD 0x00000001 } break; --- 1576,1580 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUDontExpirePasswrd; } break; *************** *** 1617,1621 **** if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000100; //#define SCAU_DONT_REMOVE_ON_UNINSTALL 0x00000100 } break; --- 1587,1591 ---- if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUDontRemoveOnUninstall; } break; *************** *** 1628,1632 **** if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= 0x00000020; //#define SCAU_UPDATE_IF_EXISTS 0x00000020 } break; --- 1598,1602 ---- if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) { ! attributes |= ScaUUpdateIfExists; } break; *************** *** 1798,1801 **** --- 1768,1783 ---- case "DefaultScript": defaultScript = this.Core.GetAttributeValue(sourceLineNumbers, attrib); + switch (defaultScript) + { + case CompilerCore.IllegalEmptyAttributeValue: + break; + case "JScript": + case "VBScript": + // these are valid values + break; + default: + this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, node.Name, attrib.Name, defaultScript, "JScript", "VBScript")); + break; + } break; case "Isolation": *************** *** 3101,3105 **** string keyAddress = null; string log = null; ! int sequence = -1; int state = CompilerCore.IntegerNotSet; --- 3083,3087 ---- string keyAddress = null; string log = null; ! int sequence = CompilerCore.IntegerNotSet; int state = CompilerCore.IntegerNotSet; *************** *** 3280,3283 **** --- 3262,3270 ---- } + if (null == keyAddress) + { + this.Core.OnMessage(WixErrors.ExpectedElement(sourceLineNumbers, node.Name, "WebAddress")); + } + this.Core.AddValidReference("Directory", directory); this.Core.AddValidReference("IIsWebApplication", application); *************** *** 3314,3318 **** row[8] = dirProperties; row[9] = application; ! row[10] = sequence; row[11] = log; } --- 3301,3308 ---- row[8] = dirProperties; row[9] = application; ! if (CompilerCore.IntegerNotSet != sequence) ! { ! row[10] = sequence; ! } row[11] = log; } Index: AssemblyInfo.cs =================================================================== RCS file: /cvsroot/wix/wix/src/ext/sca/wixext/AssemblyInfo.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AssemblyInfo.cs 7 Nov 2005 22:47:31 -0000 1.1 --- AssemblyInfo.cs 26 Dec 2005 12:05:53 -0000 1.2 *************** *** 22,30 **** using System.Runtime.InteropServices; ! [assembly: AssemblyTitle("server custom actions extension - Windows Installer XML")] ! [assembly: AssemblyDescription("WiX Sca Extension")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft Corporation")] ! [assembly: AssemblyProduct("Windows Installer XML")] [assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] --- 22,33 ---- using System.Runtime.InteropServices; ! using Microsoft.Tools.WindowsInstallerXml; ! using Microsoft.Tools.WindowsInstallerXml.Extensions; ! ! [assembly: AssemblyTitle("WiX Toolset Server Custom Actions Extension")] ! [assembly: AssemblyDescription("Windows Installer XML Toolset Server Custom Actions Extension")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft Corporation")] ! [assembly: AssemblyProduct("Windows Installer XML Toolset")] [assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] *************** *** 32,33 **** --- 35,37 ---- [assembly: CLSCompliant(true)] [assembly: ComVisible(false)] + [assembly: AssemblyDefaultWixExtension(typeof(ScaExtension))] --- NEW FILE: ScaExtension.csproj --- (This appears to be a binary file; contents omitted.) Index: ScaExtension.cs =================================================================== RCS file: /cvsroot/wix/wix/src/ext/sca/wixext/ScaExtension.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ScaExtension.cs 8 Dec 2005 01:02:33 -0000 1.2 --- ScaExtension.cs 26 Dec 2005 12:05:54 -0000 1.3 *************** *** 17,21 **** //------------------------------------------------------------------------------------------------- ! namespace Microsoft.Tools.WindowsInstallerXml { using System; --- 17,21 ---- //------------------------------------------------------------------------------------------------- ! namespace Microsoft.Tools.WindowsInstallerXml.Extensions { using System; *************** *** 27,31 **** public sealed class ScaExtension : WixExtension { ! TableDefinitionCollection tableDefinitions; /// <summary> --- 27,38 ---- public sealed class ScaExtension : WixExtension { ! internal static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" }; ! internal static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" }; ! internal static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" }; ! ! private Library library; ! private ScaCompilerExtension scaCompilerExtension; ! private ScaDecompilerExtension scaDecompilerExtension; ! private TableDefinitionCollection tableDefinitions; /// <summary> *************** *** 35,39 **** public override CompilerExtension CompilerExtension { ! get { return new ScaCompilerExtension(); } } --- 42,71 ---- public override CompilerExtension CompilerExtension { ! get ! { ! if (null == this.scaCompilerExtension) ! { ! this.scaCompilerExtension = new ScaCompilerExtension(); ! } ! ! return this.scaCompilerExtension; ! } ! } ! ! /// <summary> ! /// Gets the optional decompiler extension. ! /// </summary> ! /// <value>The optional decompiler extension.</value> ! public override DecompilerExtension DecompilerExtension ! { ! get ! { ! if (null == this.scaDecompilerExtension) ! { ! this.scaDecompilerExtension = new ScaDecompilerExtension(); ! } ! ! return this.scaDecompilerExtension; ! } } *************** *** 48,52 **** if (null == this.tableDefinitions) { ! this.tableDefinitions = LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Data.tables.xml"); } --- 80,84 ---- if (null == this.tableDefinitions) { ! this.tableDefinitions = LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Data.tables.xml"); } *************** *** 54,57 **** --- 86,103 ---- } } + + /// <summary> + /// Gets the library associated with this extension. + /// </summary> + /// <param name="tableDefinitions">The table definitions to use while loading the library.</param> + public override Library GetLibrary(TableDefinitionCollection tableDefinitions) + { + if (null == this.library) + { + this.library = LoadLibraryHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Data.sca.wixlib", tableDefinitions); + } + + return this.library; + } } } |