Discussion:
[WiX-users] Bootstrapper for multiple cultures
vikasyv
2015-01-13 05:59:01 UTC
Permalink
Hi,

Please excuse me if this has already been discussed before. I am trying to
implement a bootstrapper for multiple cultures. After searching around, I
found some help but with that, I am only able to build 2 separate MSIs for 2
cultures and I now have to build 2 separate bootstrapper exe packages, one
for each culture. I need some help regarding this:

- Once we have 2 MSIs, for say English and Japanese, how do I create
Multiple bootstrappers for the same where the
WixStandardBootstrapperApplication application strings also need to be
localized? Please provide some examples or links for the same.

- The Ideal solution would be to create a page for language selection in the
bootstrapper which will then apply the required localizations. That way, I
will have only 1 MSI package with default language but since localization
will be applied on the bootstrapper, the user sees the Installation in his
local language. How can we achieve this in Wix? If you have any examples,
can you please share them?

Thanks and Regards
Vikas



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2015-01-13 15:01:35 UTC
Permalink
Here are a couple of quick links (and there are many more on this topic):
When this link was posted I was using WixStdBA
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-td7208949.html#a7587770

Here I use an mba, but the same concepts can be done in WixStdBa
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Deploying-multiple-cultures-using-Burn-MSI-s-Wix-3-9-issue-td7596896.html#a7598508

I use a single localized bootstrapper and separate localized msi(s). All of
my UX GUI is in the mba, except for a few status and error messages in the
MSI. I used to try to embed the culture transforms into a single msi. That
resulted in very subtle problems, and I was told that is not supported when
using a Burn bootstrapper. I would not advise going down that path.

Others have discussed in this forum how to ship a single localized
bootstrapper and a single msi with multiple transforms applied by the
bootstrapper. Each culture specific MSI must be built to create the
transforms. Typically a single 'package' project is used and you set the
cultures as documented in chm which results in MSBuild batch building the
different culture specific outputs.





--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7598843.html
Sent from the wix-users mailing list archive at Nabble.com.
vikasyv
2015-01-16 13:34:05 UTC
Permalink
Hi Phill,

I created directories for Japanese them and placed the wxl file and license
files and was able to get a Japanese bootstrapper installer when I ran with
the option -lang 1041. I was able to get the same output even by using a
single msi created in English as my Internal UI is set to No. But how can I
just click on the Installer and make it run with Japanese culture? When I
changed my keyboard settings to JP, it did not help either. Can you tell me
what I am doing wrong here?

Please refer to my code below.

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">


<Bundle Name="AppBundleName" Version="$(var.ProductVersion)"
Manufacturer="ManufacturerName"
UpgradeCode="{2D04966D-0EF6-492F-9A23-F456CCE6F6BE}"
Copyright="Copyright (c) 2014 - 2015 by Sling Media, Inc."
IconSourceFile=".\Logo_128x128.ico">

<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.RtfLicense" >
<bal:WixStandardBootstrapperApplication
LicenseFile=".\theme\EULA.rtf"
ThemeFile=".\MyTheme.xml"
ShowVersion="yes"
LogoFile="theme\Logo.png"
LocalizationFile="theme\RtfTheme.wxl"
/>

<Payload SourceFile="theme\Logo.png"/>
<Payload SourceFile="player-logo-pc.png"/>
<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>

<WixVariable Id="chkSPD" Value="![CDATA[chkSPD]]" />

<util:RegistrySearch Root='HKCU' Key='SOFTWARE\CompName\ProdName'
Id="SPDCheckInstalled" Variable="ProductName" Result="exists" />

<Variable Name="InstallFolder" Type="string"
Value="[ProgramFilesFolder]ProductName"/>
<Variable Name="LaunchTarget" Value="[InstallFolder]\Application.exe"/>

<Chain>

<MsiPackage Id="MainPackage" SourceFile="bin\Release\AppInstaller.msi"
Vital="yes" DisplayInternalUI="no">
<MsiProperty Name="INSTALLDIR" Value="[InstallFolder]"/>
</MsiPackage>


</Chain>
</Bundle>

Thanks and Regards
Vikas



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7598871.html
Sent from the wix-users mailing list archive at Nabble.com.
Phill Hogland
2015-01-16 16:17:53 UTC
Permalink
It has been over a year since I tackled that issue with the help of folks
here. This thread
<http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-td7208949.html#a7587949>
is on the same issue. I know we got it to automatically detect the
language, after I upgraded from wix 3.7 (which had a bug). Also you will
notice in that thread that part of my issue was that I did not understand
how the changes in the behaviour of Win 8 (in contrast to Win 7) was
affecting the issue.

Make sure that you define you WixLocalization element to specify the correct
Culture, Language, and Codepage. Then add additional String elements which
you can then use to signal your BA or use in MsiPackage conditions. This
example is from one of my localized MSI projects, so you would not need the
SummaryCodepage in a Bundle project. But you might have something like:
<String Id="msiTransfrom">1041.mst</String>

<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="ja-JP"
Codepage="932"
Language="1041"
xmlns="http://schemas.microsoft.com/wix/2006/localization">

