I'm using WiX to build MSIs as part of a NAnt-based
build script. I'm running into problems as I attempt to
add dialog elements modeled on a dark decompilation
of UISample.Msi from the platform SDK. I commented
out the UI portion of one of my two WXS files and
uncommented stuff until I got down to two (adjacent)
lines in a dialog that I could not uncomment without
breaking candle. I started playing around with adding
other simple controls in their place (banner lines, etc.)
and couldn't make that work either. Eventually I just
started adding X's to the end of the ID of one of the
controls that was working. Adding a few X's would
work, but more than 30 or so and it would break. It
seems that if the overall size of the XML (after
comments are removed) passes a certain point, candle
starts failing. The relevant portion of the stack trace is
given below ([exec] prefixes an artifact of using NAnt).
I'm using the Votive install of WiX 2.0.3116.0. Am I
bumping up against some kind of size/buffer limitation?
[exec] candle.exe : error CNDL0001 : Cannot have '?>'
inside an XML process
ing instruction.
[exec]
[exec] Exception Type: System.ArgumentException
[exec]
[exec] Stack Trace:
[exec] at
System.Xml.XmlTextWriter.WriteProcessingInstruction
(String nam
e, String text)
[exec] at
System.Xml.XmlProcessingInstruction.WriteTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo
(XmlWriter w)
[exec] at
System.Xml.XmlDocument.WriteContentTo(XmlWriter
xw)
[exec] at System.Xml.XmlDocument.WriteTo
(XmlWriter w)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Compiler.ValidateD
ocument(
XmlDocument document)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Compiler.Compile
(XmlDocume
nt source, String sourcePath)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Tools.Candle.Run
(String[]
args)
Logged In: YES
user_id=1015014
To make matters even more fun, I tried addressing this
problem by splitting out the UI into a fragment as a separate
WXS file. That worked like a charm. I was able to
uncomment the portions that had been causing trouble, and
everything compiled, linked, and ran fine. However, I decided
that my UI.wxs file needed a new name, so I copy/pasted the
file, updated the candle and light command lines, and... now
it doesn't work. I tried a couple of different file names, but it
only works when I set it back to compile and link the original
UI.wxs copy of the file. A diff program shows no difference
between the files, and Visual Studio .NET says they're saved
with the same codepage. The error I get is as follows. I also
saw this error during certain attempts at getting the single-file
solution working.
[exec] candle.exe : error CNDL0001 : Cannot have '?>' inside
an XML process
ing instruction.
[exec]
[exec] Exception Type: System.ArgumentException
[exec]
[exec] Stack Trace:
[exec] at
System.Xml.XmlTextWriter.WriteProcessingInstruction(String
nam
e, String text)
[exec] at System.Xml.XmlProcessingInstruction.WriteTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteContentTo
(XmlWriter w)
[exec] at System.Xml.XmlElement.WriteTo(XmlWriter w)
[exec] at System.Xml.XmlDocument.WriteContentTo
(XmlWriter xw)
[exec] at System.Xml.XmlDocument.WriteTo(XmlWriter
w)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Compiler.ValidateDocum
ent(
XmlDocument document)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Compiler.Compile
(XmlDocume
nt source, String sourcePath)
[exec] at
Microsoft.Tools.WindowsInstallerXml.Tools.Candle.Run(String
[]
args)
Logged In: YES
user_id=991639
Do you have the .NET Framework 1.1 SP1 applied? This
problem usually ends up being tracked down to a bug in the
Framework's XmlReader processing of the processing
directives.
Feel free to reopen this bug if SP1 does not fix the issue.
Logged In: YES
user_id=1386824
I am running into this same problem and I have .NET
Framemaker 1.1 SP1 installed. Is the answer in the
duplicate bug report?
C:/temp/MCR/newjob131153/Wix-2.0/candle.exe -out
C:\temp/MCR/newjob131153/bin/
C:\temp/MCR/newjob131153/NewMCRMergeModule.wxs
C:\temp/MCR/newjob131153/NewMCRfragment.wxsexecuting
C:/temp/MCR/newjob131153/Wix-2.0/candle.exe -out
C:\temp/MCR/newjob131153/bin/
C:\temp/MCR/newjob131153/NewMCRMergeModule.wxs
C:\temp/MCR/newjob131153/NewMCRfragment.wxs
Microsoft (R) Windows Installer Xml Compiler version
2.0.3309.0
Copyright (C) Microsoft Corporation 2003. All rights
reserved.
NewMCRMergeModule.wxs
NewMCRfragment.wxs
candle.exe : error CNDL0001 : Cannot have '?>' inside an
XML processing instruction.
Exception Type: System.ArgumentException
Stack Trace:
at System.Xml.XmlTextWriter.WriteProcessingInstruction
(String name, String text)
at System.Xml.XmlProcessingInstruction.WriteTo(XmlWriter
w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlElement.WriteContentTo(XmlWriter w)
at System.Xml.XmlElement.WriteTo(XmlWriter w)
at System.Xml.XmlDocument.WriteContentTo(XmlWriter xw)
at System.Xml.XmlDocument.WriteTo(XmlWriter w)
at
Microsoft.Tools.WindowsInstallerXml.Compiler.ValidateDocumen
t(XmlDocument document)
at Microsoft.Tools.WindowsInstallerXml.Compiler.Compile
(XmlDocument source, String sourcePath)
at Microsoft.Tools.WindowsInstallerXml.Tools.Candle.Run
(String[] args)
***system call died - returned 256