Discussion:
[WiX-users] My experiences making a multi-language bundle
Sam Morris
2012-01-20 20:14:44 UTC
Permalink
I've spent the last couple of days rewriting an installer to make use of Burn. My goal was to have one executable that would present a localized user interface based off the user's UI language settings. I have documented my experiences below in case someone else would find the information useful. I am particularly interested to hear from anyone who has solutions (or better workarounds) for the problems I ran into.

I began by taking a copy of RtfTheme.wxl, and translating it into German and Dutch, saving the resulting files as RRtfTheme.de.wxl and RRtfTheme.nl.wxl respectively. I also created RRtfTheme.en_GB.wxl for testing purposes. I included these files into the bundle as follows:

<Bundle Name="English Title">
<WixVariable Id="WixStdbaThemeWxl" Value="RRtfTheme.wxl"/>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<!-- LCID reference: <http://msdn.microsoft.com/en-us/goglobal/bb895996> -->

<Payload Id="thm-en_GB" Compressed="yes" Name="2057\thm.wxl" SourceFile="RRtfTheme.en_GB.wxl"/>

<Payload Id="thm-de_DE" Compressed="yes" Name="1031\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>
<Payload Id="thm-de_CH" Compressed="yes" Name="2055\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>
<Payload Id="thm-de_AT" Compressed="yes" Name="3079\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>
<Payload Id="thm-de_LU" Compressed="yes" Name="4103\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>
<Payload Id="thm-de_LI" Compressed="yes" Name="5127\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>

<Payload Id="thm-nl_NL" Compressed="yes" Name="1043\thm.wxl" SourceFile="RRtfTheme.nl.wxl"/>
<Payload Id="thm-nl_BE" Compressed="yes" Name="2067\thm.wxl" SourceFile="RRtfTheme.nl.wxl"/>
</BootstrapperApplicationRef>
</Bundle>

At runtime, the generated setup.exe calls GetUserDefaultUILanguage and looks for its resources (theme, localization strings, logo, RTF license, etc.) within a directory corresponding to the result. If they don't exist, it will try the same for the result of GetSystemDefaultUILangauge. If this also fails, it will fall back to the files in the parent directory.

In order to have the translation for each language be activated in all the locales where the language is used, it was necessary to embed the language file multiple times, once for each locale. This is not ideal; I would prefer for Burn to use locale names rather than numeric IDs[0]; the above would then look more like the following.

<Payload Id="thm-en_GB" Compressed="yes" Name="en-GB\thm.wxl" SourceFile="RRtfTheme.en_GB.wxl"/>
<Payload Id="thm-de" Compressed="yes" Name="de\thm.wxl" SourceFile="RRtfTheme.de.wxl"/>
<Payload Id="thm-nl" Compressed="yes" Name="nl\thm.wxl" SourceFile="RRtfTheme.nl.wxl"/>

Different locales can be tested by running the installer with the "-lang" argument; for instance, "-lang 1031" gave me the German UI. At this point, I noticed a few problems:

1. The strings in RtfTheme.wxl reference the WixBundleName variable (initialized from the Bundle/@Name attribute), which the documentation says can be changed at run-time, however I couldn't work out how to do this based on the user's UI language. While it's easy to hardcode the translated product name in the .wxl file for each language, the value of WixBundleName is still used in Add/Remove Programs, which therefore remains unlocalized. I am assuming that it is currently necessary to provide custom bootstrapper application code to perform this change.

2. The location and sizes of all the controls in the theme files are hardcoded based on the English strings. I had to make a copy of RtfTheme.xml for each language, modifying the control layout in order to get things looking good. Fortunately the default Burn UI is very clean and simple, so this didn't take too long. However... does anyone know what happens when you run the installer on Windows XP, which doesn't have the Segoe UI font? I haven't got a working XP machine to test with at the moment, but I think I may have to change the font to MS Sans Serif, or another font that is present on all XP machines...

3. The prompt that asks if you really want to cancel installation is not translated. This is only a minor problem that I guess will be fixed when Burn receives more i18n work. :)

I wanted my installer to contain several MSI packages, and choose which one to install based on the user's language. This is just so that the user gets Start Menu entries in their own language; the actual files installed are the same, no matter which MSI is installed. This is done by creating product_en.msi, product_de.msi and product_nl.msi with their Product/Media/@Name attribute set to the same cabinet file name, and with their @EmbedCab attribute set to 'no'. Light will happily create the cab files when the first MSI package is built, and re-use them thanks to the -reusecab option when the second and third packages are built. All three packages are then added to the Bundle's Chain, making use of the MsiPackage/@InstallCondition attribute to ensure that only one is actually installed:

<Chain>
<!-- Keep these in sync with the payloads in the BootstrapperApplicationRef above -->
<?define ic_de = "UserUILanguage = 1031 OR UserUILanguage = 2055 OR UserUILanguage = 3079 OR UserUILanguage = 4103 OR UserUILanguage = 5127"?>
<?define ic_nl = "UserUILanguage = 1043 OR UserUILanguage = 2067"?>

<!-- As the default package, the InstallCondition for product_en.msi must complement the InstallConditions for the other product_*.msi packages. -->
<MsiPackage Compressed="yes" SourceFile="product_en.msi" Vital="yes" InstallCondition="NOT ($(var.ic_de) OR $(var.ic_nl))">
<MsiProperty Name='INSTALLDIR' Value='[InstallFolder]'/>
<MsiProperty Name='ARPSYSTEMCOMPONENT' Value='1'/>
</MsiPackage>

