2017-05-08 121 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