Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для OldGamer

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Dodakaedr:
Можете сделать скрипт без модулей, без файлов и прочих функций не относящихся к кастомному окну выбора языка? Сложновато ванговать)
Но попытаюсь: »
Попытка №2:
Вот скрипт с применённым стилем Steam и выбором языков, постарался убрать всё лишнее: картинки, различные эффекты и т.п.
"чистый" скрипт

#ifdef UNICODE
#define S "W"
#else
#define S "A"
#endif

[Setup]
SourceDir=.
OutputDir=Setup
AppName=Bugs Bunny & Taz: Time Busters
AppVerName=Bugs Bunny & Taz: Time Busters
AppVersion=Bugs Bunny & Taz: Time Busters
AppPublisher=EmuGames
AppCopyright=by Ma2012ks ©
AppPublisherURL=www.emugames.do.am
AppSupportURL=www.emugames.do.am
AppUpdatesURL=www.emugames.do.am
DefaultDirName={pf}\Bugs Bunny™ & Taz™ - Time Busters
DefaultGroupName=Bugs Bunny & Taz Time Busters
AllowNoIcons=yes
OutputBaseFilename=setup
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=none
DiskSpanning=yes
DiskSliceSize=2100000000
SlicesPerDisk=1
ShowLanguageDialog=no

[Languages]
Name: eng; MessagesFile: compiler:Languages\English.isl
Name: french; MessagesFile: compiler:Languages\French.isl
Name: german; MessagesFile: compiler:Languages\German.isl
Name: spanish; MessagesFile: compiler:Languages\Spanish.isl
Name: italian; MessagesFile: compiler:Languages\Italian.isl
Name: dutch; MessagesFile: compiler:Languages\Dutch.isl
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Messages]

SelectLanguageTitle=Bugs Bunny & Taz: Time Busters
SelectLanguageLabel=Please select installation language. Выберите язык установки.

[LangOptions]
eng.LanguageName=English
french.LanguageName=French
german.LanguageName=German
spanish.LanguageName=Spanish
italian.LanguageName=Italian
dutch.LanguageName=Dutch
rus.LanguageName=Russian

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

[Files]
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: steam.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

Source: "D:\Max\NightLection Team\CurrentProject\Bugs Bunny & Taz Time Busters\Pakovano\FARGUS\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Icons]
Name: "{group}\Bugs Bunny & Taz: - Time Busters"; Filename: "{app}\Bugs Bunny & Taz - Time Busters.exe"; WorkingDir: "{app}";
Name: "{userdesktop}\Bugs Bunny & Taz: - Time Busters"; Filename: "{app}\Bugs Bunny & Taz - Time Busters.exe"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\Bugs Bunny & Taz - Time Busters - Options"; Filename: "{app}\Bugs Bunny & Taz - Time Busters-Options.exe"; WorkingDir: "{app}";
Name: "{userdesktop}\Bugs Bunny & Taz - Time Busters - Options"; Filename: "{app}\Bugs Bunny & Taz - Time Busters-Options.exe"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\{cm:UninstallProgram,Bugs Bunny & Taz: Time Busters}"; Filename: "{uninstallexe}"

[Run]
Description: "{cm:LaunchProgram, Bugs Bunny & Taz: - Time Busters}"; Filename: "{app}\Bugs Bunny & Taz - Time Busters.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent unchecked
Description: "{cm:LaunchProgram, Bugs Bunny & Taz - Time Busters - Options}"; Filename: "{app}\Bugs Bunny & Taz - Time Busters-Options.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent unchecked

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[code]
#include "ExecAndWait.iss"

procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';

type
LCID = LongInt;

function GetSystemDefaultLCID() : LCID;
external 'GetSystemDefaultLCID@kernel32.dll stdcall';

var
LSelectLanguageForm: TSetupForm;
LBevel: TBevel;
LOkButton, LCancelButton: TButton;
LangCombo: TNewComboBox;
LSelectLabel: TLabel;
m,n,f,g,s,i,d: integer;
Locale: string;
rus, eng, french, german, spanish, italian, dutch: boolean;

