Discussion:
[WiX-users] Multi-language msi
John Lemire
2006-08-06 00:22:16 UTC
Permalink
Hi,

We are currently using the MsiTran / SummaryInfo mechanism to build a single msi for English, French, German, and Italian. We're being asked to add Japanese, Chinese, and Korean and I was thinking if wix would make this easier maybe now would be a good time to invest resources in porting to wix. However the wix localization info I've read so far seems to point to separate installers for each language. Are there any examples of how to author a multi-language msi using the wix syntax/tool set?

thanks
-john
Derek Cicerone
2006-08-06 00:38:10 UTC
Permalink
What is the MsiTran SummaryInfo mechanism?



_____

From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John Lemire
Sent: Saturday, August 05, 2006 5:22 PM
To: wix-***@lists.sourceforge.net
Subject: [WiX-users] Multi-language msi



Hi,

We are currently using the MsiTran / SummaryInfo mechanism to build a single
msi for English, French, German, and Italian. We're being asked to add
Japanese, Chinese, and Korean and I was thinking if wix would make this
easier maybe now would be a good time to invest resources in porting to wix.
However the wix localization info I've read so far seems to point to
separate installers for each language. Are there any examples of how to
author a multi-language msi using the wix syntax/tool set?

thanks
-john
Chesong Lee
2006-08-06 00:55:28 UTC
Permalink
MSI does not support unicode database and requires single ANSI code page for a database.
As Western European languages shares a single code page 1252, it is possible to make a single MSI for multiple languages. But CJK or other languages use their own code page. E.g. Japanese 932, Korean 949, Simplified Chinese 936, Traditional Chinese 950, etc. So you cannot make a single MSI for other than Western European languages. AFAIK, using MST or multiple MSI are the only solution.

It can be useful if we can use Codepage 65001 (UTF-8) and it works only in Western European Windows, though. If system default code page (for non-unicode applications) is not 1252, 65001 is not available, which means CJK Windows does not recognize 65001.

I am still wondering why MSI does not support unicode database in the current version, if even MSI 3.0 or later does not support non-unicode based operating systems - Windows 9x.

Regards,

Chesong Lee

From: wix-users-***@lists.sourceforge.net [mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John Lemire
Sent: Saturday, August 05, 2006 8:22 PM
To: wix-***@lists.sourceforge.net
Subject: [WiX-users] Multi-language msi

Hi,

We are currently using the MsiTran / SummaryInfo mechanism to build a single msi for English, French, German, and Italian. We're being asked to add Japanese, Chinese, and Korean and I was thinking if wix would make this easier maybe now would be a good time to invest resources in porting to wix. However the wix localization info I've read so far seems to point to separate installers for each language. Are there any examples of how to author a multi-language msi using the wix syntax/tool set?

thanks
-john
Rob Mensching
2006-08-06 04:24:04 UTC
Permalink
Post by Chesong Lee
I am still wondering why MSI does not support unicode database in
the current version, if even MSI 3.0 or later does not support
non-unicode based operating systems - Windows 9x.
File format changes are never cheap... especially, when you have over 7
years of files that you have to maintain compatibility with. Although I
agree, it'd be nice to get out of this ANSI muck.
John Lemire
2006-08-06 15:45:17 UTC
Permalink
To make multi-language msi's right now you:
1)Make a normal msi in your primary lanuage (english in my case)
2)Make normal msi's in the other languages.
3)Run MsiTran once each on your primary language and each of your secondary ones.
This builds a transform (delta) between the primary and each secondary.
4)Stuff the MsiTran generated deltas into the primary msi
5)Set the SummaryInfo to include all the languages it now includes

then when msiexec runs it first compares the current os/user setting with the options in the SummaryInfo and if it matches one it applies that ones transfom before showing the UI.



-----Original Message-----
From: Derek Cicerone [mailto:***@users.sourceforge.net]
Sent: Sat 8/5/2006 5:38 PM
To: John Lemire; wix-***@lists.sourceforge.net
Subject: RE: [WiX-users] Multi-language msi

What is the MsiTran SummaryInfo mechanism?



_____

From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John
Lemire
Sent: Saturday, August 05, 2006 5:22 PM
To: wix-***@lists.sourceforge.net
Subject: [WiX-users] Multi-language msi



Hi,

We are currently using the MsiTran / SummaryInfo mechanism to build a
single msi for English, French, German, and Italian. We're being asked
to add Japanese, Chinese, and Korean and I was thinking if wix would
make this easier maybe now would be a good time to invest resources in
porting to wix. However the wix localization info I've read so far seems
to point to separate installers for each language. Are there any
examples of how to author a multi-language msi using the wix syntax/tool
set?

