MSBuild with multiple localizations

3 messages Options
Embed this post
Permalink
Kevin Richardson-5

MSBuild with multiple localizations

Reply Threaded More More options
Print post
Permalink
Greetings,

Does anyone have an example of building multi-language WiX installers  
with MSBuild? I've looked at the single-language examples, but what  
I'd like to do is have a .wixproj that builds an installer in 10+  
languages.

My current process uses the WiX tools manually through batch files,  
and basically does the following:

1) build language-neutral MSI
2) set environment variable (used in <Product> language attribute) and  
build localized MSI for each language (candle/light are called with  
the appropriate localized .wxl files)
3) generate a transform between the language neutral and localized MSIs
4) embed the transforms into the MSI (I believe that's an undocumented  
way to do a "language picker")

Can this be duplicated (or improved upon) reasonably in a .wixproj?

Thanks,

-kevin

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
RAYMENT Tim

Re: MSBuild with multiple localizations

Reply Threaded More More options
Print post
Permalink

Hi Kevin,

We use a .wixproj to manage the files in the VS IDE and then have a
separate MSBuild script to manage building of our multi-language
installers.

We start by finding all WiX files
<!-- WiX compile target expects a list of wxs files to compile.
       We just compile all .wxs in the Installation directory-->
<ItemGroup>
    <WiXSourceFiles Include="$(InstallationDirectory)\*.wxs" />
</ItemGroup>

We have an ItemGroup of languages defined:

<!--List of all languages supported by the installer.-->
<ItemGroup>

    <Language Include="TraditionalChinese">
      <Culture>zh-TW</Culture>
      <Code>1028</Code>
      <Prefix>TW</Prefix>
    </Language>
   
    <Language Include="German">
      <Culture>de-DE</Culture>
      <Code>1031</Code>
      <Prefix>DE</Prefix>
    </Language>
...
</ItemGroup>

Then use the Candel WiX MSBuild task:

<!--Compile the WiX source files-->
<Candle
      SourceFiles="@(WiXSourceFiles)"
      OutputFile="$(InstallationDirectory)\obj\release\"
      ToolPath="$(WixToolPath)"
      DefineConstants="Build=Release;SolutionDir=E:\XXX\Source" />

Then use Light:

<!--Batch process all the languages-->
    <Light
      ObjectFiles="@(CompileObjOutput)"
      Cultures="%(Language.Culture)"
      Extensions="@(WixExtension)"
      OutputFile="$(InstallerOutputDirectory)\XXX%(Language.Prefix).msi"
      ToolPath="$(WixToolPath)" />

The key point to note in the last step is the use of %(Language...)
which causes Light to be called for each language defined in the
ItemGroup.

You can then use an <Exec> task to create transforms and embed them back
into a language neutral msi.

Kind regards,

Tim Rayment
Senior Software Engineer

Oxford Instruments plc
Halifax Road, High Wycombe, HP12 3SE, UK
Tel: +44 (0) 1494 442255
Email: [hidden email]
www.oxford-instruments.com

 

-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of Kevin
Richardson
Sent: 07 May 2008 05:24
To: [hidden email]
Subject: [WiX-users] MSBuild with multiple localizations

Greetings,

Does anyone have an example of building multi-language WiX installers  
with MSBuild? I've looked at the single-language examples, but what  
I'd like to do is have a .wixproj that builds an installer in 10+  
languages.

My current process uses the WiX tools manually through batch files,  
and basically does the following:

1) build language-neutral MSI
2) set environment variable (used in <Product> language attribute) and  
build localized MSI for each language (candle/light are called with  
the appropriate localized .wxl files)
3) generate a transform between the language neutral and localized MSIs
4) embed the transforms into the MSI (I believe that's an undocumented  
way to do a "language picker")

Can this be duplicated (or improved upon) reasonably in a .wixproj?

Thanks,

-kevin

------------------------------------------------------------------------
-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j
avaone
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users


+++ Virus-scanned by MailControl for Oxford Instruments +++



___________________________________________________________________________ThThis e-mail is confidential and is for the addressee only.  Please refer to www.oxinst.com/email-statement for regulatory information.

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
RAYMENT Tim

Re: MSBuild with multiple localizations

Reply Threaded More More options
Print post
Permalink
I use $(loc.LCID) where LCID is defined in a custom localization file.
In the Light task add an attribute to specify the localization files.
Note we also include the wixui files from WiX2.
 
LocalizationFiles="Path\wixui_%(Language.Culture).wxl;Path\custom_%(Lang
uage.Culture).wxl;"
 

