Menu

#1420 Pyro patch does not update GAC assembly

v3.0
closed
pyro (39)
2012-09-15
2008-11-23
LordLarry
No

I am using Wix v3.0.4721.0 and tried the creating a patch with Pyro. I have found a problem where .Net assemblies put in the GAC do not get updated when only the file version changes. I know that only changing the file version is not preferred.

I also used the -fv option for each light.exe command to make it work in the first place.

I have made a v1.0 msi and a .v1.1 small update msi. When installing v1.1 with the command below it updates the assembly in the GAC just fine. I can see that by browsing to the GAC (C:\Windows\Assembly), looking for Package1 and then right click Properties - Version. The file version is 1.1.0.0.

msiexec /i product.msi REINSTALL=ALL REINSTALLMODE=vomus

When making a patch between v1.0 and v1.1 using Pyro (http://blogs.msdn.com/astebner/archive/2007/10/26/5700191.aspx) applying the patch does not update the assembly in the GAC.

When making the same patch with the old method using msimsp (http://www.tramontana.co.hu/wix/lesson4.php) applying the patch does update the assembly in the GAC.

I therefore conclude there must be a problem in Pyro which causes the .Net assembly in the GAC not to be updated when only the file version changes.

I have included the sample source. I did have to remove a project3.exe, but it is not needed to demonstrate this problem.

Discussion

  • LordLarry

    LordLarry - 2008-11-23

    Sample

     
  • pmarcu

    pmarcu - 2008-11-24

    Can you provide the command lines you used to create both your transforms and your patches? I know this works for all the scenarios I've tried. My product always only updates the file version as well and we've been patching it using pyro. I'm guessing that when you create the patch, the 1.0 assembly and the 1.1 assembly dont both exist on disk in their original locations to be compared with eachother. I've seen people overwrite their 1.0 assemblies with 1.1 assemblies when building their upgrade and seeing this behavior.

     
  • LordLarry

    LordLarry - 2008-11-24

    The zip files contains .bat files with the commands I used, but I'll repeat them here:

    candle.exe -dVersion=1.0 product.wxs
    light.exe -fv product.wixobj -out 1.0\product.msi

    candle.exe -dVersion=1.1 product.wxs
    light.exe -fv product.wixobj -out 1.1\product.msi

    torch.exe -p -xi 1.0\product.wixpdb 1.1\product.wixpdb -out patch\diff.wixmst

    candle.exe patch.wxs
    light.exe patch.wixobj -out patch\patch.wixmsp
    pyro.exe patch\patch.wixmsp -out patch\patch.msp -t RTM patch\diff.wixmst

    candle.exe OldPatch.wxs
    light.exe -fv OldPatch.wixobj

    Msimsp.exe -s OldPatch.pcp -p OldPatch.msp -l OldPatch.log

     
  • Heath Stewart

    Heath Stewart - 2008-12-05

    To note, the wixmst contains the difference in the fileVersion assembly name attribute but is being dropped when the patch transform is reduced.

     
  • Heath Stewart

    Heath Stewart - 2008-12-12

    The problem is that the MsiAssemblyName row is in a diferrent section ("/") than the referenced Component row ("wix.section.3"). During binding, the MsiAssemblyName rows are not created in the appropriate section. Since this table is created entirely based on the <file> attributes, the same section as the related file should be used to create the row.</file>

     
  • SourceForge Robot

    This Tracker item was closed automatically by the system. It was
    previously set to a Pending status, and the original submitter
    did not respond within 21 days (the time period specified by
    the administrator of this Tracker).

     
MongoDB Logo MongoDB