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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 7]

Аватара для El Sanchez

Ветеран


Contributor


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


Конфигурация

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

Пользователь


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

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


Dodakaedr, я хз из-за чего но теперь ошибки нет но и скин не появляется а просто серый экран

Отправлено: 20:19, 14-05-2014 | #641



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Разобрался из-за чего такое было. Стандартные картинки работают которые 580-390 а вставляю свои картинки 700-400 не работает картинка кроме скина png.

Dodakaedr, Как изменить под свои скины и картинки? Разрешение в скрипте поменял так - же и картинки но это не помогает. Подскажи пожалуйста

Отправлено: 20:46, 14-05-2014 | #642


Пользователь


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

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


Всем привет ребята.
Возникла такая проблема.
В установщике используется страница Components и Tasks. Но Components находится в нестандартном положении (т.е. по нажатию кнопки внизу) Но из-за этого страница компонентов переносится вниз. Возможно ли как-то. Иметь в установщике 2 страницы компонентов? Одна внизу при нажатии кнопки, вторая на странице Components.
Прилагаю скрипт и скриншоты.
Скрипт
Скриншоты


Прошу помочь мне решить эту проблему. Заранее спасибо!

Отправлено: 20:47, 14-05-2014 | #643


Аватара для Dodakaedr

Ветеран


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

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


Цитата Антон_Мураткин@vk:
Разобрался из-за чего такое было. Стандартные картинки работают которые 580-390 а вставляю свои картинки 700-400 не работает картинка кроме скина png.
Dodakaedr, Как изменить под свои скины и картинки? Разрешение в скрипте поменял так - же и картинки но это не помогает. Подскажи пожалуйста »
Код: Выделить весь код
ImgLoad(UninstallProgressForm.Handle,ExpandConstant('{tmp}\Skin.jpg'),0,0,548,368,true,true);
548,368 это разрешение картинки в деинсталяторе
Код: Выделить весь код
I1:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I1.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
  i2:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I2.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
  i3:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I3.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
  i4:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I4.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
  i5:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I5.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
  i6:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\I6.jpg'),ScaleX(25), ScaleY(20),ScaleX(530), ScaleY(313),false,True);
ScaleX(530), ScaleY(313) это разрешение картинок в инсталяторе

-------
Inno Setup 5 Ultra Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:15, 14-05-2014 | #644


Аватара для Dodakaedr

Ветеран


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

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


Цитата Kashtan007:
Одна внизу при нажатии кнопки, вторая на странице Components. »
Как-то так:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"


