If I understand the question correct !?
You can not set the WPF culture setting via inno setup
You don't need to set the registry
or create a .txt
file
You can simply pass params
to the created menu/desktop program links
created by ...
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;
result : "D:\ProgramFiles\My Program\MyProg.exe" "-Cult" "nl-NL"
you have to setup the [Code] section with valid culture pairs.
WPF OnStartup() pseudo code not tested for valid 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