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

Set the selected language in an installer as the default language of the application

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

我们在应用程序中实现了本地化,所以没关系:用户可以在应用程序首次启动时使用 select 语言,并且会在用户设置中记住 selected 语言。

我也知道 wix 可以配置为创建多个安装程序,每个支持的语言一个,或者自动检测 OS 和 select 的语言作为默认语言。

但是,我们真的想要一个安装程序,它可以让您在安装过程开始时 select 安装语言(这样我们就不需要管理 20 多个安装程序,有时 OS自动检测的语言可能不正确)。我们已经测试了 QSetup,它可以很好地创建多语言设置。

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

我希望看到用户不必 select 语言两次:第一次是安装,然后是第一次启动应用程序(用户可以在以后随时更改语言) .

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

首先,我的魔鬼拥护者的建议是"don't bother"。在许多情况下,管理员使用的语言不是最终目标用户使用的语言来安装产品。 其次,应用程序的默认语言应该是系统的默认用户语言,而不是碰巧安装它的人的语言。 第三,我希望应用程序有办法改变它的语言。没有人愿意仅仅为了更改应用程序的语言而重新安装。您使用了术语 "default",因此该应用程序可能是多语言的。

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

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

因此,对于法语,我添加了一个新的执行项目。我称之为 "French Selected",将在 "Setup End" 执行。类型是有条件的。在 Composer GUI 的 "IF" 部分下,我将条件设置为 "Selected Language is in",然后我选择了 "french"。

在 composer GUI 的 "THEN" 部分下,我选择了 :"Create Registry Value" under perform(下拉列表中的一个选择)。然后您可以向该操作添加三个参数:第一个是注册表字符串,在我的例子中是 "HKEY_CURRENT_USER\SOFTWARE.........\SelectedLanguageDuringInstallation",第二个参数是键:installedLanguage,最后一个参数是值:fr。这些由您选择。没有下拉。

就是这样。如果选择的语言是法语,现在我们要执行一个动作。我的安装程序中总共有 10 种受支持的语言,因此我需要创建 10 个不同的执行项。非常简单和强大。

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

希望这对某人有所帮助。