views:

1078

answers:

4

Is there a way to read value for the WiX variable from a text file?

What I am trying to do is to include a version-specific information into instlal package.

This version information extracted into the text file on the pre-build step, the question is how to propages this text file content into a build process.

One of the possible solution is to update whole .wxs file on the pre-build step too, but it feel a bit sloppy.

Is there any other, less-intrusive way?

Thank you.

A: 

I suppose that you need Custom Action. For example, here an article about reading the variable from XML file:

Read Configuration Parameters from Xml File

maxnk
A: 

Maxnk,

Custom actions are not a solution to my problem, because what I want is to be able to update the installer script itself, that is - to update installer package, to modify the build step.

Custom actions cannot be used for that purpose, since they are executed during the installation, when a installer packge has alredy been built.

+7  A: 

Create a separate file 'includes.wxi', for example like this:

<?xml version="1.0" encoding="utf-8"?>
<Include Id="VersionNumberInclude">
    <?define MajorVersion="1" ?>
    <?define MinorVersion="5" ?>
    <?define MicroVersion="99" ?>
    <?define BuildVersion="14954" ?>
</Include>

In your wxs file, you can include this file like this:

<?include VersionNumberInclude.wxi ?>

And the defines can be used like this:

<?define VersionNumberInternal="$(var.MajorVersion).$(var.MinorVersion).$(var.BuildVersion)" ?>
<?define VersionNumberUserVisible="$(var.MajorVersion).$(var.MinorVersion).$(var.MicroVersion).$(var.BuildVersion)" ?>
Stefan
Thanks Stefan, that was exactly I was after. Very neat!
A: 

In my environment, WiX scripts are always built by the MSBuild file. That means that I can pass in any version-specific information I want on the command line. CruiseControl.NET passes these version numbers to my WiX script when built.

Dave Markle