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

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

Автор: sjwrec
Дата сообщения: 04.09.2013 18:53
Скрипт проверки версии DirectX системы

Попытка соединить библиотеку созданную в PureBasic со скриптом Inno Setup

Результат проверки на VirusTotal

Скачать
Автор: sergey3695
Дата сообщения: 05.09.2013 10:56
sjwrec

все ок. (во я туплю порою,ооооооо.....когда голову на паре забьют)
Автор: sjwrec
Дата сообщения: 05.09.2013 11:47
sergey3695
Спасибо.


Цитата:
(во я туплю порою,ооооооо.....когда голову на паре забьют)


Ничего, меня это тоже уже скоро ожидает - тоже учёба начнётся.
Автор: Djin369
Дата сообщения: 06.09.2013 18:16
Ребят извеняюсь конечно за вопрос но может ктонибудь поможет ?собрал себе скрипт из разных примеров на основе ISDone всё вроди работает нормально вот только кажется мне что он какойта запутаный получился(можете глянуть пожалуйста может его можно както попроше можно реализовать ? http://rghost.ru/48601229
Автор: BUU
Дата сообщения: 07.09.2013 04:56
Всем привет, помогите пожалуйста, не могу понять куда прописать чтоб скрипт работал с iswin7logo, с декетом программы на пк, и завершение процесса

Вот скрин, если нажать нет


То выскочит


А вот на что жалуется

procedure DeinitializeSetup();
begin
islogo_three(WizardForm.Handle);
end;
Автор: sjwrec
Дата сообщения: 07.09.2013 21:01
BUU
Данная ошибка гласит: Попытка применить комманду к форме WizardForm, которая ещё не создана.

Попробуйте вызвать отсюда.

Код:
procedure InitializeWizard();
begin
// ваша команда вызова
end;
Автор: marineharrison
Дата сообщения: 07.09.2013 21:06
Доброго времени суток. пожалуйста гляньте мой скрипт. скрипт распаковки двух архивов 7zip с разных дисков с запросом. Архивы одинаковые по размеру, поэтому я не использую records.inf. Как кстати удалить строки о нем из скрипта. Кто разбирается, просьба удалить лишние процедуры, функции, компоненты и др. Прошу помочь.


[more]
#define NeedSize "5000000000"
#define NeedMem 512
#define PackZIP

[Setup]
AppName=ISDone
AppVerName=ISDone
DefaultDirName={pf}\ISDone
DefaultGroupName=ISDone Example
OutputDir=.
OutputBaseFilename=Setup
VersionInfoCopyright=ProFrager
SolidCompression=yes
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif

[Registry]
Root: HKLM; Subkey: Software\ProFrager; ValueName: path; ValueType: String; ValueData: {app}; Flags: uninsdeletekey; Check: CheckError
Root: HKLM; Subkey: Software\ProFrager; ValueName: name; ValueType: String; ValueData: Data; Flags: uninsdeletekey; Check: CheckError

[Icons]
Name: {group}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError
Name: {commondesktop}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError

[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX

[Run]
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Tasks: VCCheck; Check: CheckError
Filename: {src}\Redist\PhysX.exe; Parameters: /qn; StatusMsg: Устанавливаем Nvidia PhysX...; Flags: skipifdoesntexist; Tasks: PhysXCheck; Check: CheckError

[Files]
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy


#ifdef PackZIP
Source: Include\7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packZIP.exe; DestDir: {tmp}; Flags: dontcopy
#endif

[CustomMessages]
russian.ExtractedFile=Извлекается файл:
russian.Extracted=Распаковка архивов...
russian.CancelButton=Отменить распаковку
russian.Error=Ошибка распаковки!
russian.ElapsedTime=Прошло:
russian.RemainingTime=Осталось времени:
russian.EstimatedTime=Всего:
russian.AllElapsedTime=Время установки:

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

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

[Code]
const
PCFonFLY=true;
notPCFonFLY=false;
var
LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
ISDoneProgressBar1: TNewProgressBar;

MyCancelButton: TButton;
ISDoneCancel:integer;
ISDoneError:boolean;
PCFVer:double;

type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';

function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload';
function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload';
function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload';
function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload';
function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';

function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload';
function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload';
function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';

function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload';
function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload';
function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';

LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
Result := ISDoneCancel;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
ResumeProc;
end;

procedure HideControls;
begin
WizardForm.FileNamelabel.Hide;
ISDoneProgressBar1.Hide;
LabelPct1.Hide;
LabelCurrFileName.Hide;
LabelTime1.Hide;
LabelTime2.Hide;
MyCancelButton.Hide;
end;

procedure CreateControls;
var PBTop:integer;
begin
PBTop:=ScaleY(50);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm.InstallingPage;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(0);
Top := PBTop;
Width := ScaleX(365);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Left := ISDoneProgressBar1.Width+ScaleX(5);
Top := ISDoneProgressBar1.Top + ScaleY(2);
Width := ScaleX(80);
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(0);
Top := ScaleY(30);
end;
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
LabelTime3 := TLabel.Create(WizardForm);
with LabelTime3 do begin
Parent := WizardForm.FinishedPage;
AutoSize := False;
Width := 300;
Left := 180;
Top := 200;
end;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(130);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpFinished) and ISDoneError then
begin
LabelTime3.Hide;
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
end;

function CheckError:boolean;
begin
result:= not ISDoneError;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:cardinal;
FindHandle1,ColFiles1,CurIndex1,tmp:integer;
ExecError:boolean;
InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Hide;
CreateControls;
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
ISDoneCancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.


#ifdef PackZIP
ExtractTemporaryFile('7z.dll');
ExtractTemporaryFile('PackZIP.exe');
#endif


// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;


ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
// ChangeLanguage('English');
if not SrepInit('',512,0) then break;
if not PrecompInit('',128,PCFVer) then break;
if not FileSearchInit(true) then break;


// далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)


if not IS7ZipExtract (0, 50, ExpandConstant('{src}\include.7z'), ExpandConstant('{app}'), false, '') then break;

if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'Modules.7z') then break;

