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

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

Автор: Qarma
Дата сообщения: 15.04.2009 19:38
Но мне надо совсем другое:
У меня архивы распаковываются в {app} все сразу и потом уже распаковываются.....
А у сдмена получаестя так: сначала Inno распаковывает первый архив в {app}, потом архив блаблабла.exe распаковывается, далее он удаляется и так повторяется со всеми архивами
Как такое реализовать?
Автор: spider91
Дата сообщения: 15.04.2009 19:42
у него не совсем так. сначала инно все распаковывет а потом через троку каждый архив

но можно сделать и так как ты написал через процедуру
Автор: Qarma
Дата сообщения: 15.04.2009 19:43

Цитата:
но можно сделать и так как ты написал через процедуру

было бы прекрасно, но я не знаю как
Поможешь?
Автор: spider91
Дата сообщения: 15.04.2009 19:59
Qarma

[Files]
Source: "C:\arc.exe"; DestDir: "{app}"; Flags: ignoreversion overwritereadonly
Source: "C:\data1.arc"; DestDir: "{app}"; AfterInstall: Arc1; Flags: ignoreversion nocompression overwritereadonly


[Code]
procedure Arc1;
var
res:Integer;
s,s1:string;
begin
s:=ExpandConstant('{app}')+'\arc.exe';
s1:=ExpandConstant('{app}\data1.arc');
Exec(s, 'x -y "'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;



вроде должно работать но непомню как потом удалить файл
Автор: doombuster
Дата сообщения: 15.04.2009 20:04
Qarma


Цитата:
У него крутые инсталлеры, хорошо сжатые, но не такие красивые как у ЗлогоДеда


Вся эта круть и красота рассредоточена тут, в 5-ти томах)
Автор: Qarma
Дата сообщения: 15.04.2009 20:09

Цитата:
Source: "C:\data1.arc"; DestDir: "{app}"; AfterInstall: Arc1; Flags: ignoreversion nocompression overwritereadonly

Это для чего ведь есть же
Source: "C:\arc.exe"; DestDir: "{app}"; Flags: ignoreversion overwritereadonly

Добавлено:
я нуб)
Автор: doombuster
Дата сообщения: 15.04.2009 20:14
Qarma
arc.exe - архиватор FreeArc, в данном случае он работает как распаковщик
data1.arc - архив.

У тебя чем архивы запакованы? Если 7зипом, то этот код обязан работать:
Взято из Фира
[Run]
Filename: "{app}\GameDataSP1.exe"; WorkingDir: "{app}"; Parameters: "-x -y -s2 -d."; StatusMsg: "..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q GameDataSP1.exe"; Flags: runhidden runasoriginaluser
Автор: Qarma
Дата сообщения: 15.04.2009 20:17
У меня FreArc, но у меня exe архивы, как переделать скрипт?
Автор: doombuster
Дата сообщения: 15.04.2009 20:26
Qarma
Показывай скрипт тады
Автор: spider91
Дата сообщения: 15.04.2009 20:26
Qarma


[Files]
Source: C:\archive.exe; DestDir: {app}; AfterInstall: extractarc1; Flags: ignoreversion
Source: C:\archive2.exe; DestDir: {app} AfterInstall: extractarc2; Flags: ignoreversion


[Code]

procedure extractarc1;
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{app}\archive.exe'), ' -x -y ', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
DeleteFile(ExpandConstant('{app}\archive.exe'));
end;

procedure extractarc2;
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{app}\archive2.exe'), ' -x -y ', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
DeleteFile(ExpandConstant('{app}\archive2.exe'));
end;




и так далее...
Автор: Qarma
Дата сообщения: 15.04.2009 20:29
doombuster
Мой скрипт...
[more][Setup]
AppName=Lost Planet Colonies
AppVerName=Lost Planet Colonies
DefaultDirName=D:\Games\Lost Planet Colonies
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes
DiskSpanning=true
SlicesPerDisk=3
DiskSliceSize=1100000000
InternalCompressLevel=ultra64
OutputDir=D:\test\lp_ce
WizardImageFile=D:\test\lp.bmp
WizardSmallImageFile=D:\test\lp_small.bmp
DisableProgramGroupPage=true
DefaultGroupName=Lost Planet Colonies
VersionInfoVersion=1.0.0.0
DirExistsWarning=no
DisableReadyPage=true
AppVersion=1.0.0.0
UninstallDisplayName=Lost Planet Colonies


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