<String Id="LCID">1041</String>
<String Id="Codepage">932</String>
<String Id="SummaryCodepage">932</String>



<String Id="DownVersionErrorMsg">[ProductName]
の新しいバージョンがすでにインストールされています。</String>
</WixLocalization>

Make sure you set the culture property in VS (or on the command line of
light) for the bundle project.
You can do it in the IDE as described here
<http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/specifying_cultures_to_build.html>
, or just edit the wixproj file to include something like:
<Cultures>en-US;de-DE;es-ES;fr-FR;it-IT;ja-JP;zh-CN</Cultures>

The WixStdBA will detect what the SystemLanguage is set too (IIRC), so on
Windows 8 I always get tripped up on how to configure that, but I then get
it worked out.

Use ProcessMon
<http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx> and watch
where you BA tries to load the lcid named resources. When you do not
provide the -lcid switch you will see that it will try to find a resource
and if it cannot find the resource it will drop back to the default (which
is what is sounds like it is doing for you.) Just guessing.

I did not see anything wrong with what you posted, based on my vague memory,
but I don't know how your wxl is defined. I also defined a wxl for my
default culture (en-US) as I needed to use the string that I created in that
wxl file to control the MsiPackage conditions for the en-US package.

I switched to creating a mba long ago so now I detect the culture in my BA
based on the cuture of the thread and use that info to select which culture
specific MSI to installed. So sorry that I do not remember all the details
of using the WixStdBA.










--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7598872.html
Sent from the wix-users mailing list archive at Nabble.com.
vikasyv
2015-01-19 09:15:44 UTC
Permalink
It worked after I changed my Date Format settings to Japanese :). Before I
was only changing the Keyboard and Location settings, but Date Format was
still English, so it was still coming up in English. Thanks a lot for the
help!

Regards
Vikas




--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7598899.html
Sent from the wix-users mailing list archive at Nabble.com.
Soren Dreijer
2015-04-27 15:47:08 UTC
Permalink
Sorry for reviving a fairly old thread, but I'm working on localizing the
MSIs inside a bundle and the following made me a bit uneasy:

I use a single localized bootstrapper and separate localized msi(s). All of
Post by Phill Hogland
my UX GUI is in the mba, except for a few status and error messages in the
MSI. I used to try to embed the culture transforms into a single msi.
That
resulted in very subtle problems, and I was told that is not supported when
using a Burn bootstrapper. I would not advise going down that path.
Phill, are you saying that it's impossible to create a single MSI with
multiple cultures? Do you happen to still have any references to the
"subtle problems" that you mention?

We're shipping a bundle exe for our product, but in certain situations,
such as deployment via GPO, our end-users must use MSIs, which means we
need to localize both the bundle *and* the MSI. I would very much want to
avoid having to bundle 17 almost-identical MSIs in a bundle if possible...

Thanks,
Soren
Post by Phill Hogland
When this link was posted I was using WixStdBA
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-td7208949.html#a7587770
Here I use an mba, but the same concepts can be done in WixStdBa
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Deploying-multiple-cultures-using-Burn-MSI-s-Wix-3-9-issue-td7596896.html#a7598508
I use a single localized bootstrapper and separate localized msi(s). All of
my UX GUI is in the mba, except for a few status and error messages in the
MSI. I used to try to embed the culture transforms into a single msi.
That
resulted in very subtle problems, and I was told that is not supported when
using a Burn bootstrapper. I would not advise going down that path.
Others have discussed in this forum how to ship a single localized
bootstrapper and a single msi with multiple transforms applied by the
bootstrapper. Each culture specific MSI must be built to create the
transforms. Typically a single 'package' project is used and you set the
cultures as documented in chm which results in MSBuild batch building the
different culture specific outputs.
--
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7598843.html
Sent from the wix-users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
WiX-users mailing list
https://lists.sourceforge.net/lists/listinfo/wix-users
Phill Hogland
2015-04-27 19:36:01 UTC
Permalink
My comment was based primarily on this thread
<http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Deploying-multiple-cultures-using-Burn-MSI-s-Wix-3-9-issue-td7596896.html>
where I detailed two concerns which I observed after using
embedTransform.exe, in the maner described here
<http://wix.tramontana.co.hu/tutorial/transforms/morphing-installers> , but
I included these MSIs i my Bundle chain. The scenarios that I encountered
are related to that fact that Burn fingerprints each MSI at build time, but
at runtime when the embedded MSI transforms are applied they changed the
ProductID (and possibly other details which Burn uses to fingerprint the
MSI) causing the observed problems. Others in the forum indicated that this
use of Burn is unsupported. I have seen this topic come up in other
threads with similar indication that Burn does not currently support this
scenario and that there may be an open feature request in this area.

Also in thist thread
<http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Deploying-multiple-cultures-using-Burn-MSI-s-Wix-3-9-issue-td7596896.html>
, linked above, Tobias that he adds the transforms to the Bundle chain
rather than embeding them in the MSI. I did not try that approach, so I
cannot provide more details on that approach. I am sure that there may be
other approaches.



--
View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Bootstrapper-for-multiple-cultures-tp7598840p7600115.html
Sent from the wix-users mailing list archive at Nabble.com.

Loading...