<MsiPackage Compressed="yes" SourceFile="product_de.msi" Vital="yes" InstallCondition="$(var.ic_de)">
<MsiProperty Name='INSTALLDIR' Value='[InstallFolder]'/>
<MsiProperty Name='ARPSYSTEMCOMPONENT' Value='1'/>
</MsiPackage>

<MsiPackage Compressed="yes" SourceFile="product_nl.msi" Vital="yes" InstallCondition="$(var.ic_nl)">
<MsiProperty Name='INSTALLDIR' Value='[InstallFolder]'/>
<MsiProperty Name='ARPSYSTEMCOMPONENT' Value='1'/>
</MsiPackage>
</Chain>

At first I thought this would be a bit of a nightmare to maintain, but the use of preprocessor defines means it is pretty sane in practice. If only the Conditional Statement Syntax had the concepts of lists, and a way to test if the current language is within such a list... :)

I was initially puzzled that, while the -lang argument to the installer caused the correct translation to be activated, it did not cause the corresponding MSI package to be installed. This could be fixed if Burn were to expose the locale ID that chose to use for resource loading (taking into account a manual override with -lang) in a new built-in variable, which I would use instead of UserUILanguage. This would also take care of the inconsistency that occurs if Burn choses to use the result of GetSystemDefaultUILanguage to load the UI resources. If this variable were to be persisted, then the user would be presented with the same UI language when preforming repair/modify/uninstall options from Add/Remove Programs.

Overall I'm very happy with the resulting installer. Burn is going to be an excellent tool once WiX 3.6 is finally released!

[0] This is possible without dropping support for Windows XP; you can use GetLocaleInfo to query the language and country codes used by a locale, and then construct your own "ll-CC" string for use in your application). To emulate Vista's GetUILanguageInfo function you can perform your own fallback search process (i.e., try "ll" after "ll-CC").
faktorx2001
2012-12-14 16:20:58 UTC
Permalink
I've the same problem with build error. I have two wxl files for different
languages. With one wxl file it works,but if i add the second i got the
build error.

And is there any chances to localize the rtf license file?



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7582382.html
Sent from the wix-users mailing list archive at Nabble.com.
snowkoan
2013-07-23 19:58:30 UTC
Permalink
Hi,

Great post! How does this change in WiX 3.7?

I downloaded the WiX 3.7 source and noticed that the wixstdba folder now
contains localized resources for a number of languages.

When creating a bundle: Is there a shortcut to reference these localized
themes, or do I have to copy them to my own project and reference them, as
in WiX 3.6?

Thanks,
Alnoor



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587527.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-07-25 21:53:25 UTC
Permalink
Alnoor,

We are currently using WiX 3.7 and still having issues with localization on
Burn WixStandardBootstrapperApplication.RtfLicense dialogs. Have you got
this working and do they have localized resources for the standard dialog
boxes already?

If you have this going could you let me know what you did to get it working?

Thanks,

Tim.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587609.html
Sent from the wix-users mailing list archive at Nabble.com.
snowkoan
2013-08-01 18:15:42 UTC
Permalink
Hi Tim,

My original question was a little bit misguided -- there are no translations
for the RtfLicense theme included with WiX 3.7. The translations are for a
different them called mbapreq, which doesn't seem to have a license dialog.

In the interest of saving someone a few minutes (perhaps me, in the future),
here are the steps I used to get Japanese language support into my
bootstrapper.

1) Copy a few files from the WiX 3.7 src\ext\BalExtension\wixstdba\Resources
folder:

RtfTheme.xml
RtfTheme.wxl
RtfLargeTheme.xml

I dropped these files into a 'theme' folder in my burn project.

2) Create a couple of new files in my 'theme' folder:

license.rtf
logo.png

3) Create a sub-folder 'theme\1041' to hold my Japanese resources. In this
folder, I have the following localized files:

license.rtf
RtfTheme.wxl

This step is hard if you don't know Japanese. I don't, but I used google
translate to get some pseudo-translations, and my localization team will
eventually replace the strings with proper Japanese.

4) Put it all together in my bundle.wxs file:

<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.RtfLicense">

<bal:WixStandardBootstrapperApplication
LicenseFile="theme\license.rtf"
LogoFile="theme\logo.png"
SuppressOptionsUI="yes"
ThemeFile="theme\RtfLargeTheme.xml"
LocalizationFile="theme\RtfTheme.wxl"/>



<Payload Id="theme_ja_jp" Compressed="yes" Name="1041\thm.wxl"
SourceFile="theme\1041\RtfTheme.wxl"/>
<Payload Id="license_ja_jp" Compressed="yes" Name="1041\license.rtf"
SourceFile="theme\1041\license.rtf"/>

</BootstrapperApplicationRef>

Hope this helps,

Alnoor



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587768.html
Sent from the wix-users mailing list archive at Nabble.com.
snowkoan
2013-08-01 18:23:03 UTC
Permalink
Hi again,

One further detail: Note the theme in the payload is named 'thm.wxl'. This
is important! The bootstrapper only uses translations if they are in a file
with this name.

<Payload Id="theme_ja_jp" Compressed="yes" Name="1041\thm.wxl"
SourceFile="theme\1041\RtfTheme.wxl"/>

