Here is the source code of the utility that generates Wix 3 markup (including binary, dword and multi-string registry values):
using System;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
namespace AbsReg2Wix
{
public class Program
{
#region Constants
private const string NS_URI = "http://schemas.microsoft.com/wix/2006/wi";
private const string RegEditorVersionPattern = @"Windows\sRegistry\sEditor\sVersion\s(?.*)";
private const string RegKeyPattern = @"\[(?[^\\]*)\\(?.*)\]";
private const string RegNameValuePattern = "\\\"(?.*)\\\"=(?\\\"?[^\\\\\\\"]*)(?\\\\?)";
private const RegexOptions DefaultRegexOptions = RegexOptions.Multiline |
RegexOptions.IgnorePatternWhitespace |
RegexOptions.CultureInvariant;
#endregion
#region Methods
///
/// Main applciation entry point
///
/// The args.
private static void Main(string[] args)
{
if (args.Length != 4)
{
PrintUsageInstructions();
return;
}
if (File.Exists(args[1]))
{
ConvertRegistryFileToWix(args[1], args[3]);
Console.WriteLine("Successfully completed conversion.");
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
else
{
Console.WriteLine(@"Input file {0} not found.", args[1]);
}
}
///
/// Prints the usage instructions.
///
private static void PrintUsageInstructions()
{
Console.WriteLine("Syntax: AbsReg2Wix.exe /in /out