[wix-users] Current culture being built

Andrew Patterson andrew at avenza.com
Fri May 1 10:51:35 PDT 2020

Hello all,

We've been using Wix for a short time now but we have a working installer
that supports two languages: English & Chinese (i.e. Cultures: "en_US;
zh_CN"). I'm currently working to streamline it a little bit and I had what
I think is a sound idea, but I'm at a loss about how to make it work.

We're using the Visual Studio extension with Wix 3.11. The best way to
describe my problem and my idea is with this example. We ship tutorial
data, but we ship different tutorial data for each language. Right now,
we're doing something like the following:

We're running a pair of heat commands like so:

heat dir "$(ProjectDir)\Tutorials\en_US" -g1 -gg -cg Cg.Tutorials.en_US
-sreg -srd -dr D.Tutorials.en_US -o
heat dir "$(ProjectDir)\Tutorials\zh_CN" -g1 -gg -cg Cg.Tutorials.zh_CN
-sreg  -srd -dr D.Tutorials.zh_CN -o

With some wxs XML like so:
<Directory Id="Tutorials.en_US"/>
<Directory Id="Tutorials.zh_CN"/>
<Feature Id="F.Tutorials.en_US" Display="hidden" Level="0">
  <ComponentGroupRef Id="Cg.Tutorials.en_US" />
  <Condition Level="1">P.LanguageCode = "en_US"</Condition>
<Feature Id="F.Tutorials.zh_CN" Display="hidden" Level="0">
  <ComponentGroupRef Id="Cg.Tutorials.zh_CN" />
  <Condition Level="1">P.LanguageCode = "zh_CN"</Condition>

What I'd like to do is something more like this:
<Directory Id="Tutorials"/>
<Feature Id="F. Tutorials>
  <ComponentGroupRef Id="Cg.Tutorials" />

But that would require my heat commands to look like this:

heat dir "$(ProjectDir)\Tutorials\[current culture variable goes here]" -g1
-gg -cg Cg.Tutorials -sreg -srd -dr D.Tutorials -o

This way, it'd only harvest the culture being built, and I wouldn't have to
distinguish between which one is currently being built by checking that
property. Of course, this has one missing piece, which you probably
noticed: [current culture variable goes here].

I've tried various things, $(Culture), $(CultureGroup.Identity),
$(CultureGroup.OutputPath) (all of these prefixed with % or @). Is there a
variable that I'm missing? Or is this a feature that's currently missing?
If it's the latter, I can file it to the Issue tracker, but before I do
that, I wanted to ask if I'm missing something obvious. Also possible: this
won't work the way I think, and if that's the case, feel free to tell me as

Any help greatly appreciated!
Andrew Patterson
Lead Software Architect
Avenza Systems Inc.

email: andrew at avenza.com
phone: 416.487.5116

More information about the wix-users mailing list