Alnoor



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587769.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-01 23:14:25 UTC
Permalink
This is VERY COOL.

I am working on my first WiX bundle and was just getting to the point where
I need to get it working in JEFIGS +Ch Simplified. I quickly implemented
the steps you posted with the one exception that I created a Payload entry
for a 1033 sub folder, which it uses by default rather than the file listed
as /@ThemeFile. My test box is currently configured for Windows 8, English
or German. It did not automatically select the language based on the users
Language and Region setting, which is what I eventually need. But launching
my setup with -lang 1031 (or each of the other IDs) clearly displays my
modified localized .wxl strings for the language identified. I did this
using HyperlinkTheme.wxl.

In my past experience with localizing (non-WiX) setup dialogs, after the
translators do their magic there is generally a need to readjust the control
sizes. I assume that I should put the HyperlinkTheme.xml in each resource
folder for each language were layout sizes need to change, and add a
corresponding Payload element. Something like?

"
<Payload Id="theme_de_de" Compressed="yes" Name="1031\thm.xml"
SourceFile="theme\1031\HyperlinkTheme.xml"/>
"

One other note is that I originally added each theme subfolder and file to
my project in VS2010 to edit the files. However the linker throws a ton of
duplicate symbol errors. So for now I removed them but I assume I could add
them back into the project and change the project settings to exclude them
from the linker. I can work on these issues tomorrow. Thanks ALOT for
this info. Phill



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587770.html
Sent from the wix-users mailing list archive at Nabble.com.
snowkoan
2013-08-02 15:36:29 UTC
Permalink
Hi Phil,

Glad to help, and thanks for the suggestions. It does make sense to localize
the theme itself, though I have not done so yet. Did you try it?

