This is a change in the MSBuild actions in very recent builds of WiX.
Instead of creating a new process it now loads the assembly in-process.
It looks like light.exe can't actually handle that - that various static
variables aren't being cleared down between sessions.
Unfortunately to revert requires changing the base class of
Microsoft.Tools.WindowsInstallerXml.Build.Tasks.Light (in
src\WixTasks\Light.cs) back to ToolTask, rather than WixToolTask, then
rebuilding.
You can probably get round it by creating a new AppDomain for each run
rather than reusing AppDomains. (A new AppDomain has its own copy of static
variables.)
I suggest logging a bug at http://sourceforge.net/tracker/?group_id=105970
<http://sourceforge.net/tracker/?group_id=105970&atid=642714> &atid=642714.
--
Mike Dimmick
_____
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Arild Bakken
Sent: 23 January 2008 10:37
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Trouble with Light in Visual Studio 2008 and Team
Build2008
Hi everyone,
I'm having trouble with Light.exe. I installed the January 11 build
(3.0.3711) and things work very well except that I can only build the Setup
project once for every time I start Visual Studio. When I build the first
time after I start Visual Studio 2008, everything is OK, but all builds
after that fail with "Light.exe exited with code 1". If I restart Visual
Studio I can build once again. I can live with that, cause all I have to do
is copy the light.exe commandline that Visual Studio shows in the output
into a commandprompt and it works.
The problem though is that this also happens with Team Build (TFS) when I
build both release and debug versions of the product. The first (usually
Release) builds fine, but the second fails. When running Team Build I get
additional error information (which I don't see when running in Visual
Studio):
light.exe : error LGHT0001 : Item has already been added. Key in dictionary:
'InstallUISequence/PrepareDlg' Key being added:
'InstallUISequence/PrepareDlg'
Exception Type: System.ArgumentException
Stack Trace:
at System.Collections.SortedList.Add(Object key, Object value)
at
Microsoft.Tools.WindowsInstallerXml.WixActionRowCollection.Add(WixActionRow
actionRow, Boolean overwrite)
at
Microsoft.Tools.WindowsInstallerXml.Linker.SequenceActions(RowCollection
actionRows, RowCollection suppressActionRows)
at Microsoft.Tools.WindowsInstallerXml.Linker.Link(SectionCollection
sections, ArrayList transforms)
at Microsoft.Tools.WindowsInstallerXml.Tools.Light.Run(String[] args)
Binder temporary directory located at 'C:\Documents and
Settings\_tfsservice\Local Settings\Temp\nnj-8nas'.
Validator temporary directory located at 'C:\Documents and
Settings\_tfsservice\Local Settings\Temp\3b6mv9ua'.
So, it looks like some stuff is "stuck" in memory between builds. It seems
that Visual Studio 2008 / TFS Build 2008 does not actually spawn a separate
process for light.exe, but seems to load the assembly into an appdomain - so
any static stuff would survive successive builds (this is guesswork, but I
never see a light.exe process during builds so I'm guessing VS loads the
assembly and runs stuff).
As a test I removed all UI stuff from the wix project (since the error
relates to InstallUISequence), and now I can build without problems, but of
course I would like some UI for the installer :-)
Has anyone else run into this problem? Is there a know fix?
Regards,
Arild
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users