thanks
-john
Derek Cicerone
2006-08-06 18:32:20 UTC
Permalink
Ah ok. I'm not certain, but I believe I've heard two things about that
method:

1. It's not officially supported by the MSI team (they discourage
people from using it). I'm not sure why though.
2. I believe you cannot create a patch to modify the strings which come
from the transform because the transform is always applied last. This would
be a geo-political risk if one of the strings in your setup was found to be
offensive.



Derek



_____

From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John Lemire
Sent: Sunday, August 06, 2006 8:45 AM
To: wix-***@lists.sourceforge.net
Subject: Re: [WiX-users] Multi-language msi



To make multi-language msi's right now you:
1)Make a normal msi in your primary lanuage (english in my case)
2)Make normal msi's in the other languages.
3)Run MsiTran once each on your primary language and each of your secondary
ones.
This builds a transform (delta) between the primary and each secondary.
4)Stuff the MsiTran generated deltas into the primary msi
5)Set the SummaryInfo to include all the languages it now includes

then when msiexec runs it first compares the current os/user setting with
the options in the SummaryInfo and if it matches one it applies that ones
transfom before showing the UI.



-----Original Message-----
From: Derek Cicerone [mailto:***@users.sourceforge.net]
Sent: Sat 8/5/2006 5:38 PM
To: John Lemire; wix-***@lists.sourceforge.net
Subject: RE: [WiX-users] Multi-language msi

What is the MsiTran SummaryInfo mechanism?



_____

From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John
Lemire
Sent: Saturday, August 05, 2006 5:22 PM
To: wix-***@lists.sourceforge.net
Subject: [WiX-users] Multi-language msi



Hi,

We are currently using the MsiTran / SummaryInfo mechanism to build a
single msi for English, French, German, and Italian. We're being asked
to add Japanese, Chinese, and Korean and I was thinking if wix would
make this easier maybe now would be a good time to invest resources in
porting to wix. However the wix localization info I've read so far seems
to point to separate installers for each language. Are there any
examples of how to author a multi-language msi using the wix syntax/tool
set?

thanks
-john
DEÁK JAHN, Gábor
2006-08-06 20:27:34 UTC
Permalink
On Sun, 6 Aug 2006 11:32:20 -0700, Derek Cicerone wrote:

Derek,
It�s not officially supported by the MSI team (they
discourage people from using it). I�m not sure why though.
Actually, as far as I know, it's naming the transforms according to the codepage numbers (what would make the selection of the language automatic) is discouraged, not the use of the transforms themselves like this:

msiexec /i SampleMulti.msi TRANSFORMS="fr-fr.mst"

Bye,
G�bor

-------------------------------------------------------------------
DE�K JAHN, G�bor -- Budapest, Hungary
E-mail: ***@tramontana.co.hu
Derek Cicerone
2006-08-06 20:39:25 UTC
Permalink
Right, using the transforms in that way is not discouraged (that's their
localization story from what I know); it's just that the data coming from
the transform is then unpatchable because the transforms are always applied
last.

Derek

-----Original Message-----
From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of DEÁK JAHN,
Gábor
Sent: Sunday, August 06, 2006 1:28 PM
To: WiX-users
Subject: [WiX-users] Multi-language msi

On Sun, 6 Aug 2006 11:32:20 -0700, Derek Cicerone wrote:

Derek,
Its not officially supported by the MSI team (they
discourage people from using it). Im not sure why though.
Actually, as far as I know, it's naming the transforms according to the
codepage numbers (what would make the selection of the language automatic)
is discouraged, not the use of the transforms themselves like this:

msiexec /i SampleMulti.msi TRANSFORMS="fr-fr.mst"

Bye,
Gabor

-------------------------------------------------------------------
DEAK JAHN, Gabor -- Budapest, Hungary
E-mail: ***@tramontana.co.hu
John Lemire
2006-08-07 15:04:01 UTC
Permalink
Yes the hypocrisy of which is not lost on us as Microsoft uses this exceptionally handy feature itself (in the windows installer installer instmsi.exe no less) while discouraging it and leaving it undocumented...

-----Original Message-----
From: wix-users-***@lists.sourceforge.net [mailto:wix-users-***@lists.sourceforge.net] On Behalf Of DEÁK JAHN, Gábor
Sent: Sunday, August 06, 2006 1:28 PM
To: WiX-users
Subject: [WiX-users] Multi-language msi

