/// <summary> /// Generates a wxs file for use by wix. /// </summary> /// <param name="args"> /// CMD.EXE: SimpleWix.exe [SourceFolder] [AddInName] [AddInVersion] [RevitVersions] [UpgradeCode] /// /// SourceFolder: The folder to build from. This will be the equivalent of the Autodesk\Revit\Addins\YYYY\ folder. e.g. "C:\repos\Interior Partition Tools\bin" /// /// AddInName: The name of your addin e.g. "Interior Partition Tools" /// /// AddInVersion: The version of your addin e.g. "0.0.0.1" /// /// RevitVersions: The revit versions to build for, separated by a "-", e.g. "2017-2018-2019" /// /// UpgradeCode: A GUID for your product. This essentially identifies your product as what it is, and let's the /// installer know to uninstall previous versions. If this changes your installer *will not* uninstall the previous /// version before installing this one. e.g. "ANY-VALID-GUID" /// </param> static void Main(string[] args) { try { if (args.Length > 0) { if (args[0].ToLower() == "init") { RunInit(); return; } } Manifest inputs = InputResult.GetManifest(args); QuietMode = inputs?.quietmode ?? false; Console.WriteLine(inputs.Print()); //Console.ReadKey(); ValidateManifest(inputs); printTitle(inputs); if (!QuietMode) { Console.WriteLine("Press any key to continue: ..."); Console.ReadKey(); } var fs = InputConverter.ConvertManifestToFileSystem(inputs.features); //Console.WriteLine(fs.Print()); var wix = WixConverter.ConvertFileSystem(fs, inputs.upgradecode, inputs.appname, inputs.version, inputs.icon, inputs.manufacturer, inputs.panel, inputs.banner, inputs.license); List <string> outPut = wix.Print(0); outPut.Insert(0, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); using (StreamWriter wr = new StreamWriter(inputs.outputfile)) { foreach (string s in outPut) { wr.WriteLine(s); } // xs.Serialize(wr, targetDir); } using (StreamReader sr = new StreamReader(inputs.outputfile)) { while (sr.Peek() >= 0) { sr.ReadLine(); //Console.WriteLine(sr.ReadLine()); } } int x = 0; Console.WriteLine("XML WixFile Succesfully Saved To: " + inputs.outputfile); Console.WriteLine(""); Console.WriteLine(""); if (inputs.complete ?? false) { var dir = Path.GetDirectoryName(inputs.outputfile); PrintDir(dir); var candlePath = FindCandlePath(); var wixobj = "\"" + inputs.outputfile.Replace(".wxs", ".wixobj") + "\""; Console.WriteLine(RunProcessAndWaitForOutput(candlePath, "\"" + inputs.outputfile + "\"" + " -out " + wixobj)); PrintDir(dir); Console.WriteLine(""); Console.WriteLine(""); var msi = wixobj.Replace(".wixobj", ".msi"); var lightPath = FindLightPath(); Console.Write(RunProcessAndWaitForOutput(lightPath, "-ext WixUIExtension " + wixobj + " -sice:ICE91" + " -out " + msi)); PrintDir(dir); } } catch (Exception e) { Console.WriteLine("An unexpected error occurred:" + Environment.NewLine + e.ToString()); if (!QuietMode) { Console.WriteLine(); Console.WriteLine("Press any key to exit ..."); Console.ReadKey(); } Environment.Exit(1); } if (!QuietMode) { Console.WriteLine(); Console.WriteLine("Press any key to exit ..."); Console.ReadKey(); } Console.WriteLine("Now exiting, goodbye."); }