if not IS7ZipExtract (0, 50, ExpandConstant('{src}\Modules.7z'), ExpandConstant('{app}'), false, '') then break;



ISDoneError:=false;
until true;
ISDoneStop;
end;
HideControls;
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
end;
if (CurStep=ssPostInstall) and ISDoneError then begin
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
end;
end;
[/more]
Автор: sjwrec
Дата сообщения: 07.09.2013 21:10
Djin369

Цитата:
можно както попроше можно  реализовать ?

Можно разделить на отдельные скрипты и вызывать через #include
А так по другому не упростить, т.к все элементы кода вызываются в строгой последовательности.
Автор: Djin369
Дата сообщения: 07.09.2013 21:14
sjwrec

Понял спасибо! буду пробывать (а так лишнего нечего нету в коде ?
Автор: sjwrec
Дата сообщения: 07.09.2013 21:22
marineharrison

Цитата:
просьба удалить лишние процедуры, функции, компоненты и др

[more=Вот]
#define NeedSize "5000000000"
#define NeedMem 512

[Setup]
AppName=ISDone
AppVerName=ISDone
DefaultDirName={pf}\ISDone
DefaultGroupName=ISDone Example
OutputDir=.
OutputBaseFilename=Setup
VersionInfoCopyright=ProFrager
SolidCompression=yes
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif

[Registry]
Root: HKLM; Subkey: Software\ProFrager; ValueName: path; ValueType: String; ValueData: {app}; Flags: uninsdeletekey; Check: CheckError
Root: HKLM; Subkey: Software\ProFrager; ValueName: name; ValueType: String; ValueData: Data; Flags: uninsdeletekey; Check: CheckError

[Icons]
Name: {group}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError
Name: {commondesktop}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError

[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX

[Run]
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Tasks: VCCheck; Check: CheckError
Filename: {src}\Redist\PhysX.exe; Parameters: /qn; StatusMsg: Устанавливаем Nvidia PhysX...; Flags: skipifdoesntexist; Tasks: PhysXCheck; Check: CheckError

[Files]
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy

[CustomMessages]
russian.ExtractedFile=Извлекается файл:
russian.Extracted=Распаковка архивов...
russian.CancelButton=Отменить распаковку
russian.Error=Ошибка распаковки!
russian.ElapsedTime=Прошло:
russian.RemainingTime=Осталось времени:
russian.EstimatedTime=Всего:
russian.AllElapsedTime=Время установки:

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

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

[Code_]
const
PCFonFLY=true;
notPCFonFLY=false;
var
LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
ISDoneProgressBar1: TNewProgressBar;

MyCancelButton: TButton;
ISDoneCancel:integer;
ISDoneError:boolean;
PCFVer:double;

type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';

function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';
function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';

LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
Result := ISDoneCancel;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
ResumeProc;
end;

procedure HideControls;
begin
WizardForm.FileNamelabel.Hide;
ISDoneProgressBar1.Hide;
LabelPct1.Hide;
LabelCurrFileName.Hide;
LabelTime1.Hide;
LabelTime2.Hide;
MyCancelButton.Hide;
end;

procedure CreateControls;
var PBTop:integer;
begin
PBTop:=ScaleY(50);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm.InstallingPage;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(0);
Top := PBTop;
Width := ScaleX(365);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Left := ISDoneProgressBar1.Width+ScaleX(5);
Top := ISDoneProgressBar1.Top + ScaleY(2);
Width := ScaleX(80);
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(0);
Top := ScaleY(30);
end;
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
LabelTime3 := TLabel.Create(WizardForm);
with LabelTime3 do begin
Parent := WizardForm.FinishedPage;
AutoSize := False;
Width := 300;
Left := 180;
Top := 200;
end;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(130);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpFinished) and ISDoneError then
begin
LabelTime3.Hide;
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
end;

function CheckError:boolean;
begin
result:= not ISDoneError;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:cardinal;
FindHandle1,ColFiles1,CurIndex1,tmp:integer;
ExecError:boolean;
InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Hide;
CreateControls;
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
ISDoneCancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.

// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;

ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
// ChangeLanguage('English');

// далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)


if not IS7ZipExtract (0, 50, ExpandConstant('{src}\include.7z'), ExpandConstant('{app}'), false, '') then break;

if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'Modules.7z') then break;

if not IS7ZipExtract (0, 50, ExpandConstant('{src}\Modules.7z'), ExpandConstant('{app}'), false, '') then break;

ISDoneError:=false;
until true;
ISDoneStop;
end;
HideControls;
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
end;
if (CurStep=ssPostInstall) and ISDoneError then begin
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
end;
end;
[/more]


Добавлено:
Djin369

Цитата:
лишнего нечего нету в коде ?

Да нет вроде.
Автор: BUU
Дата сообщения: 07.09.2013 21:31
sjwrec
Короче добавил как сказали, без ошибок в комплиляции, но теперь ошибка не дает удалить если нажать да



Вот код
http://rghost.ru/private/48624859/7af01578ad86c17981df95087594b03b

спс заранее
Автор: marineharrison
Дата сообщения: 07.09.2013 21:52
sjwrec
благодарю.
а вот эта строка:

ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat

у меня records.inf не используется. как правильно удалить.
Автор: sjwrec
Дата сообщения: 07.09.2013 21:58
marineharrison

Цитата:
у меня records.inf не используется. как правильно удалить.

Её не нужно удалять. А что инсталл пишет Тестовый прогон?

Добавлено:
BUU
Вот код

Правда скомпиллировать без недостающих файлов не удалось. Поэтому не проверил.
Автор: sergey3695
Дата сообщения: 07.09.2013 22:49
marineharrison закоментировать records.inf -> прогнать установку игры -> рядом с установщиком появится этот файл -> скомпилить потом с ним (что не понятно. Справка к isdone.)
Автор: BUU
Дата сообщения: 07.09.2013 23:02
Та же ошибка про вызов wizardform - iswinlogo, если нажать да, то тупо окно закрывается без ошибок, а если оставить что было та же ошибка при ответе НЕТ
Автор: sjwrec
Дата сообщения: 08.09.2013 11:22
sergey3695
У меня тоже такое мнение. Лучше один раз сделать Тестовый прогон. Чем сидеть и мучиться с ручной расстановкой.