On Sun, 6 Aug 2006 11:32:20 -0700, Derek Cicerone wrote:

Derek,
Post by Derek Cicerone
It's not officially supported by the MSI team (they
discourage people from using it). I'm not sure why though.
Actually, as far as I know, it's naming the transforms according to the codepage numbers (what would make the selection of the language automatic) is discouraged, not the use of the transforms themselves like this:

msiexec /i SampleMulti.msi TRANSFORMS="fr-fr.mst"

Bye,
Gábor

-------------------------------------------------------------------
DEÁK JAHN, Gábor -- Budapest, Hungary
E-mail: ***@tramontana.co.hu
Chesong Lee
2006-08-07 18:26:13 UTC
Permalink
I never knew that automatic language selection feature was in MSI engine. Seems like that's why InstallShield guys are using 1033.mst or <LANGID>.mst in their localization. But they do not embed the language transforms which may invoke automatic transform selection. Thanks for the tip.

And as for prior comments, I thought you were using single MSI for multiple languages without transforms. But in your case, there will be no problem for different code pages as long as transforms are used and main msi code page is "0".

Regards,

Chesong Lee

-----Original Message-----
From: wix-users-***@lists.sourceforge.net [mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John Lemire
Sent: Monday, August 07, 2006 11:04 AM
To: WiX-users
Subject: Re: [WiX-users] Multi-language msi

Yes the hypocrisy of which is not lost on us as Microsoft uses this exceptionally handy feature itself (in the windows installer installer instmsi.exe no less) while discouraging it and leaving it undocumented...

-----Original Message-----
From: wix-users-***@lists.sourceforge.net [mailto:wix-users-***@lists.sourceforge.net] On Behalf Of DEÁK JAHN, Gábor
Sent: Sunday, August 06, 2006 1:28 PM
To: WiX-users
Subject: [WiX-users] Multi-language msi

On Sun, 6 Aug 2006 11:32:20 -0700, Derek Cicerone wrote:

Derek,
Post by Derek Cicerone
It's not officially supported by the MSI team (they
discourage people from using it). I'm not sure why though.
Actually, as far as I know, it's naming the transforms according to the codepage numbers (what would make the selection of the language automatic) is discouraged, not the use of the transforms themselves like this:

msiexec /i SampleMulti.msi TRANSFORMS="fr-fr.mst"

Bye,
Gábor

-------------------------------------------------------------------
DEÁK JAHN, Gábor -- Budapest, Hungary
E-mail: ***@tramontana.co.hu



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
Rob Mensching
2006-08-07 16:12:37 UTC
Permalink
So why don't you go send a comment from the Windows Installer team's blog
and tell them to document the feature or quit using it themselves?
Complaining to the volunteers that work on the WiX toolset won't do you
nearly as much good as commenting directly. It might make you feel better
but it certainly doesn't motivate me because there isn't anything we can do
in the WiX toolset to document undocumented Windows Installer features.

That said I have passed on the localization challenges that people have
brought up here to the Windows Installer team several times. However, it is
easy for teams at Microsoft to view me as "just one person".

Want better odds that your issues get addressed? Get a number of people
that agree together and together try to convince the responsible team to
address your needs.


-----Original Message-----
From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John Lemire
Sent: Monday, August 07, 2006 08:04
To: WiX-users
Subject: Re: [WiX-users] Multi-language msi

Yes the hypocrisy of which is not lost on us as Microsoft uses this
exceptionally handy feature itself (in the windows installer installer
instmsi.exe no less) while discouraging it and leaving it undocumented...
John Lemire
2006-08-07 18:30:51 UTC
Permalink
Whoaaaa (squealing brakes) Sorry please don't get me wrong, I'm *NOT*
complaining about it here. Rereading that I can see how the word
"hypocrisy" could lead to an assumption about the overall tone and I
should have inserted a smiley to clearly convey that that was meant to
be a friendly poke in the ribs.

I'm just asking if there's any wix authoring support for it. It was
pointed out that it was discouraged/undocumented which I wanted to
counter point because I didn't want that to too heavily (negatively)
influence anyone's thoughts about potentially adding such support if it
not there already.

I am quite aware of the fact that wix support for it may go along way
towards generating more traction for it and ensuring that it did not
disappear in the future and that that might be a *BAD* thing. I would be
quite elated if the answer was no we don't support it and we don't ever
intend to because we've come up with a much better solution.

Maybe those of you more intimately familiar with msi and the wix tool
set already have much better alternate suggestions in mind or already in
place for achieving the same thing that would make support for that
method a completely moot point.

