[wix-devs] [wix-users] WiX 3.10.1 failing to update to 3.10.2
rob at firegiant.com
Thu Mar 3 23:31:06 PST 2016
I've been thinking about this and I have a theory what broke.
Prior to v3.10.2 and the clean room, the code to cache files from the attached container used a file handle that was opened very early in the process. I explicitly remember commenting on the removal of that code when reviewing the clean room because it seemed like a really minor optimization. As the code was written, using the handle wouldn't work in the clean room (because clean room process doesn't have the container attached) so the optimization was removed.
So my hypothesis now is that optimization was what allowed updates with attached containers to work. Goes something like this in the code before v3.10.2:
1. A handle was opened to the updated bundle itself early in its start up.
2. Old bundle tried to delete the file but found it was in use so moved it to the temp folder and scheduled for deletion on restart.
3. Updated bundle needs file from attached container, uses handle it opened in step 1.
4. Everything works if though the file name for the handle changed in step 2.
So, one fix might be to bring back the opening of the handle code in the clean room, and use that for attached containers, much as code did pre-v3.10.2.
FireGiant | Dedicated support for the WiX toolset | http://www.firegiant.com/
From: wix-devs [mailto:wix-devs-bounces at lists.wixtoolset.org] On Behalf Of Sean Hall
Sent: Thursday, March 3, 2016 1:17 PM
To: WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
Subject: Re: [wix-devs] [wix-users] WiX 3.10.1 failing to update to 3.10.2
I also don't know how we should fix this in v3.10.3. The 3.10.2 bundle's
Burn engine is the one deleting the 3.10.3 bundle. So either we find out a
way for 3.10.3 bundles to block the immediate deletion (somehow lock the
file, at least until the parent bundle waited the 5 seconds?), or we would
have to copy the full bundle to the clean room.
More information about the wix-devs