[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponent(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponent(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponent(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponent(5)

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Дополнительное по; Types: full;
Name: text\DirectX; Description: DirectX 9;
Name: text\Visual; Description: Microsoft Visual C++;

[CustomMessages]
RU.CompSubtitlesLng=Язык субтитров
RU.CompVoiceLng=Язык озвучки
RU.CompRussian=Русский
RU.CompEnglish=Английский


[ code]
var
Flag: Boolean;
SettingButton: TButton;
ComponentsPage: TWizardPage;
SelectComponentsLabel: TNewStaticText;
ComponentsList: TNewCheckListBox;

procedure HideShowOnClick(Sender: TObject);
begin
if Flag = False then begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(360);
Flag:= True;
SettingButton.Caption:= '[]';
end else begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(450);
Flag:= False;
SettingButton.Caption:= '[]';
end;
end;

procedure RedesignWizardForm;
begin
  SelectComponentsLabel := TNewStaticText.Create(WizardForm);
  with SelectComponentsLabel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(42));
    AutoSize := False;
    WordWrap := True;
    Caption := SetupMessage(msgSelectComponentsLabel2);
  end;

  ComponentsList := TNewCheckListBox.Create(WizardForm);
  with ComponentsList do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
  end;
end;

function IsComponent(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList.ItemCount - 1) then
      Result := ComponentsList.Checked[CompIndex];
  end;
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
SettingButton:= TButton.Create(WizardForm);
SettingButton.SetBounds(ScaleX(10),ScaleY(325), ScaleX(30), ScaleY(30))
SettingButton.Caption:= '[]';
SettingButton.OnClick:= @HideShowOnClick;
SettingButton.Parent:= WizardForm;
Flag:=True;
with WizardForm do begin
ComponentsList.Parent:= WizardForm;
WizardForm.ComponentsList.Checked[1]:=True
WizardForm.ComponentsList.Checked[2]:=True
WizardForm.ComponentsList.Top := ScaleY(370);
WizardForm.ComponentsList.Height := ScaleY(55);
WizardForm.ComponentsList.Left := ScaleY(40);
WizardForm.ComponentsList.Color := clMenu;
end;
end;

-------
Inno Setup 5 Ultra Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:32, 14-05-2014 | #645


Пользователь


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

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


Dodakaedr, Это я знаю. Я всё это поменял, но при удаление игры фон больше чем картинка хотя и стоит 700x400 вот скрин http://i64.fastpic.ru/big/2014/0514/...9b0491f1ad.jpg

Dodakaedr, Может ты знаешь где разрешения удаления поменять т.к картинка в конце удаления 700-400 а фон под картинкой больше почему то. Где это ещё можно поменять?

Отправлено: 21:37, 14-05-2014 | #646


Пользователь


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

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


Еще небольшой вопросик. Хочу сделать на каждой странице установщика разную шапку. Ибо если использовать функцию BitImage то будет одна и та же на всех страницах. Какой код нужно прописывать чтобы для каждой страницы разную шапку.
Если не ошибаюсь то есть код на отключение изображения на определенных страницах. Вот именно это мне нужно.

P.S. Dodakaedr благодарю за помощь в с компонент листами.

Отправлено: 21:46, 14-05-2014 | #647


Аватара для Dodakaedr

Ветеран


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

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


Цитата Антон_Мураткин@vk:
Dodakaedr, Может ты знаешь где разрешения удаления поменять т.к картинка в конце удаления 700-400 а фон под картинкой больше почему то. Где это ещё можно поменять? »
В модуле Uninstall.iss, но как видите она не больше ваших картинок
Код: Выделить весь код
procedure InitializeUninstallProgressForm;
begin
  UninstallProgressForm.ClientWidth:=550; //ширина
  UninstallProgressForm.ClientHeight:=440; // высота
  UninstallProgressForm.OuterNotebook.Hide;
  UninstallProgressForm.InnerNotebook.Hide;
  UninstallProgressForm.Bevel.Hide;
  UninstallProgressForm.Center;
Цитата Kashtan007:
Если не ошибаюсь то есть код на отключение изображения на определенных страницах. Вот именно это мне нужно. »
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"


[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponent(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponent(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponent(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponent(5)

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Дополнительное по; Types: full;
Name: text\DirectX; Description: DirectX 9;
Name: text\Visual; Description: Microsoft Visual C++;

[CustomMessages]
RU.CompSubtitlesLng=Язык субтитров
RU.CompVoiceLng=Язык озвучки
RU.CompRussian=Русский
RU.CompEnglish=Английский


[ code]
var
Flag: Boolean;
SettingButton: TButton;
ComponentsPage: TWizardPage;
SelectComponentsLabel: TNewStaticText;
ComponentsList: TNewCheckListBox;

procedure HideShowOnClick(Sender: TObject);
begin
if Flag = False then begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(360);
Flag:= True;
SettingButton.Caption:= '[]';
end else begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(450);
Flag:= False;
SettingButton.Caption:= '[]';
end;
end;

procedure RedesignWizardForm;
begin
  SelectComponentsLabel := TNewStaticText.Create(WizardForm);
  with SelectComponentsLabel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(42));
    AutoSize := False;
    WordWrap := True;
    Caption := SetupMessage(msgSelectComponentsLabel2);
  end;

  ComponentsList := TNewCheckListBox.Create(WizardForm);
  with ComponentsList do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
  end;
end;

function IsComponent(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList.ItemCount - 1) then
      Result := ComponentsList.Checked[CompIndex];
  end;
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
SettingButton:= TButton.Create(WizardForm);
SettingButton.SetBounds(ScaleX(10),ScaleY(325), ScaleX(30), ScaleY(30))
SettingButton.Caption:= '[]';
SettingButton.OnClick:= @HideShowOnClick;
SettingButton.Parent:= WizardForm;
Flag:=True;
with WizardForm do begin
ComponentsList.Parent:= WizardForm;
WizardForm.ComponentsList.Checked[1]:=True
WizardForm.ComponentsList.Checked[2]:=True
WizardForm.ComponentsList.Top := ScaleY(370);
WizardForm.ComponentsList.Height := ScaleY(55);
WizardForm.ComponentsList.Left := ScaleY(40);
WizardForm.ComponentsList.Color := clMenu;
end;
end;

//отключение/включение изображения
procedure CurPageChanged(CurPageID: Integer);
begin
 case CurPageID of
 wpSelectDir:
begin
WizardForm.WizardSmallBitmapImage.Hide;
end;
wpSelectComponents:
begin
WizardForm.WizardSmallBitmapImage.Show;
end;
wpReady:
WizardForm.WizardSmallBitmapImage.Hide;
end;
end;


Значения PageID для определенных страниц мастера:
wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 14-05-2014 в 22:06.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:54, 14-05-2014 | #648


Пользователь


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

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


Dodakaedr, спасибо за помощь.

Есть еще вопрос по поводу компонент листов.
Вообщем дело такое... Чтобы добавлять компоненты в нижний компонент лист можно пользоваться секцией Components. А чтобы добавлять на основной компонент лист который находится на странице Components нужно уже компоненты писать не в секции Components а в Code. Возможно ли заменить это местами? Т.е. чтобы в нижний компонент лист можно было добавлять компоненты через код (ибо там будет всего 3-4 файла, чтобы не заморачиватся). А на компонент лист который находится на основной странице компонентов, компоненты можно было бы добавить через секцию Components.
Нужно это потому что в нижнем компонент листе нужно всего лишь 3-4 файла, а на основном около 100. А через секцию Components добавлять компоненты легче чем через секцию Code.
Заранее спасибо за ответ!

Отправлено: 22:12, 14-05-2014 | #649


Аватара для Dodakaedr

Ветеран


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

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


Цитата Kashtan007:
Т.е. чтобы в нижний компонент лист можно было добавлять компоненты через код (ибо там будет всего 3-4 файла, чтобы не заморачиватся). А на компонент лист который находится на основной странице компонентов, компоненты можно было бы добавить через секцию Components. »
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"


[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponent(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponent(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponent(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponent(5)

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Дополнительное по; Types: full;
Name: text\DirectX; Description: DirectX 9;
Name: text\Visual; Description: Microsoft Visual C++;

[CustomMessages]
RU.CompSubtitlesLng=Язык субтитров
RU.CompVoiceLng=Язык озвучки
RU.CompRussian=Русский
RU.CompEnglish=Английский


[ code]
var
Flag: Boolean;
SettingButton: TButton;
ComponentsPage: TWizardPage;
ComponentsList: TNewCheckListBox;

procedure HideShowOnClick(Sender: TObject);
begin
if Flag = False then begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(360);
Flag:= True;
SettingButton.Caption:= '[]';
end else begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(500);
Flag:= False;
SettingButton.Caption:= '[]';
end;
end;

function IsComponent(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList.ItemCount - 1) then
      Result := ComponentsList.Checked[CompIndex];
  end;
end;

procedure InitializeWizard();
begin
SettingButton:= TButton.Create(WizardForm);
SettingButton.SetBounds(ScaleX(10),ScaleY(325), ScaleX(30), ScaleY(30))
SettingButton.Caption:= '[]';
SettingButton.OnClick:= @HideShowOnClick;
SettingButton.Parent:= WizardForm;
Flag:=True;

ComponentsList := TNewCheckListBox.Create(WizardForm);
  with ComponentsList do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(40), ScaleY(370), ScaleX(417), ScaleY(100));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
 case CurPageID of
 wpSelectDir:
begin
WizardForm.WizardSmallBitmapImage.Hide;
end;
wpSelectComponents:
begin
WizardForm.WizardSmallBitmapImage.Show;
end;
wpReady:
WizardForm.WizardSmallBitmapImage.Hide;
end;
end;

-------
Inno Setup 5 Ultra Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:26, 14-05-2014 | #650



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход