[wix-users] Passing value from bundle.wsx to bootstrapper code
Jon Earle
earlej at hotmail.com
Thu Jan 18 10:28:54 PST 2018
Okay, both of those were needed, as you suggested. I never realized you needed the wrapper around the variable, but it makes sense now, to evaluate the variable content as a property.
<Variable Name="INSTALLDIR" bal:Overridable="yes" Value="[$(var.PlatformProgramFilesFolder)]Company\Client"/>
And the FormatString wrapper. Why do I need to use that - only to evaluate the property?
________________________________
From: Hoover, Jacob <Jacob.Hoover at greenheck.com>
Sent: Wednesday, January 17, 2018 5:04 PM
To: WiX Toolset Users Mailing List
Cc: Jon Earle
Subject: RE: Passing value from bundle.wsx to bootstrapper code
Bootstrapper.Engine.FormatString ?
And you need to include the []'s in your definition.
-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Jon Earle via wix-users
Sent: Wednesday, January 17, 2018 3:55 PM
To: 'WiX Toolset Users Mailing List' <wix-users at lists.wixtoolset.org>
Cc: Jon Earle <earlej at hotmail.com>
Subject: [wix-users] Passing value from bundle.wsx to bootstrapper code
In my bundle.wxs:
<Variable Name="INSTALLDIR" bal:Overridable="yes" Value="C:\Program Files\Company\Client"/>
My cs code:
string userSpecifiedInstallDir = Bootstrapper.Engine.StringVariables["INSTALLDIR"];
No problem - I get the value, I can modify it, etc.
Now, If I try to be clever and use some of the builtin vars, such as in the following:
<Variable Name="INSTALLDIR" bal:Overridable="yes" Value="[ProgramFiles64Folder]"/>
I get the literal text "[ProgramFiles64Folder]" and not what it translates to. How do I fix that?
Now, I actually want to get more clever and:
<?if $(var.Platform) = x64 ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
So that I can be flexible.
I tried to use:
<Variable Name="INSTALLDIR" bal:Overridable="yes" Value="$(var.PlatformProgramFilesFolder )"/>
But that only gave me the literal text "ProgramFiles64Folder". I don't quite understand why, since, in my product.wxs, I have:
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id="$(var.PlatformProgramFilesFolder)">
<Directory Id='MANUFACTURER' Name="Company">
<Directory Id='INSTALLDIR' Name="Client" />
</Directory>
</Directory>
</Directory>
And that works fine. What am I missing?
Cheers!
Jon
____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/
More information about the wix-users
mailing list