问题
Environment: Windows 7 SP1 Visual Studio 2010 Ultimate SP1 .NET 4.0
I have a Visual Studio Setup project with some prerequisites(Windows Installer 4.5, SQL Server Express 2008...)
My deployment package has an setup.exe, app.msi and folders with prerequisites.
Now we want to localize the msis. So we will have app.en.msi and app.de.msi
Do I need two deployment packages? Or can I have an intelligent setup.exe which can choose between the app.en.msi and app.de.msi based on the regional setting?
回答1:
The general approach is this:
- create the base MSI in the main language (usually English)
- create a MST transform for each language; this transform should change the UI strings to their translated values
- create a custom EXE bootstrapper which detects the system language or shows a language selection dialog
- this bootstrapper should then launch the MSI with the appropriate transform
Visual Studio doesn't support this, but you can generate transforms with Orca.
Please note that this is not an easy task. You would have to do everything by hand, including getting the UI strings translated in the languages you want.
For multilingual packages it's easier to use a commercial setup authoring tool which already has dedicated support and the appropriate strings.
来源:https://stackoverflow.com/questions/7351530/setup-exe-calling-msi-based-on-regional-setting