[LangOptions]
WelcomeFontSize=10

[Run]
Filename: "{app}\ZZPack1.exe"; WorkingDir: "{app}"; Parameters: "-x -y ""{app}\nativePC"" -s2 -d."; StatusMsg: "Èäåò ðàñïàêîâêà äàííûõ, ïîäîæäèòå ïîæàëóéñòà...";
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q ZZPack1.exe"; Flags: runhidden runasoriginaluser

[Icons]
Name: "{group}\Lost Planet Colonies"; Filename: "{app}\LPCLauncher.exe"; WorkingDir: "{app}";

Name: "{group}\Óäàëèòü èãðó"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Lost Planet Colonies"; Filename: "{app}\LPCLauncher.exe"; WorkingDir: "{app}";

[Files]
Source:"D:\test\logo.bmp";DestDir:{tmp};Flags: dontcopy nocompression solidbreak
Source: "D:\Games\Lost Planet Colonies\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Source: "D:\test\NOCOMP\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs nocompression

[Code]
//////////////
var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon: TCheckBox;
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;
const
NeedSize = 7760;

var
FreeMB, TotalMB: Cardinal;

NeedSpaceLabel, FreeSpaceLabel: TLabel;
ExtractFile:TNewStaticText;

/////////

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;

begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Äîñòóïíî ìåñòî íà äèñêå: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := 'Äîñòóïíî ìåñòî íà äèñêå: ' + IntToStr(FreeMB)+ ' MB';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := false
else
WizardForm.NextButton.Enabled := true;
end;


//////////
procedure LogoLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://kirovmedia.ru/forum', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;


procedure InitializeWizard();

var
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
begin
DesktopIcon := TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectDirPage;
DesktopIcon.Caption := '&#196;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#255;&#240;&#235;&#251;&#234; &#237;&#224; &#240;&#224;&#225;&#238;&#247;&#232;&#233; &#241;&#242;&#238;&#235;';
DesktopIcon.Left := ScaleX(0);
DesktopIcon.Top := ScaleY(WizardForm.DirEdit.Top + 35);
DesktopIcon.Width := ScaleX(400);
DesktopIcon.Height := ScaleY(15);
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked := True;



////////////
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage



WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;


WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;


begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(100);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(77);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
end;
//////////


////////
begin

WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do

begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);



Caption := '&#210;&#240;&#229;&#225;&#243;&#229;&#242;&#241;&#255; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: 7,57 GB' ;
end;
////////////
begin
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
end ;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(45);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

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

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

////////////IntToStr(NeedSize) + ' GB'
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(216);
Width := ScaleX(209);
Height := ScaleY(13);
end;




WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;

