在安装程序中将所选语言设置为应用程序的默认语言

时间:2015-02-24 11:52:41

标签: .net localization installation wix multilingual

首先发布在这里。 我正在制作一个WPF应用程序,目前正在使用WIX在Visual Studio中创建安装程序。这很好用,但现在客户想要多语言应用程序和安装。

我们已在应用程序中实现了本地化,因此没问题:用户可以在首次启动应用程序时选择语言,并在用户设置中记住所选语言。

我也知道wix可以配置为创建多个安装程序,每个支持的语言一个,或者自动检测操作系统的语言,并选择该语言作为默认语言。

但是,我们真的想要一个安装程序,它允许您在安装过程开始时选择安装语言(这样我们就不需要管理20多个安装程序,有时候OS语言可能不正确用于自动检测)。我们已经测试了QSetup,这适用于创建多语言设置。

现在问题的本质是:如果使用QSetup(或任何其他安装程序包),如何在安装程序中将所选语言设置为已安装的所选语言应用?我们如何检测安装程序中选择的语言并制作脚本以将该语言设置为应用程序设置文件中的默认语言?有没有人用任何安装包完成这个,你是怎么做到的?

我希望用户不必选择语言两次:首先是安装,然后是第一次启动应用程序(用户可以在以后随时更改语言)。

对此有任何想法和提示将不胜感激。我们没有锁定任何特定的安装程序,虽然此时InstallShield专业版对我们来说有点贵。

2 个答案:

答案 0 :(得分:0)

首先,我的魔鬼的倡导者建议是“不要打扰”。在许多情况下,管理员使用不属于最终目标用户的语言安装产品。 其次,应用程序的默认语言应该是系统的默认用户语言,而不是安装它的任何人。 第三,我希望应用程序有办法改变它的语言。没有人想重新安装只是为了改变应用程序的语言。您使用术语“默认”,因此应用程序可能是多语言。

在那之后,实际上,如果安装捕获语言并且可以看到它的价值,那么只需将当前用户放入注册表并让应用程序从那里获取它。设置的内部是否可以看到所选的安装语言取决于您使用的工具。

答案 1 :(得分:0)

更新: 我很久以前就解决了这个问题,我想我应该与其他人分享。我使用了PhilDW方法并将所选语言放入注册表中。具体来说,在QSetup中,可以将可执行项添加到安装程序,并且可以检测选择的语言。因此,在QSetup编写器的执行对话框中,我为每个与我的安装程序相关的语言添加了一个执行项。

因此对于法语我添加了一个新的执行项目。我打电话给#34;法语选择",将在"安装结束"执行。类型是有条件的。在" IF"在Composer GUI的一部分,我将条件设置为"选择语言在",然后我选择" french"。

在" THEN"然后我选择了作曲家GUI的一部分:"创建注册表值"正在执行(下拉列表中的选择)。然后你可以为该操作添加三个参数:第一个是注册表字符串,在我的情况下是" HKEY_CURRENT_USER \ SOFTWARE ......... \ SelectedLanguageDuringInstallation",然后参数2是关键: installedLanguage,然后最后一个参数是值:fr。这些都是您选择的。没有下降。

那就是它。现在,如果选择的语言是法语,我们将执行一项操作。我的安装程序中总共有10种支持的语言,所以我需要创建10个不同的执行项。非常容易和强大。

然后我第一次在安装后启动应用程序时,我读取了注册表值并将其映射到应用程序的可能语言。

希望这有助于某人。