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

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

Автор: Kirgyz
Дата сообщения: 24.06.2007 21:31
NightW0lf

ну нет же... ! надо, чтобы архив как только скопировался и сразу начал распаковку.... после того как распакуется, чтобы удалялся. А после него начнут копироваться другие файлы.

а в этом варианте он ведь в конце установки запустится

Добавлено:
это, как и сказал FragoMatik , во многих установщиках пиратских игр
Автор: Genri
Дата сообщения: 25.06.2007 13:49
Kirgyz
FragoMatik

Код:
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\My Program

[Files]
Source: Archive.exe; DestDir: {app}; AfterInstall: Unpack(); Flags: ignoreversion
Source: Files\*; DestDir: {app}

[Code]
procedure Unpack();
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{app}\Archive.exe'), '', '', SW_HIDE,
ewWaitUntilTerminated, ResultCode);
DeleteFile(ExpandConstant('{app}\Archive.exe'));
end;
Автор: Unc1e
Дата сообщения: 25.06.2007 16:04
Написал скрипт, добавляющий ярлык игры в папку "Игры" в Windows Vista (для Tomb Raider Anniversary).Кому интересно смотрим [more=тут] [Setup]
AppName=Tomb Raider Anniversary
AppVerName=Tomb Raider Anniversary
DefaultDirName={pf}\Eidos\Tomb Raider Anniversary
DefaultGroupName=Eidos\Tomb Raider Anniversary
AllowNoIcons=yes
OutputDir=D:\Tomb Raider Anniversary
OutputBaseFilename=setup
Compression=none

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

[Tasks]
Name: "WGE"; Description: "Создать ярлык в папке Игры (только Windows Vista)"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Games\TRA\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\Tomb Raider Anniversary"; Filename: "{app}\tra.exe";WorkingDir: "{app}"
Name: "{group}\Удалить Tomb Raider Anniversary"; Filename: "{uninstallexe}";WorkingDir: "{app}"
;Vista WGE
Name: {reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,Local AppData|{userappdata}}\Microsoft\Windows\GameExplorer\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}\PlayTasks\0\Играть; Filename: "{app}\tra.exe";WorkingDir: "{app}"; Tasks: WGE;

[Run]
Filename: "{app}\tra.exe"; Description: "{cm:LaunchProgram,Tomb Raider Anniversary}"; Flags: nowait postinstall skipifsilent ;WorkingDir: "{app}"