Alnoor



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587780.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-02 16:02:14 UTC
Permalink
My experiments so far do not work. I added:
"
<Payload Id="themeXml_de_de" Compressed="yes"
Name="1031\HyperlinkTheme.xml" SourceFile="theme\1031\HyperlinkTheme.xml"/>
"
And made various changes to only that xml file, but so far it has not picked
it up. I was just starting to read through the source code, but do not have
anything figured out yet. Anyway the big issue was getting the translated
strings int the dialog. For some reason though, some languages don't have
enough space to say what needs to be said. :( Not a big deal, we can make
it work.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587781.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-02 16:57:20 UTC
Permalink
It looks like the answer to loading a localized xml file is here:
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Localized-bundle-Picking-up-the-right-files-td7265208.html

I have not tried it yet, but he is correct that I did not have the png file
in each localized folder.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587783.html
Sent from the wix-users mailing list archive at Nabble.com.
snowkoan
2013-08-02 18:26:36 UTC
Permalink
Cool, thanks. If worst comes to worst, I'll just fire up Process Monitor
again and watch the file system activity to see what files the bootstrapper
is looking for (and not finding.)

Somehow, that feels more fun than wading through source code.

Alnoor



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587794.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-02 19:45:06 UTC
Permalink
Well I got it working. As posted earlier I added a modified
HyperlinkTheme.xml to my 1031 subfolder, and originally I added this Payload
statement:

"
<Payload Id="themeXml_de_de" Compressed="yes" Name="1031\thm.xml"
SourceFile="theme\1031\HyperlinkTheme.xml"/>
"

The bundle project builds but when run it does not display any dialog and
the log file shows error creating the main window (as reported in the other
thread referenced).

The correct solution at that point is to add the logo.png file to the 1031
folder and add:
<Payload Id="logo_de_de" Compressed="yes" Name="1031\logo.png"
SourceFile="theme\1031\logo.png"/>

Now when -lang 1031 is used the dialog has the changes which were made in
the 1031 version of the XML file (and in looking at the source code I did
not see anything that would select the language file based on the
users/systems default language.

Prior to doing the above I took the unnecessary side track of changing the
Payload to:
"
<Payload Id="themeXml_de_de" Compressed="yes"
Name="1031\HyperlinkTheme.xml" SourceFile="theme\1031\HyperlinkTheme.xml"/>"

I can see in the code where it is expecting thm.xml, but I did not read all
the way through. What it does in ProcessMon is it tries to load
1031\Thm.xml which did not exist, and then it tries to load
1031\hyperlinkTheme.xml and seems to succeed, but the dialog does not
reflect the 1031\HyperlinkTheme.xml. However by using the
Name="1031\thn.xml" it all works.

I might also comment that prior to working with the localization I had set
my LogoFile attribute to import a .bmp file, and removed the logo.png file
from my project. So if I go back and convert my bmp to a png file named
logo.png it might be a simpler scenario since the XML files have the
logo.png name in the XML file.

So all in all it seems to work and I can get the files translated when we
submit other projects for translation. Thanks for the help. Phill




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587796.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-12 16:52:37 UTC
Permalink
Phill/Alnoor

I had to make a few more adjustments to my code to match what you have, but
it will still only launch in English when running on a French OS. If I use
the command line option -lang 1036 then the Burn wrapper will correctly show
UI and License in French.

So how do I get it to show the UI in the language of the system OS?

Thanks.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587944.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-12 17:24:12 UTC
Permalink
I am trying to solve that same issue, so I do not have a solution yet. I was
in the process of importing the 'extended bootstrapper' and writing a
BAFunction.dll to try and get the language of the UI to be the same as the
OS UserLanguageID and also address an issue where I need to restrict which
LCIDs get passed to my MsiPackage as a name of a transform. This morning I
got a message from the extended bootstrapper site that implied that Wix 3.8
resolves the first part of this issue and showes the bootstrapper language
based on the OS settings. So I am now working on checking out that lead.
Bottom line is I don't have this issue figured out yet.

Check out:
http://wixextba.codeplex.com/




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587946.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-12 18:31:32 UTC
Permalink
Okay thanks, If 3.8 does correctly detect OS language and launch Burn wrapper
in detected language then that should solve part of that issue.

As for your 2nd issue, are you talking about conditioning your MsiPackage so
that it will only use your supportted language .mst's that you need to pass
to your .msi as transforms?

If so I do have a solution that works for that. It requred me to create 2
MsiPackage entries. One that is conditioned only on the SystemLanguageID's
that I support and the other will is conditioned on SystemLanguageID not
equalling my supported languages, and therefore it will only trigger the
1033.mst.

If this was not what you meant then ignore this....

Thanks,




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587948.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-12 18:59:02 UTC
Permalink
Yes, we support seven languages. If I pass UserLanguageID or
SystemLanguageID in my var "LCID" and then pass it as a property to the MSI
package in the form of TRANSFORMS=LCID.mst all is well for the supported
languages, however an unsupported language results in an error because the
transform does not exist. I have two msi packages in my chan which have a
different set of 'supported' transforms. I like your approach and will
check it out. I added the BAFunction.dll into the project (which meant I
had to change to the extended bootstrapper), late last week. I plan to read
the LCID var and then limit the range of LCIDs that I pass to each Msi
package. Also if a user has a 'related' language we default to the nearest
supported language. We support 1034 (Spanish) and when we detect Mexican or
any other variant of Spanish we default to 1034 (rather than defaulting to
English). This is standard behavior in our existing InstallScript projects.
So I am working on implementing similar behavior with WiX. I am going to
try out WiX 3.8 and I may still need to do some 'custom' processing of the
property before passing it to the MSI. But thanks for telling me about how
you used MsiPackage/@InstallCondition to address this issue.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587949.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-12 20:19:39 UTC
Permalink
The way the language detection works in WiX is to search for a language matching the full language ID and if that isn't present it searches the primary language and then defaults to US English - so if you support Spanish but not Mexican then Spanish is selected. I am wondering if you could set your LCID for the transform to a value from the burn localisation file, that way the fall back would work as you expect.

Neil

-----Original Message-----
From: Phill Hogland [mailto:***@rimage.com]
Sent: 12 August 2013 19:59
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] multi-language bundle - A BIG THANKS

Yes, we support seven languages. If I pass UserLanguageID or SystemLanguageID in my var "LCID" and then pass it as a property to the MSI package in the form of TRANSFORMS=LCID.mst all is well for the supported languages, however an unsupported language results in an error because the transform does not exist. I have two msi packages in my chan which have a different set of 'supported' transforms. I like your approach and will check it out. I added the BAFunction.dll into the project (which meant I had to change to the extended bootstrapper), late last week. I plan to read the LCID var and then limit the range of LCIDs that I pass to each Msi package. Also if a user has a 'related' language we default to the nearest supported language. We support 1034 (Spanish) and when we detect Mexican or any other variant of Spanish we default to 1034 (rather than defaulting to English). This is standard behavior in our existing InstallScript projects.
So I am working on implementing similar behavior with WiX. I am going to try out WiX 3.8 and I may still need to do some 'custom' processing of the property before passing it to the MSI. But thanks for telling me about how you used MsiPackage/@InstallCondition to address this issue.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587949.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-12 20:24:35 UTC
Permalink
Thanks for the idea. I will try that.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587954.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-12 20:58:02 UTC
Permalink
I assume that your (Neil's) description of the WiX language detection
behavior applies to 3.8, because I have not observed that behavior with WiX
3.7. For me with 3.7 I always have to use -lang LCID to see any of my
supported bundle translated strings. So far I have only tested using
Windows 8 Professional (with English and German selected by the user) and
Windows 7 Ultimate Korean. I had decided earlier today to move to 3.8, but
with many distractions I do not have it working just yet.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587955.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-12 21:04:30 UTC
Permalink
No this also applies to 3.7 but there is a bug that means it detects the system language not the user language which probably explains what you are seeing. If you make the system language match the user selected language it works as I described.

-----Original Message-----
From: Phill Hogland [mailto:***@rimage.com]
Sent: 12 August 2013 21:58
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] multi-language bundle - A BIG THANKS

I assume that your (Neil's) description of the WiX language detection behavior applies to 3.8, because I have not observed that behavior with WiX 3.7. For me with 3.7 I always have to use -lang LCID to see any of my supported bundle translated strings. So far I have only tested using Windows 8 Professional (with English and German selected by the user) and Windows 7 Ultimate Korean. I had decided earlier today to move to 3.8, but with many distractions I do not have it working just yet.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587955.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-13 14:17:42 UTC
Permalink
So Phill, did you have a chance to try any of these suggestions and/or WiX
3.8 to see if you can get the Burn wrapper .exe to launch correctly in the
language of the OS?




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587976.html
Sent from the wix-users mailing list archive at Nabble.com.
Rob Mensching
2013-08-13 14:36:02 UTC
Permalink
PS: The code you are interested in is in
src\ext\BalExtension\wixstdba\WixStandardBootstrapperApplication.cpp,
LoadLocalization(). That uses the helper function LocProbeForFile() that is
in src\dutil\locutil.cpp
Post by TimM
So Phill, did you have a chance to try any of these suggestions and/or WiX
3.8 to see if you can get the Burn wrapper .exe to launch correctly in the
language of the OS?
--
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587976.html
Sent from the wix-users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
WiX-users mailing list
https://lists.sourceforge.net/lists/listinfo/wix-users
Phill Hogland
2013-08-13 15:14:09 UTC
Permalink
Tim, I'm still working on it, but with other responsibilities here at work
have not made much progress yet. I do not have my project building under
3.8 yet. Last week I went down the route to change from using
WixBootstrapperApplication.HyperlinkLicense to
WixExtendedBootstrapperApplication.HyperlinkLicense so that I could use the
BAFunctions.dll to try and address the auto detect of user language. I did
not realize that 3.7 was supposed to detect the language. Now I understand
the approach that Neil has suggested but I am trying to upgrade to 3.8 and
having issues building with Extended bootstrapper. I have another issue to
address here at work and then will get back on this issue.

Thanks for the info Rob. I will look at that code.
Phill



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587978.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-13 16:51:18 UTC
Permalink
I have my bundle building under WiX 3.8 and yes on Windows 8 Professional
with German selected as the default language, the bundle showed my localized
German strings without the need for the -lang switch.

I have yet to implement Neil's suggestion to create a localized variable in
my wxl files which will be passed to the MsiProperty as the name of the
transform, but I am sure that approach will also work.

Sorry for the delay in reporting back. Knowing this now I probably did not
need to go down the path of integrating with the
WixExtendedBootstrapperApplication, but I suspect I will need some of those
features (like the two browse paths) eventually. And since I previously
created a BalExtension based on Neil's sample code to generate a version
number at build time, I had to do a little reorganization of my project when
I converted it to Wix 3.8. So in Wix 3.8 I found that I could change to
using the WixStandardBootstrapperApplication.HyperlinkLargeLicense and all I
needed to do was change the variables
"WixExtbaLicenseUrl", "WixExtbaThemeXml", and "WixExtbaThemeWxl" to:
"WixStdbaLicenseUrl", "WixStdbaThemeXml", and "WixStdbaThemeWxl".

I did not find where this was documented in the Wix 3.8.722.0 documentation,
but when the linker complaiined using the new name I figured out the issue.




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587980.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-13 17:08:32 UTC
Permalink
Rob, excuse a non-experienced programmer here.

I was looking at the code for the LocProbeForFile function was wondering
about it. In the first if statement you are checking to see if a language
was specified. Is this coming from a language selection dialog box and/or
from the -lang LangID cmd line?

As stated if I use the -lang LangID on the cmd line then the Burn wrapper
.exe will correctly launch in that language, using my translated theme
files, but if we just launch the .exe it does not take the System Language.

So that brings me to the GetUserDefaultUILanguage and
GetSystemDefaultUILanguage. If the seleted language is not found then where
is it looking to check for User or System languages?

Again since I am not an experienced programmer I need to understand what
these entries are looking for?

So if you do not mind giving a bit of help here I would appreciate it.

Also will WiX 3.8 have burn updated so that it can detect and launch in the
system language, if supported?

Thanks



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587982.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-13 17:25:19 UTC
Permalink
The code does the following:
1. Read the -lang command line
2. Call GetUserDefaultLangID()http://msdn.microsoft.com/en-us/library/windows/desktop/dd318134(v=vs.85).aspx this should get the current users language.
3. Try the current user langid but without the sub language.
4. Call GetSystemDefaultUILanguage()http://msdn.microsoft.com/en-us/library/windows/desktop/dd318123(v=vs.85).aspx this should get the system language.
5. Try the current system langid but without the sub language.

So (ignoring the command line) if the users language is Mexican and there is a Mexican translation it will find that, if not it will try Spanish. If that fails is will repeat the process of the system language.

I tested this on several languages and it did seem to work ok - I was only checking that the Burn UI was translated. Do you have a problem with a specific language?

Neil

-----Original Message-----
From: TimM [mailto:***@smarttech.com]
Sent: 13 August 2013 18:09
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] [SPAM] Re: multi-language bundle - A BIG THANKS

Rob, excuse a non-experienced programmer here.

I was looking at the code for the LocProbeForFile function was wondering about it. In the first if statement you are checking to see if a language was specified. Is this coming from a language selection dialog box and/or from the -lang LangID cmd line?

As stated if I use the -lang LangID on the cmd line then the Burn wrapper .exe will correctly launch in that language, using my translated theme files, but if we just launch the .exe it does not take the System Language.

So that brings me to the GetUserDefaultUILanguage and GetSystemDefaultUILanguage. If the seleted language is not found then where is it looking to check for User or System languages?

Again since I am not an experienced programmer I need to understand what these entries are looking for?

So if you do not mind giving a bit of help here I would appreciate it.

Also will WiX 3.8 have burn updated so that it can detect and launch in the system language, if supported?

Thanks



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587982.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-13 19:05:18 UTC
Permalink
I don't mean to side-track Tim's question but to clarify I was (and I think
Tim is) running under Wix 3.7 and for me under Wix 3.7 on Windows 8 I never
saw it select one of my wxl languages without me using the -lang switch.
Neil said earlier that there was a bug in Wix 3.7 so I updated to Wix
3.8.722.

Earlier I posted that Wix 3.8 is detecting the language (without fully
testing all languages. Here let me say again I am testing on Windows 8
Professional x64 and I find the Windows 8 GUI for setting languages more
confusing than my past experiences (so I am just saying this not to complain
but to report that I have been a little unclear on what Windows 8 is doing).

So even though with Wix 3.8 the bundle was selecting the language based on
my UserDefaultLanguageID, I verified this several times changing the User
Default between English and German. I also verified that if -lang 1041 is
passed in Japanese is display regardless of the UserDefaultLanguageID.

Now here is a strange twist. I was stepping though locutil.cpp and noticed
while I cannot see what is in langid after the call to GetUserDefaultLnagID
the next call creates a path to 1033\thm.wxl EVEN WHEN both the
UserDefaultLangID is German, the current display lang is German, and the
SystemDefault is German (1031). The code then checks to see if the path is
valid.

Originally the check for a valid path would fail, because I did specify a
payload for 1033, and the code would get the SystemDefaultLangID, which is
1031 and display German. Success, I thought, but not understanding what is
going on I thought I would make my project more "efficient by adding a 1033
payload. So I made the change and recompiled.

Now the code looks for the 1033\thm.wxl path, finds it and uses it,
displaying English even if all OS settings are set to German. So now I am
back to the same behavior as Wix 3.7 where it always displays English.

I have not had a chance to check this on other OS or with other languages
yet. Nor have I tried to remove my 1033\thm.wxl payload and try to
reproduce the original behavior where it selected the German wxl, although I
am not entirely sure how.

"
<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.HyperlinkLargeLicense" >


<Payload Name="bafunctions.dll" Compressed="yes"
SourceFile="$(var.BAFuncBuildDir)\bafunctions.dll" />
<Payload Name="Logo.png" SourceFile="Resources\logo.png" />


<Payload Id="theme_de_de" Compressed="yes" Name="1031\thm.wxl"
SourceFile="Resources\1031\QDthm_de_de.wxl"/>
<Payload Id="theme_en_us" Compressed="yes" Name="1033\thm.wxl"
SourceFile="Resources\1033\QDthm_en_us.wxl"/>
<Payload Id="theme_es_es" Compressed="yes" Name="1034\thm.wxl"
SourceFile="Resources\1034\QDthm_es_es.wxl"/>
<Payload Id="theme_fr_fr" Compressed="yes" Name="1036\thm.wxl"
SourceFile="Resources\1036\QDthm_fr_fr.wxl"/>
<Payload Id="theme_it_it" Compressed="yes" Name="1040\thm.wxl"
SourceFile="Resources\1040\QDthm_it_it.wxl"/>
<Payload Id="theme_ja_jp" Compressed="yes" Name="1041\thm.wxl"
SourceFile="Resources\1041\QDthm_ja_jp.wxl"/>
<Payload Id="theme_zh_cn" Compressed="yes" Name="2052\thm.wxl"
SourceFile="Resources\2052\QDthm_zh_cn.wxl"/>

</BootstrapperApplicationRef>
<?endif?>

<WixVariable Id="WixStdbaLicenseUrl"
Value="http://www.rimage.com/legal.html" />
<WixVariable Id="WixStdbaThemeXml" Value="Resources\QDthm.xml" />
<WixVariable Id="WixStdbaThemeWxl"
Value="Resources\1033\QDthm_en_us.wxl" />
"
"
Originally when the selection of the language appeared to work I had th
following, and did not have the above 1033\thm.wxl Payload element.
<WixVariable Id="WixStdbaThemeWxl" Value="Resources\QDthm_en_us.wxl" />
"

And while this is not related to the above discussion, in my language files
I have strings like this.
<String Id="CDDTransform">1031.mst</String>
<String Id="QDTransfrom">:1031.mst</String>

Which get passed to the MsiPackage like this
<MsiProperty Name='TRANSFORMS' Value='!(loc.QDTransfrom)'/>


Sorry to pile on with so much info but there seems to be some implementation
related variations in the behavior.

Phill





--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587987.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-13 19:44:14 UTC
Permalink
Too clarify my comment about not being able to see what the result is for:

langid = GetUserDefaultLangID() (in locutil.cpp)

The issue is that LANGID langid is a type that WinDbg cannot interpret,
however when I step into the call with the disassembler I can see that
Windows 8 is returning 0x0409 (or English on a system that I have both User
and System defaults set to German. Or put another why, I obviously don't
understand something about how Windows 8 is configured. So I am researching
that issue (and assuming that if I was using Windows 7 or XP there probably
would not be as much confusion and the Wix code probably works as
advertised).



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587988.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2013-08-13 20:38:43 UTC
Permalink
OK I unravelled the Windows 8 configuration issue. This test system I
thought was configured for German and English and I thought that I was
setting both the System Default and the User Default to 1031 for these
tests. I would change the order of the list under Language Preferences
(based on various Internet statements to the effect that the top item in the
list is the User Default). Not true, well at least not always true.

On the Language Preferences dialog, click on the bottom item on the left
panel, 'Change date, time or number formats' (and no clue that this is where
you set the User Default Language ID). The top item in that dialog was set
to 'Match selected display language (recommended)' So one can change that
setting and set a specific language (German) and then the call in burn does
return 0x407, rather than always English.

But why did ''Match selected display language (recommended)' not work? Back
to the Language Preferences dialog and eventually I noticed that both the
English and German keyboard layouts were installed, but the German display
language was not installed. So I installed it.

Now the behavior is that the Wix setup runs in the Language that is at the
top of the Display Language list, and not necessarily the language the user
currently has selected (as the Windows 8 "Match selected display language"
implies).

So to summarise, after moving to WiX 3.8, the UsersDefaultLanguageID does
control the displayed language of my bundle (if I do not use -lang ) AND on
Windows 8 a user might be confused, but the underlying API is returning the
Default so this does not appear to be a Wix behavioral issue.

With that said, I wonder if there is still a problem with the Wix 3.8
implementation (or documentation) for a project in which the
WixStdbaThemeWxl file is not located in a folder of 1033, and yet matches
the UserDefaultLangID, it fails to use that thm.wxl file. Most examples
that I have seem show adding other languages in there own lcid\thm.wxl file,
but they do not necessarily make the point that the 'default' or English
file also MUST be in a 1033 folder, for this code to make use of the file.




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587990.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-13 21:35:33 UTC
Permalink
I think Windows 8 might be introducing a new variant, I have only tested Windows XP and 7.

In the past I have only tested local language variant by installing the local OS version (this is not WiX specific I have done a lot of UI localisation). Now with the multi-language OS option in Windows 7 it has made things harder - it is not 100% clear to me how you change to a new language; is changing the display formatting all? I would have thought that just saying I want German number and currency format doesn't mean I want German language, I might just be an English speaker in Germany. The location option in Windows 7 also adds another variant.

Neil

-----Original Message-----
From: Phill Hogland [mailto:***@rimage.com]
Sent: 13 August 2013 21:39
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] [SPAM] Re: multi-language bundle - A BIG THANKS

OK I unravelled the Windows 8 configuration issue. This test system I thought was configured for German and English and I thought that I was setting both the System Default and the User Default to 1031 for these tests. I would change the order of the list under Language Preferences (based on various Internet statements to the effect that the top item in the list is the User Default). Not true, well at least not always true.

On the Language Preferences dialog, click on the bottom item on the left panel, 'Change date, time or number formats' (and no clue that this is where you set the User Default Language ID). The top item in that dialog was set to 'Match selected display language (recommended)' So one can change that setting and set a specific language (German) and then the call in burn does return 0x407, rather than always English.

But why did ''Match selected display language (recommended)' not work? Back to the Language Preferences dialog and eventually I noticed that both the English and German keyboard layouts were installed, but the German display language was not installed. So I installed it.

Now the behavior is that the Wix setup runs in the Language that is at the top of the Display Language list, and not necessarily the language the user currently has selected (as the Windows 8 "Match selected display language"
implies).

So to summarise, after moving to WiX 3.8, the UsersDefaultLanguageID does control the displayed language of my bundle (if I do not use -lang ) AND on Windows 8 a user might be confused, but the underlying API is returning the Default so this does not appear to be a Wix behavioral issue.

With that said, I wonder if there is still a problem with the Wix 3.8 implementation (or documentation) for a project in which the WixStdbaThemeWxl file is not located in a folder of 1033, and yet matches the UserDefaultLangID, it fails to use that thm.wxl file. Most examples that I have seem show adding other languages in there own lcid\thm.wxl file, but they do not necessarily make the point that the 'default' or English file also MUST be in a 1033 folder, for this code to make use of the file.




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587990.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-13 21:00:41 UTC
Permalink
Neil, thanks for pointing out what the code does.

I am running WiX 3.7 on Win 7 64 bit the problem is that when I have the
System OS set to French, the current language that I have been testing, and
run the burn wrapper .exe the burn UI will only appear in English.

When I add the -lang 1036 to the command line then the burn UI and license
file will correctly show in French.

Now looking at Phill's latest comments I also set the English UI strings in
the payload as well as on the bal element entries. The main sections of code
shown below:

<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication

LicenseFile="$(var.PROJECT_ROOT)\EULAs\Toolkit\en\License.rtf"
ThemeFile="CustomUI\RtfTheme.xml"

LocalizationFile="$(var.PROJECT_ROOT)\EULAs\Toolkit\en\RtfTheme.wxl"
LogoFile="table_toolkit_app_for_WiX.png" />

<PayloadGroupRef Id="RtfTheme_licenses"/>
<PayloadGroupRef Id="RtfTheme_Strings"/>
</BootstrapperApplicationRef>

So if there is a bug in WiX 3.7 that corrects for this and therefore works
in 3.8 then we'll have to look into upgrading, but if there is a fix for 3.7
or something that I am missing to get the Burn UI to correctly show in the
System Language then I would appreciate the help.

So if you have this working on serveral languages then were you using WiX
3.7 and if so then can you supply a small sample code that I can compare to
mine and test to see if I can get it working?

Thanks.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587991.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-13 21:27:32 UTC
Permalink
I believe I have fixed this with the extended BA I wrote and then I applied the same code to WiX 3.8 - so the options would be to use WiX 3.8 or the extended BA but reading Phil's comments regarding Windows 8 there may be more to it.
TimM
2013-08-13 21:46:47 UTC
Permalink
Thanks Neil,

Before I look at moving over to 3.8 could you let me know what I would have
to do to use the extended BA to test how that works with 3.7. Basically what
changes do I have to make and if there are any files I have to be editing to
actually make it work?

I have not done alot of Win 8 testing, but with the sound of it it looks
like I'll have to start soon as we are releasing many projects that support
multiple languages and therefore I better make sure we do not have issues
with our current WiX installers.

Tim



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587998.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-14 21:17:13 UTC
Permalink
There are some samples on the extended BA site that should help - if you have any problems it would be preferable if you posted questions there.

Neil

-----Original Message-----
From: TimM [mailto:***@smarttech.com]
Sent: 13 August 2013 22:47
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] [SPAM] Re: multi-language bundle - A BIG THANKS

Thanks Neil,

Before I look at moving over to 3.8 could you let me know what I would have to do to use the extended BA to test how that works with 3.7. Basically what changes do I have to make and if there are any files I have to be editing to actually make it work?

I have not done alot of Win 8 testing, but with the sound of it it looks like I'll have to start soon as we are releasing many projects that support multiple languages and therefore I better make sure we do not have issues with our current WiX installers.

Tim



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7587998.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM
2013-08-16 18:54:47 UTC
Permalink
Thanks Niel..

Just for my reference could you let me know which Extended BA site that
contain these examples? I have seen a few and I think I know the one you are
talking about but just wanted to confirm? Also is there an example on the
site for specifically testing the Burn UI under system OS language?

Thanks,

Tim.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7588121.html
Sent from the wix-users mailing list archive at Nabble.com.
Neil Sleightholm
2013-08-16 20:47:35 UTC
Permalink
This is the site http://wixextba.codeplex.com/

-----Original Message-----
From: TimM [mailto:***@smarttech.com]
Sent: 16 August 2013 19:55
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] [SPAM] Re: multi-language bundle - A BIG THANKS