Perhaps a shell msi which is nothing more that a bunch of individual
localized msis stored as binary blobs and a custom action to extract the
correct one and run it? That might be much more flexible while at the
same time avoid the transform limitations Derek pointed out and the
codepage problems Chesong pointed out. Perhaps this would be tragically
inefficient but you have much better ideas...

What I'm faced with is trying to come up with a single multi language
installer. The guys who do the java versions of our product have an
install shield based one for all the non windows platforms so our
production guys are asking for the same from us for the .NET version of
our product. They are mentally operating at the sku/download level so
they don't care about fantastic msi advantages over the install support
for other platforms or what our customers who are installing the java
stuff on windows anyway are losing by not using an msi based install
shield installer. No many how many bats I bring to the game I can't beat
that sense into them.

At the moment what I have to work with is a VS deployment project
generated msi and a bunch of script that does post processing work on it
hammering in additional ui buttons that invoke ca's, radio buttons that
control conditionally skipping dialog sequences, patches to fix up
silent install, etc, etc, etc. Believe me the process is exactly as
hideous and fragile as you are imagining while you push back from your
keyboard and cringe. I also have everything I think I need to put into
the new installer, including all the localized versions of the installer
strings. Now I'm faced with piling more investment into this steaming
pile or taking a new tact. So I am VERY aware that I am the one asking
you guys for help.

Also although I'm a newbie here I have taken the time to read almost
every msg posted on this list for the 60 or so days so I know that
everyone that contributes is doing so voluntarily and that you and Derek
must spend tons of hours doing so between both advancing the wix code
base and trying to helpfully answer questions here. I have spent lots of
hours volunteering on various ASP.NET and continuous integration things
so I can truly appreciate what you're doing and I am very thankful for
both of your contributions as well as those of others who's names I'm
not yet familiar with yet.

Appologies for the misunderstanding and many thanks for the great work,
commitment, and effort.

-john




-----Original Message-----
From: Rob Mensching [mailto:***@users.sourceforge.net]
Sent: Monday, August 07, 2006 9:13 AM
To: John Lemire; WiX-users
Subject: RE: [WiX-users] Multi-language msi

So why don't you go send a comment from the Windows Installer team's
blog
and tell them to document the feature or quit using it themselves?
Complaining to the volunteers that work on the WiX toolset won't do you
nearly as much good as commenting directly. It might make you feel
better
but it certainly doesn't motivate me because there isn't anything we can
do
in the WiX toolset to document undocumented Windows Installer features.

That said I have passed on the localization challenges that people have
brought up here to the Windows Installer team several times. However,
it is
easy for teams at Microsoft to view me as "just one person".

Want better odds that your issues get addressed? Get a number of people
that agree together and together try to convince the responsible team to
address your needs.


-----Original Message-----
From: wix-users-***@lists.sourceforge.net
[mailto:wix-users-***@lists.sourceforge.net] On Behalf Of John
Lemire
Sent: Monday, August 07, 2006 08:04
To: WiX-users
Subject: Re: [WiX-users] Multi-language msi

Yes the hypocrisy of which is not lost on us as Microsoft uses this
exceptionally handy feature itself (in the windows installer installer
instmsi.exe no less) while discouraging it and leaving it
undocumented...
DEÁK JAHN, Gábor
2006-08-07 19:49:19 UTC
Permalink
On Mon, 7 Aug 2006 11:30:51 -0700, John Lemire wrote:

John,
Post by John Lemire
Maybe those of you more intimately familiar with msi and the wix
tool set already have much better alternate suggestions in mind or
already in place for achieving the same thing that would make
support for that method a completely moot point.
The solution with transforms can be easily done with WiX and a few available tools from Microsoft (actually, I started to write a replacement utility instead of those MS ones, after all they do nothing else but call MSI API function themselves; I came stuck at one point but I no longer remember where and why, I would need to dig up the code; of course, if it would work, it would be contributed to the project itself). Even the undocumented and discouraged part of it can be done with WiX if you chose to do so. I left it out from the tutorial on purpose, after having asked Rob about the issue.

But even with the documented way, it's a ten-minute job to come up with a single dialog bootstrapper in your favorite programming environment that offers a listbox of all the languages you provide in your installation, checks the system language and sets it as default, then at the touch of an OK button calls

msiexec /i SampleMulti.msi TRANSFORMS="fr-fr.mst"

with the appropriate names of the transforms hardwired.

Bye,
G�bor

-------------------------------------------------------------------
DE�K JAHN, G�bor -- Budapest, Hungary
E-mail: ***@tramontana.co.hu

Loading...