Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: BondDaniil00
Дата сообщения: 22.04.2009 12:22
noiseless
Работает Большое спасибо!!!

Добавлено:
Вот такой вопрос есть:

перечисляю я

ExtractTemporaryFile('01.bat');
ExtractTemporaryFile('ADMIN.SQL');
ExtractTemporaryFile('ALTER_SYSAUX_UNDO.bat');
ExtractTemporaryFile('ALTER_SYSAUX_UNDO.sql');
ExtractTemporaryFile('AuditScript.bat');
ExtractTemporaryFile('Cabinet.sql');
ExtractTemporaryFile('Company.sql');
ExtractTemporaryFile('Company_type.sql');
ExtractTemporaryFile('Comp_comptype.sql');

и таких сторок у меня 2000 можно ли как нибудь оптимизировать это??? например просто указывать папку в которой лежат все эти скрипты
Автор: tahirg
Дата сообщения: 22.04.2009 14:11
Гуру помогите плиз
хелпы прочёл, софт поскачивал..вопросы остались

Цитата:

1 -как вставить доп.кнопку на странице выбора компонентов для установки?
кнопка при нажатии должна отображать полный список в формате txt описания устанавливаемых компонентов и называться "описание компонентов" или типа того и она должна располагаться в левом нижнем углу
2 -как сделать второе окно выбора компонентов?
т.е по смыслу точно такое же как первое,но в первом файлы для работы с этим,а второе окно для выбора с работы с тем
3- как сделать в выборе компонентов раскрывающийся список со знаком +
4 - как сделать запрет на установку файла1 , если выбран файл2, но разрешить установку вместе с файлом3?
Автор: spider91
Дата сообщения: 22.04.2009 15:43
помогите плиз

как из [code] запустить cmd.exe и указать папку в которой она должна работать (как в workingDir: {app}; в секции [run]) ?

Автор: DeKaNszn
Дата сообщения: 22.04.2009 15:44
BondDaniil00

запакуй в архив
потом извлекаешь из инсталлятора архив и распаковываешь
Автор: Igrikxxx
Дата сообщения: 22.04.2009 15:45
Ну кто нибудт поможет или нет помогите пожалуйста сделать чтобы отображался размер установливаемого файла, и показывалось сколько места осталось на жеском диске как это отобразить в скрипте?
Автор: BondDaniil00
Дата сообщения: 22.04.2009 15:54
DeKaNszn
Если не сложно можно пример плиз
Автор: doombuster
Дата сообщения: 22.04.2009 16:45

Цитата:
Огромная просьба у кого остались скины аля ИнсталлШиелд, которые делал Sampron. Все ссылки на Датакоде сдохли. Выложите пожалуйста.

Они отличаются от скинов, что лежат в руководстве от Kindly. Вроде кнопули заскинены, транспаренты, кажись, имеются) и т.д.

Выложте, если не трудно)

Выручайте, пожалуйста
Автор: DeKaNszn
Дата сообщения: 22.04.2009 17:31
BondDaniil00

файл
код для него (добавишь в свою процедуру):

Код: [no]var
ResultCode: Integer;
ExtractTemporaryFile('inno.exe');
Exec(ExpandConstant('{tmp}\inno.exe'), '', ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
DeleteFile(ExpandConstant('{tmp}\inno.exe'));[/no]
Автор: Qarma
Дата сообщения: 23.04.2009 05:27
Подскажите, как с помощью Inno Setup Unpacker извлечь скрипт

Добавлено:
Всё, разобрался.))
Мне бы хотелось извлечь полный скрипт из инсталлятора Fallout 3 от 1С.
Автор: wetcase
Дата сообщения: 23.04.2009 06:21
Qarma, насколько я знаю, секцию "Code" извлечь нельзя.
Автор: mikutu
Дата сообщения: 23.04.2009 06:25
Спасибо разобрался. Только там формат цвета слегка странный gbr вместо обычного rbg.
Victor_Dobrov
Хотел изменить цвет формы вызываемой в CoronaSkin в Procedure ShowHint, но моих знаний в innosetup к сожелению пока на это не хватает, помогите пожалуйста.
Автор: Qarma
Дата сообщения: 23.04.2009 06:47
wetcase

В инсталляторе Fallout 3 от 1С в конце установки как то хитро запаковываются файлы из папки Fallout - Textures.bsa.dir создаётся архив Fallout - Textures.bsa
Хотел бы реализовать такое же...может кто поможет?

Добавлено:
Инсталлятор выполняет следующие операции: сначала распаковывает Fallout - Textures.bsa.dir(папка), где собственно содержатся все текстуры, далее распаковывает странные файлы msf3build.exe и Patcher.exe, а далее уже всё остальное. Когда все файлы распакуются, инсталлятор проводит какие то операции с Fallout - Textures.bsa.dir, msf3build.exe и Patcher.exe. Создаётся архив Fallout - Textures.bsa.$$$ (я так понял что то делается с помощью msf3build.exe). А потом уже он обрабатывается патчером(Patcher.exe) делая их архива Fallout - Textures.bsa.$$$, обычный пак фаллаута - Fallout - Textures.bsa