[Registry]
;Vista WGE
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: ConfigApplicationPath; ValueData: {app}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: Title; ValueData: Tomb Raider: Anniversary; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: ConfigInstallType; ValueData: 2; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: AppExePath; ValueData: tra.exe; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: ApplicationId; ValueData: {{E3861685-90C1-4D81-9DB6-F4192FDF1294}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: string; ValueName: ConfigGDFBinaryPath; ValueData: {app}\tra.exe; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{FDD39AD0-238F-46AF-ADB4-6C85480369C7}; ValueType: dword; ValueName: IsSigned; ValueData: $00000001; Flags: uninsdeletekey
[/more]
Автор: Victor_Dobrov
Дата сообщения: 25.06.2007 17:12
Corona Skin & System Test
Исправил баг, замеченный Angel_Smerti на странице wpPreparing.
Теперь выглядит так:
Автор: Kadavr
Дата сообщения: 25.06.2007 19:40
Кто-нибудь бинарные патчи на InnoSetup + xdelta/bsdiff пробовал делать ?
Автор: maxdddca123
Дата сообщения: 26.06.2007 15:22
Подскажите, как сделать кнопку, на которой отсчитывалось бы напрмиер 10 секунд, и на неё нельзя нажать, пока эти 10 секунд не пройдут ??? Ну что бы пользователь прочитал важную информацию ! Это всё надо сделать на произвольной (дополнительной ) странице !
Автор: Sampron
Дата сообщения: 26.06.2007 15:46
maxdddca123
[Setup]
AppName=Timer
AppVerName=Timer
DefaultDirName={pf}\Timer

[Files]
Source: timectrl.dll; Flags: dontcopy

[code]
var
Page: TWizardPage;

function starttimer(WizardFormHandle: HWND; ButtonHandle: HWND; ButtonCaption: PChar; RTime: UINT): BOOL; external 'starttimer@files:timectrl.dll stdcall';
function stoptimer(): BOOL; external 'stoptimer@files:timectrl.dll stdcall';

procedure InitializeWizard();
begin
Page:=CreateCustomPage(wpWelcome, 'Custom Page', 'Description')
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=Page.ID then
starttimer(WizardForm.Handle,WizardForm.NEXTBUTTON.Handle,'Далее >',20)
else
if (CurPageID=wpWelcome) or (CurPageID=wpSelectDir) then
begin
stoptimer()
WizardForm.NEXTBUTTON.Caption:='Далее >'
end
end;

procedure DeinitializeSetup();
begin
stoptimer()
end;
Автор: maxdddca123
Дата сообщения: 26.06.2007 16:05
Sampron
А где взять timectrl.dll ?
И это тоже похожий код я так понял ?
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=348&limit=1&m=1
Автор: Genri
Дата сообщения: 26.06.2007 16:15
maxdddca123
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=320#2

Добавлено:
http://data.cod.ru/1014922698
Автор: maxdddca123
Дата сообщения: 26.06.2007 16:24
Genri
Sampron
Благодарю Вас !
Автор: RizaR
Дата сообщения: 26.06.2007 18:33
Ребят, извиняюсь за ламерство.
Вопрос следующий.
Как сделать так, чтобы программа определяла имя текущей учетной записи (например Documents and Settings\Вася\Application Data) и вбивала ее в путь к установки
Автор: Genri
Дата сообщения: 26.06.2007 18:54
RizaR

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={userappdata}\My Program

посмотри в хелпе раздел Constants
Автор: Unc1e
Дата сообщения: 26.06.2007 22:58
Народ, кто-нибудь знает где достать конвертер, переводящий скрипт Installshield в скрипт Inno Setup??? (Если такой вообще есть)
Автор: Sampron
Дата сообщения: 26.06.2007 23:02
Unc1e
Впервые слышу.
Автор: Sero
Дата сообщения: 26.06.2007 23:40
Unc1e
Используй ISTool - File\Open и открой скрипт InstallShield
Автор: RizaR
Дата сообщения: 26.06.2007 23:41
Большое спасибо! все получилось!
И еще простенький вопрос.
Как заставить выполняться установленную программу без разрешения пользователя?

Добавлено:
Все разобрался!
Все довольно просто!
Автор: Unc1e
Дата сообщения: 27.06.2007 16:08
Sero
Спасибо. Будем пробовать.
Автор: iTASmania_Inc
Дата сообщения: 28.06.2007 00:29
Sampron
Ты в своих скинах с анимированным кнопками не разобрался, как можно устранить баг с серийным ноиером на странице wpUserInfo?
Автор: CapsLosk
Дата сообщения: 28.06.2007 01:33
Подскажите кто нить ПЛИЗЗ!
Есть такая тема:

procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
sndPlaySound(ExpandConstant('{tmp}\soundexit.wav'), $0001);
if MsgBox('Ты действительно хочешь навинтить?', mbError, MB_YESNO) = idYes
then
Cancel:=true
else
sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008);
end;

Эта процедура действительна для всех страниц при инсталляции.
Можно ли как то сделать чтоб на
procedure CurStepChanged
при нажатии отмена выполнялось другое условие, например проигралась soundexit2.wav

Заранее признателен.
Автор: Genri
Дата сообщения: 28.06.2007 09:13
CapsLosk --
Цитата:
...чтоб на procedure CurStepChanged при нажатии отмена...
-- что это ? При чем тут процедура CurStepChanged ? Скопировал - не исправил или я не понял вопроса ?

Если вопрос должен звучать как "Можно ли как то сделать чтоб на одной из страниц при нажатии отмена выполнялось другое действие", то используй параметр CurPage в условии :
if CurPage = wpReady then
begin
// действия для этой страницы
end else
begin
// действия для остальных страниц
end;
Автор: CapsLosk
Дата сообщения: 28.06.2007 09:54
Genri

Цитата:
Если вопрос должен звучать как "Можно ли как то сделать чтоб на одной из страниц при нажатии отмена выполнялось другое действие", то используй параметр CurPage в условии :
if CurPage = wpReady then
begin
// действия для этой страницы
end else
begin
// действия для остальных страниц
end;

Именно это я и имел ввиду. Только не вьехал - как например сделать чтоб на странице непосредственно установки при нажатии ОТМЕНА сделать другое действие. Извени - не силен приведи скриптик если не трудно!?
Автор: Genri
Дата сообщения: 28.06.2007 10:45
CapsLosk

Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Code]
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
(* sndPlaySound(ExpandConstant('{tmp}\soundexit.wav'), $0001); *)

