This project is read-only.


This is a small library of useful tasks that I not found elsewhere, and that I have had need for in order to implement proper change management and version control in continuous integration environments.


The purpose is to deterministically generate a Guid from a string. This is useful among other cases when a Windows Installer upgrade code needs to be generated for example. Other similar situations exist, when for example a path needs to be represented by a consistent Guid.

Input: SourceString
Output: ResultGuid


Get the most recent changeset from TFS. Useful to provide automatic version numbering of releases. I typically use the changeset as the 3rd number in the version hiearchy, i.e. Major.Minor.Changeset.0 (remember that Windows Installer ignores the 4th number, and thus treats x.y.z.0 and x.y.z.1 as the same version).

Input: LocalPath - The local filesystem path of the mapped repository to find the version for.
Input: TfsExecutablePath - The path to the tf.exe executable, as this task invokes the command line tool for this.
Output: Changeset - The changeset from TFS.


Format XML consistently with 4 spaces indent, and each attribute on a new line. If no change is made by pretty-printing, the corresponding destination file is not updated, but left unchanged.

This is useful to keep generated XML consistent, readable and to mimimize changes in source control. Also it looks nice!

Input: SourceFiles - Items that should be pretty-printed.
Input: DestinationFiles - Items that should be written with the pretty-printed output.


This generates a WiX fragment with one component for each file in the input. It will generate consistent Guids so updates work as expected, i.e. files with the same name and location will be determined to refer to the same component by Windows Installer.

The task improves on the 'Harvest' task primarily by its increased flexibility to allow an arbitrary item collection of paths to be passed as input, and also in the ability to provide other parameters as detailed below.

Input: ComponentFiles - An item collection with all the files to generate components for.
Input: OutputFile - The path to the file to write the fragment to.
Input: BaseDirectory - The base directory of the files in the collection.
Input: DirectoryRefId - The Id to sue to refer to the base directory in the fragment, this lets you determine where the files are actually installed in your main WiX file.
Input: ComponentGroupId - The id to name the component group, so you can refer to it in your main WiX file.
Input: RegistryKey - The registry key to use as key path for the component group.
Input: UpgradeCode - The upgrade code to include in the calculation of the guids, this makes it possible to consistently generate different Guids for the components depending on the UpgradeCode of the actual installer and is useful for variants of the same installer.

Last edited Jan 5, 2012 at 10:42 AM by svante, version 4


No comments yet.