To fix the ICE 61 error, add a VersionMax attribute to your
UpgradeVersion that has a value equal to your Product/@Version attribute
and also specify UpgradeVersion/@IncludeMaximum="no".


-----Original Message-----
From: Thomas Mathis [mailto:t...@bica.ch] 
Sent: 09 June 2010 17:43
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] error CNDL0242


hello Peter Shirtcliffe,

Thank you for your replay. I found out why the Windows Installer limits
it, because of the limitation of the windows registry. The Windows
Installer saves the values to the ARP (Add/Remove Programs) properties
in the registry and there is the version key saved as a DWORD. So there
is no more space for larger numbers in the version registry key!
Therefore I wrote a workaround as a wxi-include file. My workaround has
one disadvantage, the light.exe claims about this part:
...\inc\Upgrade.wxi(14) : warning LGHT1076 : ICE61 : This product should
remove only older versions of itself. No Maximum version was detected
for the current product. (OLD_PRODUCT_CODE)

So, below you can find my solution as wix source code. If anybody has a
better idea to deal with it, please let me know.
Thank you

Thomas Mathis


<!--
Workaround for the limitation of msi and windows registry of the version
information.

The version data of ARP (Add/Remove Programms) are saved in the windows
registry as an integer of DWORD.
This include file replaces some part of the internal WiX function
Upgrade and saves the value as string REG_SZ in the windows registry.
With that you can expand the version information of more numbers.

The version data $(var.InvernalVersion) should be saved as a string of
numbers!
For example (please remove the "-" characters before use it):
        <-?define InvernalVersion="2103000120753" ?->
-->
<Include>
        <Upgrade Id="PUT-GUID-HERE">
                <UpgradeVersion OnlyDetect="no" Minimum="0.0.0.0"
IncludeMinimum="yes"
Property="OLD_PRODUCT_CODE" />
        </Upgrade>
        
        <!-- Properties -->
        <Property Id="INTERNAL_VERSION_NEW"
Value="$(var.InvernalVersion)" />
        <Property Id="UPGRADE_VBSCRIPTS">
                <![CDATA[
                        Sub GetHighestInternalVersion()
                                Set objShell =
CreateObject("WScript.Shell")
                                verResult = ""
                                For Each sProductCode In
Split(Session.Property("OLD_PRODUCT_CODE"),
";", -1, 1)
                                        verTemp =
objShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Uninsta
ll\"
& sProductCode & "\InternalVersion")
                                        If verTemp > verResult Then
                                                verResult = verTemp
                                        End If
                                Next
                                Session.Property("INTERNAL_VERSION_OLD")
= verResult
                        End Sub
                ]]>
    </Property>
        
        <!-- CustomActions -->
        <CustomAction Id="InstalledProductFound"
VBScriptCall="GetHighestInternalVersion" Property="UPGRADE_VBSCRIPTS" />
        <CustomAction Id="NewerVersionFound"
Error="!(loc.ErrorNewerVersionInstalled)" />
        
        <!-- Verion Checker, prevent downgrading -->
        <InstallUISequence>
                <Custom Action="InstalledProductFound"
After="FindRelatedProducts">
                        <![CDATA[OLD_PRODUCT_CODE]]>
                </Custom>
                <Custom Action="NewerVersionFound"
After="InstalledProductFound">
                        <![CDATA[INTERNAL_VERSION_OLD >
INTERNAL_VERSION_NEW]]>
                </Custom>
        </InstallUISequence>
        
        <InstallExecuteSequence>
                <Custom Action="InstalledProductFound"
After="FindRelatedProducts">
                        <![CDATA[OLD_PRODUCT_CODE]]>
                </Custom>
                <Custom Action="NewerVersionFound"
After="InstalledProductFound">
                        <![CDATA[INTERNAL_VERSION_OLD >
INTERNAL_VERSION_NEW]]>
                </Custom>
        </InstallExecuteSequence>
        
        <!--Saves the internal Version-->
        <DirectoryRef Id="PUT-YOUR-DIR-ID-HERE">
                <Component Id="cmpInternalVersion" Guid="PUT-GUID-HERE">
                        <RegistryKey Root="HKLM"
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode]"
Action="createAndRemoveOnUninstall">
                                <RegistryValue Name="InternalVersion"
Action="write" Type="string"
Value="$(var.InvernalVersion)"/>
                        </RegistryKey>
                </Component>
        </DirectoryRef>
</Include>

--
View this message in context:
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/error-CNDL
0242-tp5153566p5159352.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------
------
ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's
Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit.  See the
prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
</pre>
<BR style="font-size:4px;">
<a href = "http://www.sdl.com";><img src="http://www.sdl.com/images/email 
logo_150dpi-01.png" alt="www.sdl.com" border="0"/></a>
<BR>
<font face="arial"  size="2" "><a href = "http://www.sdl.com"; 
style="color:005740; font-weight: bold">www.sdl.com</a>
<BR>
<BR>
<font face="arial"  size="1" color="#736F6E">
<b>SDL PLC confidential, all rights reserved.</b>
If you are not the intended recipient of this mail SDL requests and requires 
that you delete it without acting upon or copying any of its contents, and we 
further request that you advise us.<BR>
SDL PLC is a public limited company registered in England and Wales.  
Registered number: 02675207.<BR>
Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 7DY, 
UK.
</font>



------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to