/////////////////
begin
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(327);
Width := ScaleX(120);
Height := ScaleY(28);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
ExtractTemporaryFile('logo.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoLabelOnClick;
end;
end;
end;



procedure CurPageChanged(CurPageID: Integer);

begin

PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;

if CurPageID = wpSelectDir

then begin
WizardForm.NextButton.Caption:='&#211;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252;';
if FreeMB < NeedSize
then WizardForm.NextButton.Enabled:=False;

end;
end;
[/more]
Автор: spider91
Дата сообщения: 15.04.2009 20:32
Qarma


можно еще SW_SHOWNORMAL заменить на SW_HIDE тогда юзеру не будет видно окна распаковки арка а только окно инсталятора
Автор: Qarma
Дата сообщения: 15.04.2009 20:32
spider91
Спасибо, но у меня остался вопрос....как сделать чтобы архив распаковывася в определённую папку?
Автор: spider91
Дата сообщения: 15.04.2009 20:43
Qarma

ето параметры надо дописывать вроде в арке ето -dp
Автор: Qarma
Дата сообщения: 15.04.2009 20:46
spider91

А тут не как?
А то перепаковывать 9 гб не в кайф
Автор: spider91
Дата сообщения: 15.04.2009 20:46
или лучше инно распакуй ахив в нужную папку и там же распакуй череез процедуру
Автор: AleSasha
Дата сообщения: 15.04.2009 20:46
Такой вопрос:

Можно ли все обьемные элементы (Чекбоксы, Кнопки, Строка Пароля, Скроллбар) сделать плоскими?
Если да, то как?

Спасибо!
Автор: Qarma
Дата сообщения: 15.04.2009 20:48

Код: Filename: "{src}\depack.exe"; WorkingDir: "{src}"; Parameters: "x content.data -o""{app}\Content\"" -y";
Автор: spider91
Дата сообщения: 15.04.2009 20:49
та не!! параметры дописать там где -x -y тоесть -x -y -dp

но там чуть подругому надо , щас напишу

Добавлено:
procedure Arc1;
var
res:Integer;
s,s1:string;
begin
s:=ExpandConstant('{app}')+'\data1.exe';
s1:=ExpandConstant('{app}\Papka\');
Exec(s, '-x -y -dp"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
DeleteFile(ExpandConstant('{app}\data1.exe'));
end;


если архив лежит рядом с инсталлом то так:

procedure Arc1;
var
res:Integer;
s,s1:string;
begin
s:=ExpandConstant('{src}')+'\data1.exe';
s1:=ExpandConstant('{app}\Papka\');
Exec(s, '-x -y -dp"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;
Автор: doombuster
Дата сообщения: 15.04.2009 20:56
Qarma
Вот этот скрипт изучи, там вроде всё есть, о чем ты спрашивал. Только у тебя арки в экзе, но думаю тоже распакуются

Потому что ты еще захочешь прогрессбар сделать, там в скрипте есть код, т.к. инно не умеет сам распаковывать такие архивы, и значит не будет нормально работать бар)
Автор: Qarma
Дата сообщения: 15.04.2009 20:58

Цитата:
можно еще SW_SHOWNORMAL заменить на SW_HIDE тогда юзеру не будет видно окна распаковки арка а только окно инсталятора

Даже с SW_SHOWNORMAL процесс распаковки не показывается, можно сделать чтобы показывало?
Автор: spider91
Дата сообщения: 15.04.2009 21:04
незнаю вроде так должно показывать , а прогессбар в ино во время распаковки все равно будет стоять
Автор: Qarma
Дата сообщения: 15.04.2009 21:06
spider91

Мм...можно ли поправить этот баг с тем что не показывает процесса распаковки?
Автор: spider91
Дата сообщения: 15.04.2009 21:11
может через батник будет видно окно арка. щас через 5мин приду и напишу
Автор: Qarma
Дата сообщения: 15.04.2009 21:11
ой, сори, у меня лишняя была процедура
Автор: spider91
Дата сообщения: 15.04.2009 21:13
Qarma
какой из них?
то что не видно окна арка или то что прогрессбар инно стоит?
Автор: Qarma
Дата сообщения: 15.04.2009 21:15
spider91
Даже не процедура, а просто секция Run лишней была

Добавлено:
Кстати, можно ли в Afterinstall: прописать 2 процедуры?
Допустим так Afterinstall: animateprogress Arc1
Автор: spider91
Дата сообщения: 15.04.2009 21:23
Qarma


думаю да, но если не пойдет то можно в одном файле прописать afterinstall: arc1; а в следуещем beforeinstall: animateprogress;

кстати если не трудно дай мне код для передвижения бара, я так подозреваю что ето и есть animateprogress
Автор: Qarma
Дата сообщения: 15.04.2009 21:27
spider91
мм...тут смотри, там полный скрипт игры...очень даже не плохой скрипт... http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=980&limit=1&m=1#1
Автор: spider91
Дата сообщения: 15.04.2009 21:35
Qarma


спаиб нашел

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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