Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make the WiX Bundle version the same as my application's version

The "Version" attribute in a WiX Bundle is displayed in Programs and Features. Therefore this ought to be the same as my actual application's version number, right?

On the assumption they should be the same it doesn't seem immediately obvious how to have this update automatically. I've got the MSI doing it as per this question, but not the Bundle/Bootstrapper bit. How can I make the Bootstrapper Bundle do the same thing and read the MSI version number?

like image 530
noelicus Avatar asked Aug 16 '13 14:08

noelicus


People also ask

What is Wix bundle?

A bundle is a collection of installation packages that are chained together in a single user experience. Bundles are often used to install prerequisites, such as the . NET Framework or Visual C++ runtime, before an application's .

How do I install a package on Wix?

Open the Package Manager and select Installed Packages. Hover over the package and click the button. If there is an option to select Request Latest Version, the installed version is the latest version or a later version of the package has not been approved yet. Click Request Latest Version to open the request form.


Video Answer


2 Answers

To answer your first question, there are no hard and fast rules for this. So it is not a must to update your WIX bundle version and match that with your MSI version.

As for the second question, am not really sure. But you can try this binder variable:

!(bind.packageVersion.PackageID)  

EDIT replace PackageID with the element "ID" attribute of the program that you are installing. Something like: Version="!(bind.packageVersion.MyAppName)"

<MsiPackage SourceFile="SomePath\MyAppName.msi" Id="MyAppName"/> 

as mentioned in this POST. Also check the WIX documentation for more binder variables.

EDIT 5/11/2017 - looks like there was confusion around what the packageID should be and I have edited the answer based on Bob Lutz answer below.

like image 161
Isaiah4110 Avatar answered Sep 21 '22 03:09

Isaiah4110


To supplement Isaiah4110's answer (I can't comment yet and my edit was rejected):

The PackageID comes from the Id value for one of the package types (eg MsiPackage, ExePackage...) in your Chain. So to reference the version number of <MsiPackage SourceFile="SomePath\MyMsi.msi" Id="MyMsi"/> you would use !(bind.packageVersion.MyMsi).

If you don't have an Id (like myself), you'll need to define one.

like image 38
Bob Lutz Avatar answered Sep 23 '22 03:09

Bob Lutz