Но вопрос в том, как это всё реализовать в своём скрипте
Автор: SotM
Дата сообщения: 23.04.2009 07:47
Qarma
И логичный встречный вопрос: а зачем ты хочешь сделать точно также как и в инсталляторе Fallout 3 от 1С?
Автор: Qarma
Дата сообщения: 23.04.2009 07:54
SotM
Отвечаю: Хочу сделать репак Fallout 3 + Аддоны (Operation Anchorage, The Pitt)
FreeArc + precomp хочу использовать, но запара:
BSA архивы плохо пакуются, а вот распакованные данные из этих архивов - хорошо.
Помогите))
Автор: SotM
Дата сообщения: 23.04.2009 08:20
Qarma
Я файлы Fallout 3 не смотрел. А ты пробовал эти BSA файлы распаковать ручками, а затем запаковать тем, чем хочешь?
В чем собственно проблема? Запаковать и/или организовать распаковку в коде?
Автор: Igrikxxx
Дата сообщения: 23.04.2009 10:51
Нашел небольшой код Помогите склеить его: Вот суда нужно его вставить
Суда

[more=Это ]function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end;[/more]

[more=Это][Code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + IntToStr(TotalMB) +
'Мб - Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Недостаточно места на диске!', mbInformation, MB_OK)
Result:= False;
end;
end;
end; [/more]

Добавлено:
doombuster

Вот скины инсталшелд
Автор: SotM
Дата сообщения: 23.04.2009 11:17
Igrikxxx
А чего его склеивать то? Просто тупо скопировать-вставить, даже думать особо не нужно.

[more=Код]#define WizardImage "Wheelman.bmp"