BUU
Ну я же говорил. Скрипт без нужных файлов. Проверить не удалось. Я не могу так работать со скриптами.

Всем
Уже почти закончил свой модульный скрипт 6.2 на днях постораюсь его представить на этом форуме.

Автор: BUU
Дата сообщения: 08.09.2013 12:05
sjwrec
http://rghost.ru/private/48632940/63e23d101a5d392f1bf9e97b53a1d8d7 вот
Автор: marineharrison
Дата сообщения: 08.09.2013 12:51
sergey3695
я не использую этот файл. Я автоматом распределил по 50 процентов на каждый из двух архивов. records.inf не используется. как удалить правильно строчки с ним в коде. зачем они если я его не использую. теперь понятно?
Автор: sjwrec
Дата сообщения: 08.09.2013 13:34
Новый модульный скрипт v6.2


Скрины - Скин Светлый 4.0 МБ

[more=Что нового]
В модульном скрипте версии 6.2 произошли не только графические изменения,
но и достаточно сильно изменён функционал:

1. Видео не закрывается, а сворачивается в специальное поле в окне инсталла по комманде меню Свернуть
2. Исправлена проверка версий DirectX видеокарты. За библиотеку спасибо Gnom3.
- Правда в XP всегда видео DX будет 9 (или ниже если у Вас очень древняя видеокарта )
+ DirectX системы проверяет моя первая собственная библиотека.
+/- Дополнительные данные о видеокарте удалены. Зато добавлена кликабельная иконка "ошибки системы".
Которая не отображется если всё ОК.
4. Сворачивание и разворачивание Меню "О программе"
+ Адаптирована под навый скин.
5. Статусные индикаторы кликабельные.
+ Поменял цвет, для лучшего вида.
6. Два скина на выбор, один Светлый, другой Тёмный. Те же самые.
+ Немного изменена инициализация.
7. Уровень прозрачности инсталла отсутствует.
- Модуль удалён из-за ненадобности/несовместимости.
8. На странице Выбор пути установки. Теперь при нажатии Далее (>)
будет выдаваться сообщение о несоответствии системных требований.
= Так и осталось.
9. Мелкие исправления несовместимости модулей.
10. Пытался не допускать граматических ошибок. Но скорее всего они есть
11. Добавлен Мини-Инсталл
+ Работает только во время установки.
+ Включается и отключается вручную.
+ Отключается автоматически на финишной странице.
12. Добавлен режим Скрытия/Показа меню установки.
+ Приятно посмотреть видео без лишних надписей и кнопок.
13. Использование технологии Double Form позволило отрисовывать все кнопки, надписи и прочее - поверх видео.
14. Дабавление технологии Double Form в модуль Авторун,
таже позволило воспроизводить видео с отображением поверх него кнопок, надписей и прочего.
+ Видео/Музыку можно ставить на паузу.
15. Реализована технология "Плавающие (ползающие) кнопки" - Кнопки уползают за установщик через 6 секунд.
+ Время показа можно настроить в модуле Skin2).
Чтобы снова "приползли" кнопки нужно навести мышь на специальную кнопку,
которая появляется после скрытия кнопок из виду.
! Внимание: Во время установки на эту кнопку нужно кликать, наведение не сработает.
16. ISDONE модуль теперь на библиотеке 0.6 Final
+ Добавлена поддержка распаковки RAR5.
Внимание: Возможность распаковки RAR5 не заявлена автором библиотеки.
Поэтому успешная работа с этим форматом не гарантируется.
+ Добавлена специальная комманда для модуля Деинсталлятор 2.0.
17. Добавлено переключение слайдов вручную кнопками Назад / Далее. При выборе соответствующего режима.
При этом желательно чтобы количество слайдов не превышало количество страниц установщика.
Так как остальные слайды вы не увидете. Если только не будете их переключать через меню.
18. Модуль DELVAVE был переделан в модуль Uninstall2 (Деинсталлятор 2.0). Инициализация изменена.
+ Графическое оформление.
+ Выборочное удаление сохранений или настроек.
+ Настройка модуля перенесена в главный модуль (Setup.iss)
+ Удаление произойдёт если пользователь отметит соответствующий чекбокс и нажмёт кнопку Удалить.
+ При запуске удаления через isDone при ошибках - Деинсталлятор 2.0 работает скрытно и не предлагает удалять сохранки.
- Если запускать с коммандами /SILENT /VERYSILENT но не через isDone - то Деинсталлятор 2.0 будет видимым. Эту проблему ещё предстоит профиксить. Но обычно эти комманды и не нужжны

