Проблема Неприятность с кнопками сообщения при выходе из инсталла

Alloc

Новичок
Приветствую всех!
Вообщем такая вот неприятность, хотел сделать свой инсталлятор двуязычным, но обнаружил одну неприятную вещь.. Речь идет о сообщении которое появляется после нажатия на кнопку Отмена в инсталляторе.

Собственно вот скриншот:



Как видите кнопки Да и Нет остались на русском.. Это не смотря на то, что был выбран английский язык.. все стало на англ. кроме этих кнопок. как это исправить и почему так происходит?
 

SBalykov

Старожил
Приветствую всех!
Вообщем такая вот неприятность, хотел сделать свой инсталлятор двуязычным, но обнаружил одну неприятную вещь.. Речь идет о сообщении которое появляется после нажатия на кнопку Отмена в инсталляторе.

Собственно вот скриншот:



Как видите кнопки Да и Нет остались на русском.. Это не смотря на то, что был выбран английский язык.. все стало на англ. кроме этих кнопок. как это исправить и почему так происходит?
Код:
[Languages]
Name: eng; MessagesFile: compiler:Languages\English.isl
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Messages]
eng.ButtonNo =No
eng.ButtonYes =Yes
rus.ButtonNo =Нет
rus.ButtonYes =Да
 

Alloc

Новичок
Alloc, Версию компилятора укажите и скрипт выложите.
Версия 5.5.1.ee2 (u) а сам скрипт думаю выкладывать не стоит так как я обратил внимание, что так происходит даже с новым, только что созданным скриптом через Мастера... видимо дело в самом компиляторе..
 

Avengerz13

Участник
Версия 5.5.1.ee2 (u) а сам скрипт думаю выкладывать не стоит так как я обратил внимание, что так происходит даже с новым, только что созданным скриптом через Мастера... видимо дело в самом компиляторе..
Действительно есть такое, но тут проблема не в компиляторе. Inno Setup просто использует уже системный язык в messagebox-e. В зависимости от языка системы там будет отображаться тот же язык. Можно попробовать локализовать но думаю проще создать свою форму с кнопками.

Пример MsgBox где Inno Setup использует MessageBox Windows API
Код:
MsgBox('Are you sure?', mbConfirmation, MB_YESNO)
Почитать подробно можно тут: https://msdn.microsoft.com/en-ca/library/windows/desktop/ms645505(v=vs.85).aspx
 
Последнее редактирование:

vint56

Ветеран
Проверенный
Alloc,
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
PrivilegesRequired=none

[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[CustomMessages]
english.ButtonNo =No
english.ButtonYes =Yes
russian.ButtonNo =Нет
russian.ButtonYes =Да

[Files]
Source: compiler:WizModernSmallImage.bmp; Flags: dontcopy

[code]
var
  NoButton, YesButton: TButton;
  MyExit: TSetupForm;

procedure MyExitMessage();
var
  MyIcon: String;
begin
  MyExit := CreateCustomForm();
  with MyExit do
    begin
      Position := poScreenCenter;
      ClientWidth := WizardForm.Width;
      ClientHeight := WizardForm.Height div 2;
      Caption := ExpandConstant(SetupMessage(msgExitSetupTitle));
  end;

  MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'WizModernSmallImage.bmp');
  if not FileExists(MyIcon) then
  ExtractTemporaryFile(ExtractFileName(MyIcon));

   with TBitmapImage.Create(MyExit) do
      begin
      Stretch := True;
      Left := ScaleX(10);
      Top := ScaleY(20);
      Width := 55;
      Height := 55;
      Bitmap.LoadFromFile(MyIcon);
      Parent := MyExit;
  end;

  with TNewStaticText.Create(MyExit) do
      begin
      Left := ScaleX(110);
      Top := ScaleY(20);
      Width := MyExit.Width - ScaleX(115);
      Height := MyExit.Height div 2;
      AutoSize := False;
      WordWrap := True;
      Caption := ExpandConstant(SetupMessage(msgExitSetupMessage));
      Parent := MyExit;
      Font.Color := clBlack;
  end;

  NoButton := TButton.Create(MyExit);
  with NoButton do
    begin
      Parent := MyExit;
      Left := ScaleX(410);
      Caption := ExpandConstant('{cm:ButtonNo}');
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult:= mrNo;
  end;

  YesButton := TButton.Create(MyExit);
    with YesButton do
    begin
      Caption := ExpandConstant('{cm:ButtonYes}');
      Parent := MyExit;
      Left := ScaleX(320);
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult := mrYes;
    end;
