Hi Lian, If you're using Visual Studio and Votive, I would: 1. Move Main_<whatever language>.wxs into a common location, Main.wxs, and add it to your English and Japanese projects as a *linked* item. Main.wxs would also have an include, <?include ../$(var.LanguageId)/language-code.wxi?> 2. Add a pre-processor variable "LanguageId" to both your projects that would be set to the name of the directories, in this case, "en-us" and "ja-jp". This is how Main.wxs will find each language-code.wxi file specified in the <?include?> during build time.
\MyInstaller \common Main.wxs \en-us Myinstaller_en.wixproj (LanguageId=en-us) <link to ..\common\Main.wxs> language-code.wxi \ja-jp Myinstaller_ja.wixproj (LanguageId=ja-jp) <link to ..\common\Main.wxs> language-code.wxi I've used this setup for the installers for a number of payment gateway plug-ins that we support. Over 80% of the code-base for each plug-in is common code that is shared by all plug-ins including the custom actions, properties, and directory structure. Each plug-in has its own WXI file that contains unique GUIDs and a unique path. Now, any changes on how the plug-ins are installed is made is one file (or set of files) and is propogated across the 10+ plug-ins. ________________________________ From: Lian Jiang [mailto:lji...@microsoft.com] Sent: Wed 8/12/2009 6:05 PM To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] how to refactor my code to support multiple localeseasier Hi, I have below file structure for supporting multiple locales: \MyInstaller \en-us Myinstaller_en.wixproj Main_en.wxs \ja-jp Myinstaller_ja.wixproj Main_ja.wxs The only difference between Main_en.wxs and Main_ja.wxs is that the former uses 1033 as language ID and the latter uses 1041. <?define LCID="1041"?> <Product Id="$(var.PRODUCT_GUID)"> ...... </Product> As you can see, it is a big pain that every time when I update <Product> node in Main_en.wxs, I need to update Main_ja.wxs correspondingly. To relieve this pain, I tried to change the file structure into below one but did not succeed: \MyInstaller Commondefine.wxi \en-us Myinstaller_en.wixproj Main_en.wxs \ja-jp Myinstaller_ja.wixproj Main_ja.wxs This does not work because the whole <Product> node is the same for en-us and ja-jp. Only the macro which can be defined in wxi file is different. I know there is a way to create multiple locales installers using only one wixproj but it does not work here because I need to generate transform from en-us installer to ja-jp installer to create a MUI-based installer. How can I decouple <Product> node from the locale-specific part (e.g. LCID define) so that changing <Product> node does not need to change both locales' wxs files? Appreciate your help. Thanks Lian ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users