if CurPage = wpInstalling then
begin
if MsgBox('Болт в процессе отпиливания !' + #10#13 +
'Хочешь попытаться навинтить?', mbError, MB_YESNO) = idYes
then Cancel:=true
else (* sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008) *);
end else
begin
if MsgBox('Ты действительно хочешь навинтить?', mbError, MB_YESNO) = idYes
then Cancel:=true
else (* sndPlaySound(ExpandConstant('{tmp}\sound.wav'), $0001 or $0008) *);
end;
end;
Автор: Chuvakstepan
Дата сообщения: 28.06.2007 10:56
Представляю вашему вниманию оболочку для Inno Setup "Grey Inno Setup". Решил сделать небольшой стильный инсталлятор. Думаю у меня это получилось.



Прямая ссылка на скрипт здесь ~ 206 Кб

В дальнейшем буду дорабатывать
Автор: Chanka
Дата сообщения: 28.06.2007 13:56
Люди добрые, пожалуйста, помогите. В этом коде на странице выбора директории отображаются локальные диски и количество свободного места. Так вот если места мало появляется сообщение типа установки требуется не менее столько-то мегабайт, а на выбранном диске доступно столько-то мегабайт. Дело в том, что количество мегабайт не совпадает. На странице установки показывает, допустим, C:\ 17% 3.232 GB, а если появляется сообщение о нехватке места то там 3310. Как это исправить?

[Setup]
AppName=SystemTest
AppVerName=SystemTest <Version>
DefaultDirName={pf32}\System Check

[Files]
Source: get_hw_caps.dll; Flags: dontcopy

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

[Code]
const oneMB = 1024*1024; BufferLen = 50; NeedSize = 20000;
type TMemoryStatus = record dwLength, dwMemoryLoad, dwTotalPhys, dwAvailPhys, dwTotalPageFile, dwAvailPageFile, dwTotalVirtual, dwAvailVirtual: Longint; end;
var Memory: TMemoryStatus; FreeMB, TotalMB: Cardinal; VolumeSerialNo, MaxComponentLength, FileSystemFlags: Longint; i: Integer; VolumeName, FileSystemName: String; ListBox: TListBox;
hWnd: Integer;

function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer;
external 'MessageBoxA@user32.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: Integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetVolumeInformation(PathName, VolumeName: PChar; VolumeNameSize, VolumeSerialNumber, MaxComponentLength, FileSystemFlags: Longint; FileSystemName: PChar; FileSystemNameSize: Longint): Longint;
external 'GetVolumeInformationA@kernel32.dll stdcall';

function MorG(MB, onlyMB: Integer): String; // Значение в строку объёма Мб/Гб (Гб округлим до 3-ёх знаков после запятой)
begin if (MB < 1000) or (onlyMB > 0) then Result:= IntToStr(MB)+ 'MB' else Result:= FloatToStr(round(MB/1024*1000)/1000)+ ' GB'; StringChange(Result, ',', '.') end;

procedure ListBoxOnClick(Sender: TObject);
begin for i:= 0 to ListBox.Items.Count-1 do if ListBox.Selected[i] then WizardForm.DirEdit.Text:= Copy(ListBox.Items[i],1,1) +Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text)); end;