[Setup]
AppName=Вин Дизель Wheelman
AppVerName=Вин Дизель Wheelman 1.0
DefaultDirName={pf}\Вин Дизель Wheelman
ShowLanguageDialog=no
WizardImageFile={#WizardImage}
OutputBaseFilename=Install

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

[Messages]
BeveledLabel=Релиз by IgrikxXx



[Run]
Filename: {src}\setup.exe; WorkingDir: {src}; Parameters: "-x -y -d""{app}"""; StatusMsg: Идет установка игры....; Flags: waituntilterminated
Filename: {src}\Support\DirectX\dxsetup.exe



[no][Code][/no]

const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

var

WelcomeLabel1,WelcomeLabel2,PageNameLabel,PageDescriptionLabel,SelectDirLabel,SelectDirBrowseLabel,
DiskSpaceLabel,StatusLabel,BeveledLabel: TLabel;

Procedure HideAll();
begin
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide
WizardForm.MainPanel.Hide
WizardForm.BeveledLabel.Hide
WizardForm.OuterNotebook.Hide
WizardForm.InnerNotebook.Hide

WelcomeLabel1.Hide
WelcomeLabel2.Hide
SelectDirLabel.Hide
SelectDirBrowseLabel.Hide
WizardForm.DirEdit.Hide
WizardForm.DirBrowseButton.Hide
DiskSpaceLabel.Hide
StatusLabel.Hide
WizardForm.ProgressGauge.Hide

end;

Procedure InitializeSkin();
begin

WizardForm.ClientWidth:=497
WizardForm.ClientHeight:=361
WizardForm.BorderStyle := bsDialog;
WizardForm.Font.Color:=$ffffff
WizardForm.Center

WizardForm.WizardBitmapImage.Left:=0
WizardForm.WizardBitmapImage.Top:=0
WizardForm.WizardBitmapImage.AutoSize:=True
WizardForm.WizardBitmapImage.Enabled:=False
WizardForm.WizardBitmapImage.Parent:=WizardForm

WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(150);
WelcomeLabel1.Top := ScaleY(15);
WelcomeLabel1.Width := ScaleX(320);
WelcomeLabel1.Height := ScaleY(75);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Font.Color := clwhite;
// WelcomeLabel1.Font.Style := [fsBold];
// WelcomeLabel1.Font.Name:='MS Sans Serif';
WelcomeLabel1.Font.Size := 14;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm;

WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(90);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clwhite;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm;

PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(25);
PageNameLabel.Top := ScaleY(10);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clwhite;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
PageNameLabel.Parent := WizardForm;

PageDescriptionLabel := TLabel.Create(WizardForm);
PageDescriptionLabel.Left := ScaleX(40);
PageDescriptionLabel.Top := ScaleY(25);
PageDescriptionLabel.Width := ScaleX(475);
PageDescriptionLabel.Height := ScaleY(30);
PageDescriptionLabel.AutoSize := False;
PageDescriptionLabel.WordWrap := True;
PageDescriptionLabel.Font.Color := clwhite;
PageDescriptionLabel.Transparent := True;
PageDescriptionLabel.Parent := WizardForm;

BeveledLabel:=TLabel.Create(WizardForm)
BeveledLabel.Left:=30
BeveledLabel.Top:=340
BeveledLabel.Font.Color:=clwhite
BeveledLabel.Font.Style := [fsBold]
BeveledLabel.Transparent:=True
BeveledLabel.Parent:=WizardForm

WizardForm.BeveledLabel.Left:=80

// wpSelectDir
SelectDirLabel:=TLabel.Create(WizardForm)
SelectDirLabel.Left:=150
SelectDirLabel.Top:=80
SelectDirLabel.Width:=320
SelectDirLabel.Height:=28
SelectDirLabel.AutoSize:=False
SelectDirLabel.WordWrap:=True
SelectDirLabel.Font.Color := clwhite
SelectDirLabel.Font.Name:='Tahoma'
SelectDirLabel.Font.Size:=8
SelectDirLabel.Font.Style := [fsBold]
SelectDirLabel.Transparent:=True
SelectDirLabel.Parent:=WizardForm

SelectDirBrowseLabel:=TLabel.Create(WizardForm)
SelectDirBrowseLabel.Left:=150
SelectDirBrowseLabel.Top:=120
SelectDirBrowseLabel.Width:=320
SelectDirBrowseLabel.Height:=28
SelectDirBrowseLabel.AutoSize:=False
SelectDirBrowseLabel.WordWrap:=True
SelectDirBrowseLabel.Font.Color := clwhite
SelectDirBrowseLabel.Transparent:=True
SelectDirBrowseLabel.Parent:=WizardForm

WizardForm.DirEdit.Left:=150
WizardForm.DirEdit.Top:=205
WizardForm.DirEdit.Width:=240
WizardForm.DirEdit.Height:=24
WizardForm.DirEdit.Color:=$000000
WizardForm.DirEdit.Font.Color:=$ffffff
WizardForm.DirEdit.Parent:= WizardForm

WizardForm.DirBrowseButton.Left:=400
WizardForm.DirBrowseButton.Top:=202
WizardForm.DirBrowseButton.Width:=73
WizardForm.DirBrowseButton.Height:=27
WizardForm.DirBrowseButton.Parent:= WizardForm

DiskSpaceLabel:=TLabel.Create(WizardForm)
DiskSpaceLabel.Left:=150
DiskSpaceLabel.Top:=250
DiskSpaceLabel.Width:=320
DiskSpaceLabel.Height:=28
DiskSpaceLabel.AutoSize:=False
DiskSpaceLabel.WordWrap:=True
DiskSpaceLabel.Font.Color := clwhite
DiskSpaceLabel.Transparent:=True

DiskSpaceLabel.Parent:=WizardForm

// wpInstalling
StatusLabel:=TLabel.Create(WizardForm)
StatusLabel.Left:=205
StatusLabel.Top:=90
StatusLabel.Font.Color := clWindow
StatusLabel.Transparent:=True
StatusLabel.Caption:=WizardForm.Caption +'...'
//StatusLabel.Caption:=WizardForm.StatusLabel.Caption
StatusLabel.Parent:=WizardForm

WizardForm.ProgressGauge.Left:=50
WizardForm.ProgressGauge.Top:=200
WizardForm.ProgressGauge.Width:=400
WizardForm.ProgressGauge.Height:=20
WizardForm.ProgressGauge.Parent:= WizardForm
end;


Procedure ShowPageComponents(CurPageID: Integer);
begin
BeveledLabel.Caption:=WizardForm.BeveledLabel.Caption
WelcomeLabel1.Caption:=WizardForm.WelcomeLabel1.Caption
WelcomeLabel2.Caption:=WizardForm.WelcomeLabel2.Caption
PageNameLabel.Caption:=WizardForm.PageNameLabel.Caption
PageDescriptionLabel.Caption:=WizardForm.PageDescriptionLabel.Caption
SelectDirLabel.Caption:=WizardForm.SelectDirLabel.Caption
SelectDirBrowseLabel.Caption:=WizardForm.SelectDirBrowseLabel.Caption
DiskSpaceLabel.Caption:=WizardForm.DiskSpaceLabel.Caption
StatusLabel.Caption:=WizardForm.StatusLabel.Caption

Case CurPageID of

wpWelcome:
begin
WelcomeLabel1.Show
WelcomeLabel2.Show

end

wpSelectDir:
begin
SelectDirLabel.Show
SelectDirBrowseLabel.Show
WizardForm.DirEdit.Show
WizardForm.DirBrowseButton.Show
DiskSpaceLabel.Show
end

wpInstalling:
begin
StatusLabel.Show
WizardForm.ProgressGauge.Show

end
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideAll
ShowPageComponents(CurPageID)
end;

Procedure InitializeWizard();
begin
InitializeSkin
end;


procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + IntToStr(TotalMB) +
'Мб - Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end;

[Registry]


[Icons]
Name: {group}\Вин Дизель Wheelman; Filename: {app}\Binaries\Wheelman.exe; WorkingDir: {app}; Parameters: -language=RUS
Name: {group}\Удалить Вин Дизель Wheelman; Filename: {uninstallexe}; WorkingDir: {app}
Name: {userdesktop}\Вин Дизель Wheelman; Filename: {app}\Binaries\Wheelman.exe; WorkingDir: {app}; Parameters: -language=RUS


[UninstallDelete]
Type: filesandordirs; Name: {app}[/more]

И желательно всё таки писать нормально по-русски. Ведь правильней писать "сюда", а не "суда".
Автор: doombuster
Дата сообщения: 23.04.2009 11:19
Igrikxxx

Цитата:

Вот скины инсталшелд

Спасибо, но это не то) Нет скина кнопок
Бум искать дальше
Автор: Qarma
Дата сообщения: 23.04.2009 12:24
SotM


