2017-05-08 110 views
0

期间Inno Setup的安装应用程序的语言我正在寻找一种方式来设置基于使用Inno Setup的安装应用的过程中,用户选择的语言应用App.Resources.Culture推荐的方式安装

有安装和启动时读取此值时,或保存所选语言到一个txt文件设置注册表项的可能性,但我不能简单地以某种方式通过设置应用程序设置字符串值安装程序?如Properties.Settings.Default.CultureDefault

开发与.NET 4.5.2

+1

可能的复制(HTTP [如果存储在Properties.Settings.Default?]://计算器。 com/questions/982354/where-the-properties-settings-default-stored) –

+0

关于您最近的编辑:我们知道您想使用Inno Setup来做到这一点。但是你基本上有两个单独的问题:1)Properties.Settings.Default存储在哪里? 2)如何使用Inno Setup的更改存储的默认值 - 你不能在一个岗位问两个独立的问题 - 如果你知道1),让它在你的问题明确 -​​ 向我们展示你想改变的确切文件/存储和究竟如何你想要改变它。 –

+0

我看到它的方式,位置基本上是如何的一部分。位置本身并没有回答如何通过inno setup来做到这一点,因此这不是“存储设置在哪里”的链接问题的重复。 – ajr

回答

1

WPF应用程序,如果我理解正确的问题!?

你不能设置通过Inno Setup的WPF的文化背景

你并不需要设置registry或创建一个.txt文件

你可以简单地传递params创建创建菜单/桌面program links由...

Inno Setup的

[Languages] 
Name: en; MessagesFile: "compiler:Default.isl" 
Name: nl; MessagesFile: "compiler:Languages\Dutch.isl" 
Name: de; MessagesFile: "compiler:Languages\German.isl" 

[Icons] 
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; Parameters : "{code:GetMyCulture|{app}}" 

[Code] 

function GetMyCulture(Param: String):String; 
var 
lang,Cult : String; 
begin 
Result := ''; 
lang := ExpandConstant('{language}'); 
Cult := '"-Cult" '; 
if lang = 'de' then Result := Cult + '"de-DE"'; 
if lang = 'en' then Result := Cult + '"en-EN"'; 
if lang = 'nl' then Result := Cult + '"nl-NL"'; 
end; 

结果: “d:\ PROGRAMFILES \我的程序\ MYPROG.EXE” “-Cult” “NL-NL”

你必须建立与有效的培养成对[代码]部分。

WPF OnStartup()伪代码不测试的有效e.Args[1]

protected override void OnStartup(StartupEventArgs e) 
{ 
    if(e.Args.Length > 1) { 
    string cult = "-Cult"; 
    string cultone = e.Args[0]; 
    string culttwo = e.Args[1]; 
    if (cult.Equals(cultone)) { 
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culttwo); ; 
     Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culttwo); ; 

     FrameworkElement.LanguageProperty.OverrideMetadata(
      typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 
    } 
    } 
base.OnStartup(e); 

} 
} 

default-cultureinfo-for-wpf

+0

通过参数传递选定的语言当然是一个有趣而有效的通用解决方案。但是,我已经在使用程序参数来达到另一个目的,并希望将参数保持在最低限度... – ajr