Tim Rayment
Senior Software Engineer

Oxford Instruments plc
Halifax Road, High Wycombe, HP12 3SE, UK
Tel: +44 (0) 1494 442255
Email: [hidden email]
www.oxford-instruments.com

 
-----Original Message-----
From: Kevin Richardson [mailto:[hidden email]]
Sent: 07 May 2008 19:02
To: RAYMENT Tim
Subject: Re: [WiX-users] MSBuild with multiple localizations

One question, Tim...

It looks like you only fire candle once.

In the <Product> element, there is a Language attribute. Currently for  
that attribute, I use $(env.langid), set in the batch file before  
running candle for each language.

What do you do for that attribute?

Thanks again,

-kevin


On May 7, 2008, at 12:41 AM, RAYMENT Tim wrote:

>
> Hi Kevin,
>
> We use a .wixproj to manage the files in the VS IDE and then have a
> separate MSBuild script to manage building of our multi-language
> installers.
>
> We start by finding all WiX files
> <!-- WiX compile target expects a list of wxs files to compile.
>       We just compile all .wxs in the Installation directory-->
> <ItemGroup>
>    <WiXSourceFiles Include="$(InstallationDirectory)\*.wxs" />
> </ItemGroup>
>
> We have an ItemGroup of languages defined:
>
> <!--List of all languages supported by the installer.-->
> <ItemGroup>
>
>    <Language Include="TraditionalChinese">
>      <Culture>zh-TW</Culture>
>      <Code>1028</Code>
>      <Prefix>TW</Prefix>
>    </Language>
>
>    <Language Include="German">
>      <Culture>de-DE</Culture>
>      <Code>1031</Code>
>      <Prefix>DE</Prefix>
>    </Language>
> ...
> </ItemGroup>
>
> Then use the Candel WiX MSBuild task:
>
> <!--Compile the WiX source files-->
> <Candle
>      SourceFiles="@(WiXSourceFiles)"
>      OutputFile="$(InstallationDirectory)\obj\release\"
>      ToolPath="$(WixToolPath)"
>      DefineConstants="Build=Release;SolutionDir=E:\XXX\Source" />
>
> Then use Light:
>
> <!--Batch process all the languages-->
>    <Light
>      ObjectFiles="@(CompileObjOutput)"
>      Cultures="%(Language.Culture)"
>      Extensions="@(WixExtension)"
>      OutputFile="$(InstallerOutputDirectory)\XXX%
> (Language.Prefix).msi"
>      ToolPath="$(WixToolPath)" />
>
> The key point to note in the last step is the use of %(Language...)
> which causes Light to be called for each language defined in the
> ItemGroup.
>
> You can then use an <Exec> task to create transforms and embed them  
> back
> into a language neutral msi.
>
> Kind regards,
>
> Tim Rayment
> Senior Software Engineer
>
> Oxford Instruments plc
> Halifax Road, High Wycombe, HP12 3SE, UK
> Tel: +44 (0) 1494 442255
> Email: [hidden email]
> www.oxford-instruments.com
>
>
>
> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of Kevin
> Richardson
> Sent: 07 May 2008 05:24
> To: [hidden email]
> Subject: [WiX-users] MSBuild with multiple localizations
>
> Greetings,
>
> Does anyone have an example of building multi-language WiX installers
> with MSBuild? I've looked at the single-language examples, but what
> I'd like to do is have a .wixproj that builds an installer in 10+
> languages.
>
> My current process uses the WiX tools manually through batch files,
> and basically does the following:
>
> 1) build language-neutral MSI
> 2) set environment variable (used in <Product> language attribute) and
> build localized MSI for each language (candle/light are called with
> the appropriate localized .wxl files)
> 3) generate a transform between the language neutral and localized  
> MSIs
> 4) embed the transforms into the MSI (I believe that's an undocumented
> way to do a "language picker")
>
> Can this be duplicated (or improved upon) reasonably in a .wixproj?
>
> Thanks,
>
> -kevin
>
>
------------------------------------------------------------------------
> -
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save  
> $100.
> Use priority code J8TL2D2.
>
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j

> avaone
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
> +++ Virus-scanned by MailControl for Oxford Instruments +++
>
>
>
>
________________________________________________________________________
___ThThis
>  e-mail is confidential and is for the addressee only.  Please refer  
> to www.oxinst.com/email-statement for regulatory information.
>
>
------------------------------------------------------------------------
-
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save  
> $100.
> Use priority code J8TL2D2.
>
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j
avaone
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users