function CheckParam(s: string): boolean;
var
i: integer;
begin
for i := 0 to ParamCount do
begin
Result := ParamStr(i) = s;
if Result then Break;
end;
end;

procedure LangChange(Sender : TObject);
begin
if rus then
begin
m:=0;
n:=1;
end
else
begin
m:=1;
n:=0;
f:=0;
g:=0;
end;
case LangCombo.ItemIndex of
m: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'rus';
end;
n: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'eng';
end;
f: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'french';
end;
g: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'german';
end;
s: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'spanish';
end;
i: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'italian';
end;
d: begin
with LSelectLanguageForm do
begin
LSelectLabel.Caption:= 'Please select installation language. Выберите язык установки.';
LSelectLanguageForm.Caption:= 'Bugs Bunny & Taz: Time Busters';
LCancelButton.Caption := 'Отмена';
LOkButton.Caption:= 'ОК';
end;
Locale:= 'dutch';
end;
end;
end;

procedure OkClick(Sender: TObject);
begin
ExecAndWait(ExpandConstant('{srcexe}'), '/LANG=' + Locale, SW_SHOW, false, 0);
LSelectLanguageForm.Close;
end;

procedure CancelClick(Sender: TObject);
begin
LSelectLanguageForm.Close;
end;


procedure Lang;
begin
LSelectLanguageForm := CreateCustomForm;
with LSelectLanguageForm do
begin
ClientWidth:= ScaleX(325);
ClientHeight:= ScaleY(125);
BorderIcons:= [biSystemMenu];
BorderStyle:= bsDialog;
Position:= poScreenCenter;
Caption:= SetupMessage(msgSelectLanguageTitle);
end;

LBevel := TBevel.Create(LSelectLanguageForm);
with LBevel do
begin
Parent:= LSelectLanguageForm;

SetBounds(ScaleX(0), ScaleY(82), LSelectLanguageForm.ClientWidth, ScaleY(2));
Shape:= bsTopLine;
end;

LSelectLabel:= TLabel.Create(LSelectLanguageForm);
with LSelectLabel do
begin
SetBounds(ScaleX(79), ScaleY(10), ScaleX(230), ScaleY(42));
Transparent:= True;
AutoSize:= False;
WordWrap:= True;
Parent:= LSelectLanguageForm;
Caption:= SetupMessage(msgSelectLanguageLabel);
end;

LangCombo:= TNewComboBox.Create(LSelectLanguageForm)
with LangCombo do
begin
SetBounds(ScaleX(79), ScaleY(45), ScaleX(230), ScaleY(21));
Parent:= LSelectLanguageForm;
Style:= csDropDownList;
OnChange:= @LangChange;
if rus then
begin
Items.add('Русский / Russian')
Items.add('Английский / English')
Items.add('Французский / French')
Items.add('Немецкий / German')
Items.add('Испанский / Spanish')
Items.add('Итальянский / Italian')
Items.add('Голландский / Dutch')

Locale:= 'rus';
Locale:= 'eng';
Locale:= 'french';
Locale:= 'german';
Locale:= 'spanish';
Locale:= 'italian';
Locale:= 'dutch';
end;
ItemIndex := 0
ItemIndex := 1
ItemIndex := 2
ItemIndex := 3
ItemIndex := 4
ItemIndex := 5
ItemIndex := 6
end;

LOkButton:= TButton.Create(LSelectLanguageForm);
with LOkButton do
begin
Parent:= LSelectLanguageForm;
SetBounds(ScaleX(152), ScaleY(92), ScaleX(75), ScaleY(23));
OnClick:= @OkClick;
Caption:= SetupMessage(msgButtonOK);
end;

LCancelButton:= TButton.Create(LSelectLanguageForm);
with LCancelButton do
begin
Parent:= LSelectLanguageForm;
SetBounds(ScaleX(235), ScaleY(92), ScaleX(75), ScaleY(23));
OnClick:= @CancelClick;
Caption:= Setupmessage(msgButtonCancel);
end;
LSelectLanguageForm.ShowModal;
LSelectLanguageForm.Free;
end;