Возможно описание не полное. Но что вспомнил то написал.
[/more]

Скрипт проверен в версии Inno Setup Compiler 5.5.1.ee1. (a) (build 121216)

В Системе Windows XP SP2 / Windows 7 Максимальная

Скачать 9.2 МБ
Автор: crysis1830
Дата сообщения: 08.09.2013 13:46
можете помочь после установки прогрессбар пропадает начинается установка софта в скрытном режиме нужно к ним добавить надпись в инсталлятор (типо подождите пожалуйста и.т.д) можно так?


Автор: BUU
Дата сообщения: 08.09.2013 15:12
sjwrec
Ну как мой скрипт?
Автор: sjwrec
Дата сообщения: 08.09.2013 16:58
BUU

Цитата:
Ну как мой скрипт?

Пока никак
[more=Отсутствуют файлы]
Logo.bmp, Logo.png IsTask.dll
[/more]


crysis1830
можно так (см. выделенную строку):

Код:
[Run]
Filename: "{src}\SOFT\DirectX\DXSETUP.exe"; Parameters: "/silent"; WorkingDir: "{src}\SOFT\DirectX"; StatusMsg: "Обновление DirectX..."; Tasks: "upd/directx"
Автор: BUU
Дата сообщения: 08.09.2013 18:03
sjwrec

IsTask.dll в скрипте не робит, убирай смело

А вот полный вариант - http://rghost.ru/private/48640386/3c8eb636dda2e3bc9e1f240ef76d444e

Если нужен istask вот он -http://rghost.ru/48640437
Автор: sjwrec
Дата сообщения: 08.09.2013 19:19
BUU
Всё сработало как часики и установка и удаление как только добавил IsTask.dll

В секцию Files я добавил только эту строку:

Код:
Source: "ISTask.dll"; DestDir: {app}; Flags: ignoreversion
Автор: BUU
Дата сообщения: 08.09.2013 19:44
а в коде при нажатии нет, нету ошибки?
Автор: sjwrec
Дата сообщения: 08.09.2013 19:57
BUU

Цитата:
а в коде при нажатии нет, нету ошибки?


Да нету, но это в XP, сейчас схожу на 7-ке проверю.


Добавлено:
Проверил и в 7-ке всё работает.
Автор: vint56
Дата сообщения: 08.09.2013 21:47
BUU
Цитата:
IsTask.dll в скрипте не робит, убирай смело

он на unicode не работает а на ansi все нормально работает
Автор: BUU
Дата сообщения: 08.09.2013 22:37
У меня всегда ansi, спс sjwrec
Автор: Black_Ghost
Дата сообщения: 09.09.2013 10:01
sjwrec
У скрипта есть небольшой недостаток. Когда курсор находится на кнопках (которые выдвижные), они все равно скрываются и нужно ещё раз подвигать курсором, чтобы они появились. Вопрос: Можно ли сделать так, чтобы, когда курсор находился на кнопках, они не скрывались?
Автор: crysis1830
Дата сообщения: 09.09.2013 15:47
sjwrec может дам скрипт поможешь с проблемой

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


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