Thanks Niel..

Just for my reference could you let me know which Extended BA site that contain these examples? I have seen a few and I think I know the one you are talking about but just wanted to confirm? Also is there an example on the site for specifically testing the Burn UI under system OS language?

Thanks,

Tim.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7588121.html
Sent from the wix-users mailing list archive at Nabble.com.
TimM [mailto:]=20
1970-01-01 00:00:00 UTC
Permalink
Neil

-----Original Message-----
From: TimM [mailto:***@smarttech.com]=20
Sent: 13 August 2013 22:01
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] [SPAM] Re: multi-language bundle - A BIG THANKS

Neil, thanks for pointing out what the code does.

I am running WiX 3.7 on Win 7 64 bit the problem is that when I have the Sy=
stem OS set to French, the current language that I have been testing, and r=
un the burn wrapper .exe the burn UI will only appear in English.

When I add the -lang 1036 to the command line then the burn UI and license =
file will correctly show in French.

Now looking at Phill's latest comments I also set the English UI strings in=
the payload as well as on the bal element entries. The main sections of co=
de shown below:

<BootstrapperApplicationRef
Id=3D"WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication
=20
LicenseFile=3D"$(var.PROJECT_ROOT)\EULAs\Toolkit\en\License.rtf"
ThemeFile=3D"CustomUI\RtfTheme.xml"
=20
LocalizationFile=3D"$(var.PROJECT_ROOT)\EULAs\Toolkit\en\RtfTheme.wxl"
LogoFile=3D"table_toolkit_app_for_WiX.png" />