function InitializeSetup:boolean;
begin
ExtractTemporaryFile('steam.cjstyles');
LoadSkin(ExpandConstant('{tmp}')+'\steam.cjstyles', '');
Result:=True;
begin
if GetSystemDefaultLCID = 1049 then
rus:= True;
if CheckParam('/LANG=rus') or CheckParam('/LANG=eng') or CheckParam('/LANG=french') or CheckParam('/LANG=german') or CheckParam('/LANG=spanish') or CheckParam('/LANG=italian') or CheckParam('/LANG=dutch') then
eng:= True;
if not eng then
begin
Lang;
Result:= False;
end
else
Result:= True;
end;
end;



const
dURL=2;

var
URLLabel,URLLabelShadow:TLabel;

function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

procedure URLLabelClick(Sender: TObject);
var
ErrorCode:integer;
begin
ShellExec('open','www.emugames.do.am','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;

procedure URLLabelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
URLLabel.Top:=URLLabel.Top+dURL;
URLLabel.Left:=URLLabel.Left+dURL;
URLLabel.Font.Style:=URLLabel.Font.Style+[fsUnderline];
URLLabel.Font.Color:=$50B5C4;
URLLabelShadow.Visible:=False;
end;

procedure URLLabelMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
URLLabel.Top:=URLLabel.Top-dURL;
URLLabel.Left:=URLLabel.Left-dURL;
URLLabel.Font.Style:=URLLabel.Font.Style-[fsUnderline];
URLLabel.Font.Color:=$708A7A;
URLLabelShadow.Visible:=True;
end;

procedure RunListClickCheck(Sender: TObject);
var
i:integer;
begin
if WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex] then begin
for i:=0 to WizardForm.RunList.Items.Count-1 do
WizardForm.RunList.Checked[i]:=False;
WizardForm.RunList.Checked[WizardForm.RunList.ItemIndex]:=True;
end;
end;

procedure InitializeWizard;
begin
WizardForm.RunList.OnClickCheck:=@RunListClickCheck;
URLLabelShadow:=TLabel.Create(WizardForm);
with URLLabelShadow do begin
Top:=ScaleY(331);
Left:=ScaleX(25);
Caption:='www.emugames.do.am';
AutoSize:=True;
Parent:=WizardForm;
Transparent:=True;
Font.Color:=$041207;
Font.Size:=9;
Font.Style:=Font.Style+[fsBold];
end;
URLLabel:=TLabel.Create(WizardForm);
with URLLabel do begin
Top:=ScaleY(331)-dURL;
Left:=ScaleX(25)-dURL;
Caption:='www.emugames.do.am';
AutoSize:=True;
Parent:=WizardForm;
Cursor:=crHand;
Transparent:=True;
Font.Color:=$708A7A;
Font.Size:=9;
Font.Style:=Font.Style+[fsBold];
BringToFront;
OnClick:=@URLLabelClick;
OnMouseDown:=@URLLabelMouseDown;
OnMouseUp:=@URLLabelMouseUp;
end;
WizardForm.BeveledLabel.Enabled:=True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then
WizardForm.RunList.Checked[0]:=True;
end;

procedure DeinitializeSetup;
begin
ShowWindow(WizardForm.Handle,0);
UnloadSkin();
end;


Цитата Dodakaedr:
Выставить в секции [LangOptions] или в [Languages], не помню точно, в конец списка русский язык »
Не помогло.
Цитата Dodakaedr:
Для этого нужно указать выбранный индекс языка в SelectLanguageForm.LangCombo.ItemIndex (function InitializeLanguageDialog(): Boolean). »
Где и как правильно прописать эти индексы, можно подробнее?

Последний раз редактировалось OldGamer, 11-01-2025 в 15:25.


Отправлено: 15:12, 11-01-2025 | #1119