The wixout files generated by light are localised to US English and cannot be re-bound to a different localisation.
The first run of light uses the following command line:
light -loc MyStrings_en-us.wxl -out "Setup.wixout" -xo -cc ".\cab" obj*.wixobj
and the second:
light -cultures:es-es;en-us -loc MyStrings_es-es.wxl -loc MyStrings_en-us.wxl -out "Setup.msi" -cc ".\cab" -reusecab "Setup.wixout"
Update: The bug is probably related to the fact the I have to supply -loc command to stop light failing resolve any of my localisation variables and generating this error:
Product.wxs(15) : error LGHT0102 : The localization variable
!(loc.ProductLanguage) is unknown. Please ensure the variable is defined.
You're running into default localization. Try the -sloc switch on Light. Unfortunately, there isn't a wix.targets property for it yet -- I'm adding that now.
I assume you meant adding -sloc to the first run of light i.e. generating the wixout file. That stops the LGHT0102 error but then when I run light again to generate the localised MSI I get this error:
light.exe : error LGHT0001 : '!(loc.SummaryCodepage)' is not a supported encoding name.
Parameter name: name
Exception Type: System.NotSupportedException
Stack Trace:
at Microsoft.Tools.WindowsInstallerXml.Common.GetValidCodePage(String value)
at Microsoft.Tools.WindowsInstallerXml.Binder.BindDatabaseSummaryInfo(Output output, Boolean& longNames, Boolean& compressed)
at Microsoft.Tools.WindowsInstallerXml.Binder.BindDatabase(Output output, String databaseFile)
at Microsoft.Tools.WindowsInstallerXml.Binder.Bind(Output output, String file)
at Microsoft.Tools.WindowsInstallerXml.Tools.Light.Run(String[] args)
Binder temporary directory located at 'C:\Users\Neil Sleightholm\AppData\Local\Temp\0qfqqxu0'.
Validator temporary directory located at 'C:\Users\Neil Sleightholm\AppData\Local\Temp\ttx1hmld'.
If you hard-code the codepage, is that the only error? (We localize after trying to set the summary info.)
I reversed the other so that loc resolution happens before the summary info stuff. That fixed it on our end.
Removing the summary info localisation stopped the error but now I get these errors for all the localisation variables:
C:\delivery\Dev\wix30_public\src\ext\UIExtension\wixlib\ErrorProgressText.wxs(17) : error LGHT0102 : The localization variable !(loc.ProgressTextInstallValidate) is unknown. Please ensure the variable is defined.
C:\delivery\Dev\wix30_public\src\ext\UIExtension\wixlib\ErrorProgressText.wxs(18) : error LGHT0102 : The localization variable !(loc.ProgressTextInstallFiles) is unknown. Please ensure the variable is defined.
OK, so it's apparently not picking up the localization sets from the extension's wixlib. It works if you explicitly add the .wxl in a -loc switch.
Sample attached.
File Added: Test.zip
Allow .wixouts going through the binder to get localizations from libraries in extensions
This Tracker item was closed automatically by the system. It was
previously set to a Pending status, and the original submitter
did not respond within 21 days (the time period specified by
the administrator of this Tracker).