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

Reply via email to