Цитата R.i.m.s.k.y.:
Можно ли как-то обойти окно выбора языка при старте установщика, задав "насильно" устанавливаемый язык? »
|
Цитата R.i.m.s.k.y.:
Можно как-то "обощить" инсталлер на множество нерусских языков? если система русская - инсталлер выбирал русский язык (что собственно в секции Setup и указано), но если ОС любая кроме русской (китайская, корейская, бразильская etc) - то принудительно выбирался английский язык? естественно без окна выбора языка »
|
Вариант первый:
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[_Code]
type
LCID = LongInt;
function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';
procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel1 do begin
if GetSystemDefaultLCID = 1049 then WizardForm.WelcomeLabel1.Caption:= 'По умолчанию' else WizardForm.WelcomeLabel1.Caption:= 'On Default';
end;
end;
Вариант второй:
Код:

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: {tmp}; Flags: dontcopy;
Source: "compiler:Languages\English.isl"; DestDir: {tmp}; Flags: dontcopy
[_Code]
type
LCID = LongInt;
var
LangFile: String;
function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\Russian.isl')) then ExtractTemporaryFile('Russian.isl');
if not FileExists(ExpandConstant('{tmp}\English.isl')) then ExtractTemporaryFile('English.isl');
Result:=True;
end;
procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel1 do begin
if GetSystemDefaultLCID = 1049 then begin
LangFile:= ExpandConstant('{tmp}\Russian.isl');
WizardForm.WelcomeLabel1.Caption:= GetIniString('Messages', 'WelcomeLabel1', '', LangFile)
end else begin
LangFile:= ExpandConstant('{tmp}\English.isl');
WizardForm.WelcomeLabel1.Caption:= GetIniString('Messages', 'WelcomeLabel1', '', LangFile);
end;
end;
end;
P.S. Во втором варианте нужно создать INI-Файл, так как лейблы с ISL-Файла отображаются коряво (это так, для примера).