end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  MyExitMessage();
  if MyExit.ShowModal() = mrNo then
    Cancel := False;
end;
И для Isdone

Код:
[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[CustomMessages]
english.ButtonNo =No
english.ButtonYes =Yes
russian.ButtonNo =Нет
russian.ButtonYes =Да

[code]
var
  NoButton, YesButton: TButton;
  MyExit,IsDoneExit: TSetupForm;

procedure MyExitMessage();
var
  MyIcon: String;
begin
  MyExit := CreateCustomForm();
  with MyExit do
    begin
      Position := poScreenCenter;
      ClientWidth := WizardForm.Width;
      ClientHeight := WizardForm.Height div 2;
      Caption := ExpandConstant(SetupMessage(msgExitSetupTitle));
  end;

  MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'WizModernSmallImage.bmp');
  if not FileExists(MyIcon) then
  ExtractTemporaryFile(ExtractFileName(MyIcon));

   with TBitmapImage.Create(MyExit) do
      begin
      Stretch := True;
      Left := ScaleX(10);
      Top := ScaleY(20);
      Width := 55;
      Height := 55;
      Bitmap.LoadFromFile(MyIcon);
      Parent := MyExit;
  end;

  with TNewStaticText.Create(MyExit) do
      begin
      Left := ScaleX(110);
      Top := ScaleY(20);
      Width := MyExit.Width - ScaleX(115);
      Height := MyExit.Height div 2;
      AutoSize := False;
      WordWrap := True;
      Caption := ExpandConstant(SetupMessage(msgExitSetupMessage));
      Parent := MyExit;
      Font.Color := clBlack;
  end;

  NoButton := TButton.Create(MyExit);
  with NoButton do
    begin
      Parent := MyExit;
      Left := ScaleX(410);
      Caption := ExpandConstant('{cm:ButtonNo}');
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult:= mrNo;
  end;

  YesButton := TButton.Create(MyExit);
    with YesButton do
    begin
      Caption := ExpandConstant('{cm:ButtonYes}');
      Parent := MyExit;
      Left := ScaleX(320);
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult := mrYes;
    end;
end;

procedure IsDoneExitMessage();
var
  MyIcon: String;
begin
  IsDoneExit := CreateCustomForm();
  with IsDoneExit do
    begin
      Position := poScreenCenter;
      ClientWidth := WizardForm.Width;
      ClientHeight := WizardForm.Height div 2;
      Caption := ExpandConstant(SetupMessage(msgExitSetupTitle));
  end;

  MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'WizModernSmallImage.bmp');
  if not FileExists(MyIcon) then
  ExtractTemporaryFile(ExtractFileName(MyIcon));

   with TBitmapImage.Create(IsDoneExit) do
      begin
      Stretch := True;
      Left := ScaleX(10);
      Top := ScaleY(20);
      Width := 55;
      Height := 55;
      Bitmap.LoadFromFile(MyIcon);
      Parent := IsDoneExit;
  end;

  with TNewStaticText.Create(IsDoneExit) do
      begin
      Left := ScaleX(110);
      Top := ScaleY(20);
      Width := IsDoneExit.Width - ScaleX(115);
      Height := IsDoneExit.Height div 2;
      AutoSize := False;
      WordWrap := True;
      Caption := ExpandConstant(SetupMessage(msgExitSetupMessage));
      Parent := IsDoneExit;
      Font.Color := clBlack;
  end;

  NoButton := TButton.Create(IsDoneExit);
  with NoButton do
    begin
      Parent := IsDoneExit;
      Left := ScaleX(410);
      Caption := ExpandConstant('{cm:ButtonNo}');
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult:= mrNo;
  end;

  YesButton := TButton.Create(IsDoneExit);
    with YesButton do
    begin
      Caption := ExpandConstant('{cm:ButtonYes}');
      Parent := IsDoneExit;
      Left := ScaleX(320);
      Top := ScaleY(155);
      Width := ScaleX(80);
      Height := ScaleY(25);
      ModalResult := mrYes;
    end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  MyExitMessage();
  if MyExit.ShowModal() = mrNo then
    Cancel := False;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
  SuspendProc;
  IsDoneExitMessage();
  if IsDoneExit.ShowModal() = mrYes then ISDoneCancel:=1;
  ResumeProc;
end;
 
Последнее редактирование:

Alloc

Новичок
Спасибо ребята за ответы, особенно vint56 за выложенный пример.. Хотелось бы уточнить еще кое что.. я использую ISDone, скрипт выше не будет конфликтовать с этим модулем?
 
Сверху