XMLPreprocess Changelog

What's new in XMLPreprocess 3.2.0.0

Feb 20, 2018
  • What's new:
  • Added foreach feature
  • Fixed issue when spreadsheet was edited by Excel on Mac

New in XMLPreprocess 2.0.18 (Jul 31, 2013)

  • What's new in this release:
  • For XML Spreadsheet 2003 format, used the frozen row at the top of the worksheet to indicate the beginning of the values. This prevents you from having to start your values at row 7. This can be overridden with the /firstValueRow (or /vr) argument.
  • Issues Fixed Fix for Issue 13006:
  • Corrected default treatment of the value "false"

New in XMLPreprocess 2.0.16 (Aug 10, 2012)

  • Added MSBuild tasks and sample
  • Added WiX sample that uses WixCA
  • Local copy of the documentation included in the download
  • Made the old XML settings files also optionally support multiple environments by allowing you to specify nested prodvalue elements within the elements. This is backward compatible, and the old flatter format (single value) continues to work just fine, but you can now use the settings files as simplified spreadsheets and pass an additional /e: argument just like you do with them.
  • Added ability to count the number of times a property was used. This may be useful for cleaning unused values from spreadsheets. The argument is /countReportFile (or /cr) and you pass the name of a CSV file in which you want the counts written at the end of the preprocessing.
  • Converted solutions and projects to Visual Studio 2010
  • Web app to manage settings in database (not in distribution, only in Source Control)
  • Enabled an empty environment to be passed using the argument format /e:"" (then it will prompt for environment).
  • Fixed a defect in the Spreadsheet XML reader when cells are set to be Boolean data type, translated "1" and "0" to "True" and "False"

New in XMLPreprocess 2.0 RC2 (Jun 30, 2009)

  • Added a /noDirectives argument (/n for short) that treats the entire file as a single unit and just globally replaces all ${macro} values it encounters. It does not require any ifdef/else/endif directives. It works on all text file formats not just XML, so you can now replace macros in INI, CSV files etc.

New in XMLPreprocess 2.0 RC1 (Jun 29, 2009)

  • Fixed bug when extracting values using the /p argument. It did not properly resolve values that contained macros to other settings.

New in XMLPreprocess 2.0 Beta 8 (Mar 5, 2009)

  • Only prompting for environment - Useful if you are chaining together a series of XmlPreprocess calls and only want to prompt for environment once. You can pass /environmentFile: (or it's short form of /ef:) along with a spreadsheet file (/x). This will prompt the user for the environment they wish to use, write their selection to the provided text file and exit. Some other tool can then read the environment and pass it along on subsequent invocations of XmlPreprocessor using the /e argument.

New in XMLPreprocess 2.0 Beta 7 (Jan 19, 2009)

  • Dumping property values
  • Builds on the feature added in Beta 6 where you could dump out the environments, to the console, and adds the ability to also dump out property values, either all values for all environments, or a single value for a specific environment. This feature has proven to be very useful to data-drive build and deployment processes off of the spreadsheets, allowing the spreadsheet to be the single source-of-truth for configuration information.
  • #Defines
  • This builds on the dynamic property feature added in Beta 4, and allows you to declare the XPath or Regex expressions in the configuration document instead of in the spreadsheet. #defines get the XPath out of the spreadsheet, and out of the operations folks view, and into the config file, where it's more in the domain of the developers. The operation folks just see simple tokens.
  • UAC Run As Administrator shim executable
  • Added an optional executable shim to use in cases where you know you need to prompt for elevated permissions on Vista. XmlPreprocessAsAdmin.exe includes the necessary manifest to prompt for elevated privileges, then delegates all command line arguments to XmlPreprocess.exe. This is to get around a very specific situation faced on Vista when you are preprocessing something in a protected area such as under Program Files and need to elevate privileges. The alternative is to manually right click on XmlPreprocess.exe and use the Run as administrator check box on the compatibility tab. XmlPreprocessAsAdmin.exe is essentially empty, all it does is delegate all command line arguments to XmlPreprocess.exe. You probably will never need this, you don't need to distribute it, it's completely optional.

New in XMLPreprocess 2.0 Beta 6 (Dec 3, 2008)

  • Added new command line switch (/list or /l) to simply list out the environment names to the console (which you can easily redirect into a file using >). This could be useful if you want to data drive some automated process that uses the available environments and let the spreadsheet be the single source-of-truth.

New in XMLPreprocess 2.0 Beta 4 (Nov 26, 2008)

  • /v switch now also performs a final check to ensure the output file is well-formed XML. If it is not, an error code is returned, and the file is written out with the extension ".error" for further inspection.
  • Added XPath and regular expression dynamic properties. This is a new way you can perform replacements in your configuration "from the outside" in cases where you can not decorate the file with preprocessor comments, or when you want to make structural changes to your document like removing nodes or inserting XML.

New in XMLPreprocess 2.0 Beta 1 (Nov 25, 2008)

  • Ability to import spreadsheets directly, eliminating the need to export to individual settings files. (Very special thanks to Tom Abraham for the use of his code from the Environment Settings Manager project.)
  • New switch (/v) to validate tokens, so if any replacement tokens are missing, it will report an error message identifying the missing tokens, return a nonzero error code and not write out the file.
  • Ability to override the special treatment of "False" values by passing /f or /fixfalse parameter. When /f is passed, a "false" value is treated as a regular literal value (as it should have been to start), For backward compatibility, this behavior requires the switch to be passed.