//******************************************* [Конец - Файл подкачки] ************************************************//
procedure InitializeWizard();
begin
ListBox:= TListBox.Create(WizardForm)
with ListBox do begin
Color:= $EEEEEE; Font.Size:= 10; Font.Name:= 'Courier New'; Font.Style:=[fsBold]; Parent:= WizardForm.SelectDirPage; OnClick:= @ListBoxOnClick; Top:= WizardForm.DirEdit.Top +WizardForm.DirEdit.Height +ScaleY(30); Width:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width - WizardForm.DirEdit.Left; Height:= WizardForm.DiskSpaceLabel.Top -Top -9;
FileSystemName:= StringOfChar(' ', BufferLen); VolumeName:= StringOfChar(' ', BufferLen);
for i:=0 to GetHardDrivesCount-1 do begin
GetSpaceOnDisk(GetHardDriveName(i), True, FreeMB, TotalMB); GetVolumeInformation(GetHardDriveName(i), VolumeName, BufferLen-1, VolumeSerialNo, MaxComponentLength, FileSystemFlags, FileSystemName, BufferLen-1);
Items.Add(Copy(Uppercase(GetHardDriveName(i)),0,2) + '\' + Copy('',0,0-Length(MorG(TotalMB,0))) + Copy(' ',0,4-Length(IntToStr(round(FreeMB/TotalMB*100)))) + FloatToStr(round(FreeMB/TotalMB*100)) + '%' + Copy(' ',0,10-Length(MorG(FreeMB,0)))+ MorG(FreeMB,0)); end;
end;
with TNewStaticText.Create(WizardForm) do begin Top:= WizardForm.DirEdit.Top +WizardForm.DirEdit.Height +ScaleY(8); Caption:='Список локальных дисков, присутствующих в системе:'; Parent:= WizardForm.SelectDirPage; end;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s: 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
s:='Установка требует не менее '+ IntTostr(NeedSize)+ ' GB свободного места, а на '#13+' выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
MessageBox(hWnd, s, 'Недостаточно места на диске', MB_OK or $10)
Result := False;
end;
end;
end;
Автор: Kirgyz
Дата сообщения: 28.06.2007 13:56
Chuvakstepan
красиво, я что-то подобное делал для инсталлера Colin McRae DiRT =)


Добавлено:
Chanka

Цитата:
На странице установки показывает, допустим, C:\ 17% 3.232 GB, а если появляется сообщение о нехватке места то там 3310.


ну дык 3310 мб - это 3,232.... Гб
Автор: Chanka
Дата сообщения: 28.06.2007 14:17
Kirgyz
А как сделать как в сталкере. Чтобы показывалось одно и тоже число?
Автор: Kirgyz
Дата сообщения: 28.06.2007 14:44
Chanka
в своём инсталляторе я дорабатывал вот этот код

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
compression=none
internalcompresslevel=none

[Files]


[Code]
const
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
NeedSize = 50;

var
ListBox: TListBox;

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

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

procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: String;
i: Integer;
begin
for i:= 0 to ListBox.Items.Count-1 do
begin
if ListBox.Selected[i] then
begin
NewLetter:= Copy(ListBox.Items[i], 0, 1);
OldString:= Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text:= NewLetter + OldString;
end;
end;
end;

procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
Text := TNewStaticText.Create(WizardForm);
Text.Top := 102;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 240;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

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);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s: 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*1024) then
begin
if FreeMB>1024 then
begin
s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
end
else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
MsgBox(s, mbCriticalError, MB_OK)
Result := False;
end;
end;
end;
Автор: Chuvakstepan
Дата сообщения: 28.06.2007 14:52
Подскажите, пожалуйста, как на странице процесса установки сделать анимацию gif???
Автор: Victor_Dobrov
Дата сообщения: 28.06.2007 14:54
Chuvakstepan
В этой ветке есть коды проигрывания AVI-файлов. А так же смотри страницу wpInstalling в моём скине. И наверное можно прикрутить NSIS плагин AnimGif.dll через CallNSIS.dll.

P.S - тебе не жалко юзеров, привлеченных к уголовной ответственности за использование твоих файлов? Ведь в твоих исходниках предупреждается именно об этом.
Автор: Kirgyz
Дата сообщения: 28.06.2007 14:56
Sampron
вот посоветовал ты мне расширение убрать у архива SFX. Когда использовал архив, весом 350 мб, то кажись всё было гууд. Но вот щас архивы массой 700 мб и 950 мб и с ними во время установки глюк

я использую вот такой метод распаковки

[Files]
Source: "sfx.exe"; DestDir: "{app}"; AfterInstall: MyAfterInstall; Flags: ignoreversion deleteafterinstall

[Code]
procedure MyAfterInstall();
var
ResultCode: Integer;
begin
begin
Exec(ExpandConstant('{app}\sfx.exe'), '-e -aoa -y', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end
end;


ну естессно разширение меняю, но когда доходит дело до момента распаковки, то вываливается диагностическое сообщение 7зип и пишет, типа невозможно открыть такой то файл, как архив.


голову поломал, что можно сделать, но всё прикол с расширением- это тема, касперыч его вообще не проверяет и на Висте всё норма. хотелось бы чтобы и щас было всё чики-пуки

Добавлено:
Victor_Dobrov
+1 я аж всплакнул lol

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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