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

Показать сообщение отдельно

Аватара для Tco 03

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


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

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


audiofeel
Вот, когда-то, где-то нашёл вот такой скрипт.
читать дальше »
Код: Выделить весь код
Скрипт для установки архивов, записанных на двух DVD. На примере показано извлечение из 7z SFX-архивов.

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
OutputBaseFilename=setup
Compression=none
OutputDir=C:\Output
SolidCompression=no

[Files]
;На диске рядом с инсталлятором размещаем папку EmptyFiles, в которую помещаем "файлы-пустышки" игры.
;Сначала выполняется первый архив (последовательность AfterInstall должна быть такой)
Source: "{src}\EmptyFiles\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs external; AfterInstall: InstallFirstArchive
;А затем второй
Source: "{src}\EmptyFiles\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs external; AfterInstall: CheckSelectedDisk

[ Code]
//На странице установки отключаем подтверждающее сообщение (чтобы не было проблем с откатом)
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
If CurPage=12 then
begin
Confirm:=False;
end;
end;

//Устанавливаем первый 7z SFX (Pack1.exe) архив, находящийся на первом диске (рядом с инсталлятором)
//Никаких сообщений об ошибках и т.д. не применяем, т.к. вся ответственность должна лежать на распространителе
procedure InstallFirstArchive;
var
res:Integer;
s,s1:string;
begin
s:=ExpandConstant('{app}');
s1:=ExpandConstant('{src}')+'\Pack1.exe';
Exec(s1, '-y -o"'+ s + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Res);
end;

//Затем выводим соответствующее сообщение для вставки второго диска со вторым архивом
procedure CheckSelectedDisk;
var
res:Integer;
s,s2:string;
Confirm: Boolean;
begin
s:=ExpandConstant('{app}');
s2:=ExpandConstant('{src}')+'\Pack2.exe';
//Если второго архива рядом нету (мало ли, в будущем игра будет записана на двуслойном диске)
if not Exec(s2, '-y -o"'+ s + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Res) then
//то тогда выводим сообщение
case MsgBox('Для дальнейшей установки требуется файл '''+ s2 +'''!'#13#13 +
'Вставьте второй DVD, содержащий архив, и нажмите "OK".' #13#13 +
'Нажмите "Отмена", чтобы прекратить дальнейшую установку.', mbInformation, MB_OKCANCEL)
of IDCANCEL:
begin
//Выполняем откат действий при отмене
Confirm:=False;
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end
IDOK:
begin
CheckSelectedDisk;
end;
end;
end;

Последний раз редактировалось Tco 03, 13-03-2013 в 12:15.

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

Отправлено: 12:05, 13-03-2013 | #1862