diff --git a/src/SquirrelCli/Program.cs b/src/SquirrelCli/Program.cs index 8d14eeda..60667d6a 100644 --- a/src/SquirrelCli/Program.cs +++ b/src/SquirrelCli/Program.cs @@ -381,10 +381,16 @@ namespace SquirrelCli var setupExeDir = Path.GetDirectoryName(setupExe); var setupName = Path.GetFileNameWithoutExtension(setupExe); var culture = CultureInfo.GetCultureInfo(package.Language ?? "").TextInfo.ANSICodePage; - var templateText = File.ReadAllText(HelperExe.WixTemplatePath); + + // WiX Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or + // periods(.). Every identifier must begin with either a letter or an underscore. + var wixId = Regex.Replace(package.Id, @"[^\w\.]", "_"); + if (Char.GetUnicodeCategory(wixId[0]) == UnicodeCategory.DecimalDigitNumber) + wixId = "_" + wixId; + var templateData = new Dictionary { - { "Id", package.Id }, + { "Id", wixId }, { "Title", package.ProductName }, { "Author", package.ProductCompany }, { "Version", package.Version.Version.ToString() },