Цитата:
А ты пробовал эти BSA файлы распаковать ручками, а затем запаковать тем, чем хочешь?

Есть спец утилита для распаковки BSA архивов.....я распаковал и запаковал распакованные файлы из BSA архива FreeArc'ом....размер получился гораздо меньше, чем я упаковывал напрямую сам BSA архив

Добавлено:
Короче я забил на это, сделаю так: BSA архивы обрабатываю precomp, потом запихиваю в FreeArc архивы и всё!

Добавлено:
Кто нить подскажет для чего файл rep.exe )))

Добавлено:
И как им пользоваться

Добавлено:
У меня чета не получается обработать precomp, у архивыв был размер 1.04гб, после обработки precomp стал 1.78гб )
Автор: spider91
Дата сообщения: 23.04.2009 14:59
Qarma



Цитата:
У меня чета не получается обработать precomp, у архивыв был размер 1.04гб, после обработки precomp стал 1.78гб )



так ето ведь нормально. теперь жми его


Добавлено:

Цитата:
Кто нить подскажет для чего файл rep.exe )))
И как им пользоваться


ето файл который находит повторы на больших растаяниях, которые не по силам архиваторам.

а пользоватся им я тоже не умею так что будем надеятся что ктото подскажет
Автор: Qarma
Дата сообщения: 23.04.2009 15:10
Говорят rep.exe жмёт вроде хорошо
Автор: spider91
Дата сообщения: 23.04.2009 15:28
в некоторых случаях реп может хорошо дожать архивы. cdman часто им пользуется.


но у меня никак не получается.
Автор: Qarma
Дата сообщения: 23.04.2009 16:29
Сначала качаем FreeArc, потом precompl, потом rep.exe.
Далее проводим операцию с нужным файлом с помощью precompl, для этого прописываем:
Код: precomp -o"имя файла.pcf" -slow "имя файла.bsa"
Автор: SotM
Дата сообщения: 23.04.2009 16:54
Qarma
ссылка битая, залей на другой файлообменник, а то тут на автомате ссылки заменяются на "spam_detected"...
Автор: spider91
Дата сообщения: 23.04.2009 16:57
Qarma


зачем батники если можно через командную строку?
и писать -o не обязательно, можно просто


Код: precomp.exe -slow name.bsa
Автор: Qarma
Дата сообщения: 23.04.2009 17:02
spider91


Цитата:
а ты пробовал сжать тот же файл без rep.exe , только FreeArc'ом? если да то какая разница ?

Конечно есть разница, не сказал что очень большая, но для репакера она важна.

SotM

Перезалил: __http://file.kirovnet.ru/d/119833

Добавлено:
spider91


Цитата:
я уже пару раз пробовал в rep.exe писать -a99

Код батника напиши плиз)
Автор: Victor_Dobrov
Дата сообщения: 23.04.2009 17:05
Corona Skin & Check System Requirements (535 Кб), исправил ошибку, описания не показывались при выборе компонентов с клавиатуры.
Автор: spider91
Дата сообщения: 23.04.2009 17:06
Qarma


смотря какая - если меньше 100 метров то ето напрасная трата времени и места на HDD

Добавлено:

Код: rep.exe -a99 data.data
Автор: Qarma
Дата сообщения: 23.04.2009 17:12

Цитата:
и как лучше паковать rep'ом до или после запаковки архиватором?

Я же написал, сначала прекомплит, потом реп, потом уже фриарк
Автор: spider91
Дата сообщения: 23.04.2009 17:16
а если нужно не один файл запаковать а много то как быть (только не запаковывая их в sfx без сжатия )?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.