Bundle: DetectCondition with semantic versioning

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Bundle: DetectCondition with semantic versioning

Thomas Deboben
This post has NOT been accepted by the mailing list yet.
Hi all,

I have a bootstrapper installer including an ExePackage of PostgreSQL installer.
So long I had a RegistrySearch for the Version value

    <util:RegistrySearch Id="FindPostgreSQLx64"
                         Root="HKLM"
                         Key="SOFTWARE\PostgreSQL\Installations\$(var.POSTGRESQLX64)"
                         Value="Version"
                         Variable="PostgreSQLx64"
                         Win64="yes"/>

and a DetectCondition in the ExePackage

DetectCondition="(PostgreSQLx64= v$(var.POSTGRESQLFULLVERSION))"

with <?define POSTGRESQLFULLVERSION="9.3.6.1" ?>

This has worked fine so far, but with version 9.4.4.3 PostgreSQL has changed the format of the Version value in the registry to semantic versioning like 9.4.4-3.

With a new define

  <?define POSTGRESQLSEMANTICVERSION="9.4.4-3" ?>

the DetectCondition

DetectCondition="(PostgreSQLx64= v$(var.POSTGRESQLSEMANTICVERSION))"

will cause the error

Error 0x8007000d: Failed to parse condition '(PostgreSQLx64= v9.4.4-3)' at position: 22

So I thought the v before the $ will handle the compare as a Version compare but when I remove it I will get the error
...
Setting string variable 'PostgreSQLx64' to value '9.4.4-3'
...
Error 0x8007000d: Failed to parse condition "(PostgreSQLx64= 9.4.4-3)". Unexpected character at position 17.


How do I have to change my detect condition to get it working?

Many thanks,
  Thomas

Loading...