meekrab, Спасибо, но как?
» Inno Setup (создание инсталяционных пакетов)
log1stable
FileNameLabel.Parent:= NewNotebook;
FileNameLabel.Parent:= NewNotebook;
R3Pa4eK, это я уже пробовал, но ни один из элементов не виден на новой странице! Правда, они видны, если их кидать на WizardForm.
log1stable
Киньте сюда что вы там написали. Со всеми причиндалами так помогут быстрей.
Киньте сюда что вы там написали. Со всеми причиндалами так помогут быстрей.
meekrab
[more=Скрипт]
[Setup]
AppName=Test
AppVerName=Test Script
DefaultDirName={pf}\Test
[Сode]
var
TestNote: TNewNotebook;
TestPage: TNewNotebookPage;
procedure InitializeWizard();
begin
with WizardForm.FilenameLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(40);
end;
with WizardForm.StatusLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(16);
end;
with WizardForm.ProgressGauge do
begin
Left := ScaleX(16);
Top := ScaleY(58);
Parent := TestPage;
end;
WizardForm.FilenameLabel.TabOrder := 0;
WizardForm.StatusLabel.TabOrder := 1;
WizardForm.ProgressGauge.TabOrder := 2;
TestNote := TNewNotebook.Create(WizardForm);
with TestNote do
begin
Name := 'TestNote';
Parent := WizardForm;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(313);
end;
TestPage := TNewNotebookPage.Create(WizardForm);
with TestPage do
begin
Name := 'TestPage';
Notebook := TestNote;
end;
TestNote.TabOrder := 5;
TestNote.ActivePage := TestPage;
WizardForm.OuterNotebook.Hide;
end;
[/more]
[more=Скрипт]
[Setup]
AppName=Test
AppVerName=Test Script
DefaultDirName={pf}\Test
[Сode]
var
TestNote: TNewNotebook;
TestPage: TNewNotebookPage;
procedure InitializeWizard();
begin
with WizardForm.FilenameLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(40);
end;
with WizardForm.StatusLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(16);
end;
with WizardForm.ProgressGauge do
begin
Left := ScaleX(16);
Top := ScaleY(58);
Parent := TestPage;
end;
WizardForm.FilenameLabel.TabOrder := 0;
WizardForm.StatusLabel.TabOrder := 1;
WizardForm.ProgressGauge.TabOrder := 2;
TestNote := TNewNotebook.Create(WizardForm);
with TestNote do
begin
Name := 'TestNote';
Parent := WizardForm;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(313);
end;
TestPage := TNewNotebookPage.Create(WizardForm);
with TestPage do
begin
Name := 'TestPage';
Notebook := TestNote;
end;
TestNote.TabOrder := 5;
TestNote.ActivePage := TestPage;
WizardForm.OuterNotebook.Hide;
end;
[/more]
log1stable
Интересно, как это у вас ошибку не выбило. Т.к вы присваиваете объекту родителя (Parent), который еще не создан.
[more=Правильный код][Setup]
AppName=Test
AppVerName=Test Script
DefaultDirName={pf}\Test
[code]
var
TestNote: TNewNotebook;
TestPage: TNewNotebookPage;
procedure InitializeWizard();
begin
TestNote := TNewNotebook.Create(WizardForm);
with TestNote do
begin
Name := 'TestNote';
Parent := WizardForm;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(313);
end;
TestPage := TNewNotebookPage.Create(WizardForm);
with TestPage do
begin
Name := 'TestPage';
Notebook := TestNote;
end;
with WizardForm.FilenameLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(40);
end;
with WizardForm.StatusLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(16);
end;
with WizardForm.ProgressGauge do
begin
Left := ScaleX(16);
Top := ScaleY(58);
Parent := TestPage;
end;
WizardForm.FilenameLabel.TabOrder := 0;
WizardForm.StatusLabel.TabOrder := 1;
WizardForm.ProgressGauge.TabOrder := 2;
TestNote.TabOrder := 5;
TestNote.ActivePage := TestPage;
WizardForm.OuterNotebook.Hide;
end;[/more]
Интересно, как это у вас ошибку не выбило. Т.к вы присваиваете объекту родителя (Parent), который еще не создан.
[more=Правильный код][Setup]
AppName=Test
AppVerName=Test Script
DefaultDirName={pf}\Test
[code]
var
TestNote: TNewNotebook;
TestPage: TNewNotebookPage;
procedure InitializeWizard();
begin
TestNote := TNewNotebook.Create(WizardForm);
with TestNote do
begin
Name := 'TestNote';
Parent := WizardForm;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(497);
Height := ScaleY(313);
end;
TestPage := TNewNotebookPage.Create(WizardForm);
with TestPage do
begin
Name := 'TestPage';
Notebook := TestNote;
end;
with WizardForm.FilenameLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(40);
end;
with WizardForm.StatusLabel do
begin
Parent := TestPage;
Left := ScaleX(16);
Top := ScaleY(16);
end;
with WizardForm.ProgressGauge do
begin
Left := ScaleX(16);
Top := ScaleY(58);
Parent := TestPage;
end;
WizardForm.FilenameLabel.TabOrder := 0;
WizardForm.StatusLabel.TabOrder := 1;
WizardForm.ProgressGauge.TabOrder := 2;
TestNote.TabOrder := 5;
TestNote.ActivePage := TestPage;
WizardForm.OuterNotebook.Hide;
end;[/more]
Alexan
Цитата:
Код: [no]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
AllowUNCPath=No
[Code]
const
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
function GetDriveType(lpRootPathName: PChar): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if CurPageID = wpSelectDir then begin
if GetDriveType(ExtractFileDrive(WizardForm.DirEdit.Text)) = DRIVE_REMOTE then begin
MsgBox('Fixed drive only!', mbInformation, MB_OK);
Result:= False;
end;
end;
end;
[/no]
Цитата:
Каким образом можно запретить установку программы на сетевой диск-- например, проверить что диск не сетевой. [more]
Код: [no]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
AllowUNCPath=No
[Code]
const
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
function GetDriveType(lpRootPathName: PChar): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if CurPageID = wpSelectDir then begin
if GetDriveType(ExtractFileDrive(WizardForm.DirEdit.Text)) = DRIVE_REMOTE then begin
MsgBox('Fixed drive only!', mbInformation, MB_OK);
Result:= False;
end;
end;
end;
[/no]
Shegorat, на Inno Setup 5.3.0.ee2 (a) не выкидывает - точно.
Genri
Цитата:
Огромное спасибо! Именно то что нужно.
Цитата:
-- например, проверить что диск не сетевой. Подробнее...
В пример вставил все константы - можешь отфильтровывать так как тебе надо (например, запретить установку на съемный диск)
Огромное спасибо! Именно то что нужно.
nik1967
Цитата:
Я подожду, дайте знать, когда время свободное для помощи в скрипте будет.
Цитата:
Здравствуйте! Скрипт писался под одну определённую игру, и я не думал, что он(скрипт) будет востребован. На счёт помощи: если быть до конца откровенным, то лень. Да и другим я сейчас занят. Если когда нибудь выберу время и не заленюсь, то прикручу. Вопрос в другом - когда это будет?
Я подожду, дайте знать, когда время свободное для помощи в скрипте будет.
Пожалуйста, помогите реализовать это в скрипте:
1) Сначала в папку с игрой распаковываются файлы для работы с ресурсами игры (Unpack.bat , Pack.bat , 1.dll , maker.exe)
2) Из папки с игрой запускается Unpack.bat
3) Затем в папку с игрой распаковываются дополнительные файлы
4) Из папки с игрой запускается Pack.bat
По отдельности знаю как сделать, но как заставить всё это дело работать именно в такой последовательности?
1) Сначала в папку с игрой распаковываются файлы для работы с ресурсами игры (Unpack.bat , Pack.bat , 1.dll , maker.exe)
2) Из папки с игрой запускается Unpack.bat
3) Затем в папку с игрой распаковываются дополнительные файлы
4) Из папки с игрой запускается Pack.bat
По отдельности знаю как сделать, но как заставить всё это дело работать именно в такой последовательности?
Robkovich
прочитай сначала русскую справку http://rghost.ru/36933656
раздел "секция скриптов" а там "Секции [Run]"
всё что ты хочешь можно скопировав выполнять в [Run] с флагами для батников shellexec
и чтобы всё было последовательно везде нужно поставить waituntilterminated
чтобы скрыть консольные окна есть флаг runhidden или параиметы тихого запуска
прочитай сначала русскую справку http://rghost.ru/36933656
раздел "секция скриптов" а там "Секции [Run]"
всё что ты хочешь можно скопировав выполнять в [Run] с флагами для батников shellexec
и чтобы всё было последовательно везде нужно поставить waituntilterminated
чтобы скрыть консольные окна есть флаг runhidden или параиметы тихого запуска
Название: Secret of the Zone ModInstall
Автор: YURSHAT
Использованные библиотеки:
- botva2.dll
- bass.dll
- ISSkin.dll
- InnoCallback.dll
Описание:
Инсталлятор написанный мной по просьбе GZ Mod Team для их мода Secret of the Zone. Выполнен в стиле сталкера. Так как команда не предъявляла никаких доп. опций из особенностей можно выделить поиск игры через реестр и автоматическое указание папки установки.
Скриншоты:
http://i30.fastpic.ru/thumb/2011/1220/e7/2d8a4de6f69d7b88e4312e0127b175e7.jpeg
Ссылки:
Скачать
Автор: YURSHAT
Использованные библиотеки:
- botva2.dll
- bass.dll
- ISSkin.dll
- InnoCallback.dll
Описание:
Инсталлятор написанный мной по просьбе GZ Mod Team для их мода Secret of the Zone. Выполнен в стиле сталкера. Так как команда не предъявляла никаких доп. опций из особенностей можно выделить поиск игры через реестр и автоматическое указание папки установки.
Скриншоты:
http://i30.fastpic.ru/thumb/2011/1220/e7/2d8a4de6f69d7b88e4312e0127b175e7.jpeg
Ссылки:
Скачать
Robkovich
[more=Пример на IsDone06final]1. Рядом со скриптом должна быть папка tools в которой лежат Unpack.bat , Pack.bat , 1.dll , maker.exe
2. "Дополнительные файлы" должны быть запакованы в freearc архив Data.arc и находится рядом с Setup.exe
3. "Тестовый прогон" читать в справке по isDone что это такое и с чем его едят.
Код: #define NeedSize "5000000000"
;#define records
[Setup]
AppName=ISDone
AppVerName=ISDone
DefaultDirName={pf}\ISDone
DefaultGroupName=ISDone Example
OutputDir=.
OutputBaseFilename=Setup
VersionInfoCopyright=ProFrager
SolidCompression=yes
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif
[Files]
Source: tools\Unpack.bat; DestDir: {app}; Flags: dontcopy
Source: tools\Pack.bat; DestDir: {app}; Flags: dontcopy
Source: tools\1.dll; DestDir: {app}; Flags: dontcopy
Source: tools\maker.exe; DestDir: {app}; Flags: dontcopy
Source: Include\unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
#ifdef records
Source: records.inf; 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;
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;
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;
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
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.OnClick := @CancelButtonOnClick;
CreateControls;
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
ISDoneCancel:=0;
ExtractTemporaryFile('unarc.dll');
ExtractTemporaryFile('Unpack.bat');
ExtractTemporaryFile('Pack.bat');
ExtractTemporaryFile('1.dll');
ExtractTemporaryFile('maker.exe');
#ifdef precomp
PCFVer:={#precomp};
#else
PCFVer:=0;
#endif
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 0, @ProgressCallback) then begin
repeat
if not SrepInit('',512,0) then break;
if not PrecompInit('',128,PCFVer) then break;
if not FileSearchInit(true) then break;
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\Unpack.bat'), '', ExpandConstant('{app}'), '...',false) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\Pack.bat'), '', 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=Пример на IsDone06final]1. Рядом со скриптом должна быть папка tools в которой лежат Unpack.bat , Pack.bat , 1.dll , maker.exe
2. "Дополнительные файлы" должны быть запакованы в freearc архив Data.arc и находится рядом с Setup.exe
3. "Тестовый прогон" читать в справке по isDone что это такое и с чем его едят.
Код: #define NeedSize "5000000000"
;#define records
[Setup]
AppName=ISDone
AppVerName=ISDone
DefaultDirName={pf}\ISDone
DefaultGroupName=ISDone Example
OutputDir=.
OutputBaseFilename=Setup
VersionInfoCopyright=ProFrager
SolidCompression=yes
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif
[Files]
Source: tools\Unpack.bat; DestDir: {app}; Flags: dontcopy
Source: tools\Pack.bat; DestDir: {app}; Flags: dontcopy
Source: tools\1.dll; DestDir: {app}; Flags: dontcopy
Source: tools\maker.exe; DestDir: {app}; Flags: dontcopy
Source: Include\unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
#ifdef records
Source: records.inf; 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;
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;
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;
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
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.OnClick := @CancelButtonOnClick;
CreateControls;
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
ISDoneCancel:=0;
ExtractTemporaryFile('unarc.dll');
ExtractTemporaryFile('Unpack.bat');
ExtractTemporaryFile('Pack.bat');
ExtractTemporaryFile('1.dll');
ExtractTemporaryFile('maker.exe');
#ifdef precomp
PCFVer:={#precomp};
#else
PCFVer:=0;
#endif
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 0, @ProgressCallback) then begin
repeat
if not SrepInit('',512,0) then break;
if not PrecompInit('',128,PCFVer) then break;
if not FileSearchInit(true) then break;
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\Unpack.bat'), '', ExpandConstant('{app}'), '...',false) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\Pack.bat'), '', 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;
Название: Kaspersky Anti-Virus
Автор: / Автор данного скрипта: Lunch / Edison007
Версия: 1.0.0.3 (07022012)
Описание и особенности:
В качестве модуля распаковки используется "IsDone v.06 final".
Требуется расширенная версия Inno Setup.
http://i5.pixs.ru/thumbs/5/2/2/welcpng_6021002_3958522.jpg
Ссылка
Автор: / Автор данного скрипта: Lunch / Edison007
Версия: 1.0.0.3 (07022012)
Описание и особенности:
В качестве модуля распаковки используется "IsDone v.06 final".
Требуется расширенная версия Inno Setup.
http://i5.pixs.ru/thumbs/5/2/2/welcpng_6021002_3958522.jpg
Ссылка
Всем доброй ночи! помогите пожалуйста создал скрипт по шаблону, но после завершения установки почему-то идёт откат изменений вот скрипт гляньте пожалуйста, может найдёте ошибку http://rghost.ru/36955393
Добавлено:
и ещё вопрос, как сделать выбор языка чтобы зависил от выбора инстолятора.
Добавлено:
да и сразу ещё пока не забыл как добиться вот такого эффекта при запуски инсталла см скрин http://i069.radikal.ru/1203/5d/54e4b84e51cf.jpg
Добавлено:
и ещё вопрос, как сделать выбор языка чтобы зависил от выбора инстолятора.
Добавлено:
да и сразу ещё пока не забыл как добиться вот такого эффекта при запуски инсталла см скрин http://i069.radikal.ru/1203/5d/54e4b84e51cf.jpg
Добрый день всем, такой вопрос, при сборке проги столкнулся с проблемой когда ключи то бишь лицензия и настройки находятся а реестре по пути HKU\ S-1-5-21-4081702588-4109725515-3233493883-500\Software\ChemTable Software\далее прога и ключ в бинаре. ( прописываю в секцию [Registry]) Понятно что это ветка S-1-5-21-4081702588..... на всех компах разная, поэтому при установке выдаёт ошибку 87, вопрос: как обойти или как решить эту проблему, где об этом написано??? знаю что другие репакеры эту проблему решили, и походу работают они в NSIS
вчера пол ночи сидел и понел что если делать инстал меньши (т.е. рядом архив кидать) то он ошибку выдаёт, а если всё в один то нету. может тут поможите
Добавлено:
Цитата:
я конечно, не особо шарю в этом, но попробуй без этого обойдись просто убери его и всё
Добавлено:
Цитата:
S-1-5-21-4081702588-4109725515-3233493883-500
я конечно, не особо шарю в этом, но попробуй без этого обойдись просто убери его и всё
TimonDVD
Вопрос про ветки в реестре к Inno не имеют отношения. Это тебе сюда нужно обратиться, либо скачать мануал.
Вопрос про ветки в реестре к Inno не имеют отношения. Это тебе сюда нужно обратиться, либо скачать мануал.
SotM
может по моему вопросу поможешь?
может по моему вопросу поможешь?
Скачал Inno Setup Unpacker, но не могу понять как извлечь файлы из инсталятора нужного. Подскажите, пожалуйста.
Xant1k
Если у тебя унпакер распаковывает инсталлятор, (в окошке проги увидишь все файлы дистрибутива) потом выбираешь нужный, и сверху кнопочка "Извлечь"
Если у тебя унпакер распаковывает инсталлятор, (в окошке проги увидишь все файлы дистрибутива) потом выбираешь нужный, и сверху кнопочка "Извлечь"
Hell_Dog2011 #define ArcLocation "{src}\*.bin" вот почему он возле создает setup-1a.bin а это не архив фриарка потому делает откат просто сделай так #define ArcLocation "{src}\Data-A.bin"
Xant1kInno Setup Unpacker не все может распаковать если установшик зашифрован или от restools просто посмотри файлы в папке temp
Xant1kInno Setup Unpacker не все может распаковать если установшик зашифрован или от restools просто посмотри файлы в папке temp
TimonDVD
Дело в том что вообще не вижу, после установки, папки с прогой в program files. Мало того еще и левый поисковик устанавливается, а если в инсталяторе снять галки с установки этой дребедени то невозможно софтину поставить. Пришлось пойти на поводу.
vint56 У меня http://www.videohelp.com/download-fMDrSNclz/ffdshow_rev4342_20120228_clsid.exe и судя по тому, чем мне подсказали его распаковывать, человек им же пользуется.
Дело в том что вообще не вижу, после установки, папки с прогой в program files. Мало того еще и левый поисковик устанавливается, а если в инсталяторе снять галки с установки этой дребедени то невозможно софтину поставить. Пришлось пойти на поводу.
vint56 У меня http://www.videohelp.com/download-fMDrSNclz/ffdshow_rev4342_20120228_clsid.exe и судя по тому, чем мне подсказали его распаковывать, человек им же пользуется.
как добиться вот такого эффекта при запуски инсталла см скрин http://i069.radikal.ru/1203/5d/54e4b84e51cf.jpg
Hell_Dog2011
Цитата:
Это isgsg.dll - в шапке есть. Пример через поиск найдешь..
Цитата:
как добиться вот такого эффекта при запуски инсталла см скрин http://i069.radikal.ru/1203/5d/54e4b84e51cf.jpg
Это isgsg.dll - в шапке есть. Пример через поиск найдешь..
Если стоит сам сборщик Inno Setup, то проверь в папке в меню Пуск
sergey3695
так ну сам длл нашёл, а вот с примером туговато если есть кинь пожалуйста
так ну сам длл нашёл, а вот с примером туговато если есть кинь пожалуйста
Hell_Dog2011 вот чем можно сделать IS GameScript Generator by South либо пример
[Files]
Source: "splsh.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure InitializeWizard;
begin
ExtractTemporaryFile('splsh.jpg');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splsh.jpg',1000,3000,1000,0,255,False,$FFFFFF,10);
end;
Добавлено:
Xant1k вот я скачал вот отсуда
http://sourceforge.net/projects/ffdshow-tryout/files/SVN%20builds%20by%20clsid/64-bit%20builds/
открыл вот этим Inno Setup Unpacker 0.36 http://rghost.ru/36965681
что ты сулку довал после скачки говорит что файл битый
[Files]
Source: "splsh.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure InitializeWizard;
begin
ExtractTemporaryFile('splsh.jpg');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splsh.jpg',1000,3000,1000,0,255,False,$FFFFFF,10);
end;
Добавлено:
Xant1k вот я скачал вот отсуда
http://sourceforge.net/projects/ffdshow-tryout/files/SVN%20builds%20by%20clsid/64-bit%20builds/
открыл вот этим Inno Setup Unpacker 0.36 http://rghost.ru/36965681
что ты сулку довал после скачки говорит что файл битый
vint56
Всё, спасибо за отклик, но уже помогли подсказали GUI (isunpshell) для программы.
Всё, спасибо за отклик, но уже помогли подсказали GUI (isunpshell) для программы.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
Предыдущая тема: поиск
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.