<PayloadGroupRef Id=3D"RtfTheme_licenses"/>
<PayloadGroupRef Id=3D"RtfTheme_Strings"/>
</BootstrapperApplicationRef>

So if there is a bug in WiX 3.7 that corrects for this and therefore works =
in 3.8 then we'll have to look into upgrading, but if there is a fix for 3.=
7 or something that I am missing to get the Burn UI to correctly show in th=
e System Language then I would appreciate the help.

So if you have this working on serveral languages then were you using WiX
3.7 and if so then can you supply a small sample code that I can compare to=
mine and test to see if I can get it working?

Thanks.=20



--
View this message in context: http://windows-installer-xml-wix-toolset.6875=
59.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p75=
87991.html
Sent from the wix-users mailing list archive at Nabble.com.

---------------------------------------------------------------------------=
---
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.=20
Download for free and get started troubleshooting in minutes.=20
http://pubads.g.doubleclick.net/gampad/clk?id=3D48897031&iu=3D/4140/ostg.cl=
ktrk
shofar
2013-08-16 20:32:50 UTC
Permalink
In the ARP the only way I have found to make the DisplayName change with the
language of the user is to add the DisplayName_Localized entry to the ARP
entry in the registry as described here:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd374120(v=vs.85).aspx

Key:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{BundleID_GUID}
Name: DisplayName_Localized Value:@C:\Program Files\MyDir\MyMui.dll,-123

I point it at my MUI DLL that also contains my MUI shortcut entries. This
works great when I don’t define the ProviderKey. Then I am able to get the
BundleId from the Burn built in variable WixBundleProviderKey as it appears
to be the same as the BundleId. But in one case we have to define the
ProviderKey, so does anyone know how to get the BundleId that changes for
every build?




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-tp7208949p7588128.html
Sent from the wix-users mailing list archive at Nabble.com.

Loading...