Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 6]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 6]

Аватара для El Sanchez

Ветеран


Contributor


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


Конфигурация

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Отправлено: 19:06, 28-03-2013

 

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


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

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


saurn, а если у меня разных компонента требуют копирования одной и той же папки, то мне надо будет сделать так:?

begin
case CurStep of
ssPostInstall: if IsComponentSelected('copyfolder1','copyfolder2') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
end;

А Если у меня 2 разных компонента требуют копирования 2-х разных папок независимо? То так:

begin
case CurStep of
ssPostInstall: if IsComponentSelected('copyfolder1') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
if IsComponentSelected('copyfolder2') then CopyFolder(ExpandConstant('{app}\2'), ExpandConstant('{app}\3'), True);
end;

Отправлено: 20:39, 26-07-2013 | #861



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Цитата Mat_y:
если у меня разных компонента требуют копирования одной и той же папки »
Код: Выделить весь код
if IsComponentSelected('copyfolder') or IsComponentSelected('copyfolder2') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
Цитата Mat_y:
А Если у меня 2 разных компонента требуют копирования 2-х разных папок независимо? »
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
begin
  case CurStep of
      ssPostInstall:
      begin
          if IsComponentSelected('copyfolder') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
          if IsComponentSelected('copyfolder2') then CopyFolder(ExpandConstant('{app}\2'), ExpandConstant('{app}\3'), True);
      end;
  end;
end;

Последний раз редактировалось saurn, 26-07-2013 в 21:03.


Отправлено: 20:57, 26-07-2013 | #862


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


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

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


saurn, если у меня уже есть

Код: Выделить весь код
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
Я могу просто ниже вставить?? во так:
Код: Выделить весь код
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  //Если необходимо, можно поменять на ssPostInstal

if IsComponentSelected('copyfolder') or IsComponentSelected('copyfolder2') then CopyFolder(ExpandConstant('{app}\1'), ExpandConstant('{app}\2'), True);
Почему компилятор может ругаться на эту строчку уже во время установки, а не сборки:???
Код: Выделить весь код
    try
        Result := oFS.CopyFolder(Source, ModifiedDestPath, Overwrite);
    except
Может проще сюда мой конфиг выложить? Хотя мне нравится учиться... главное учителей не замучить

Отправлено: 21:19, 26-07-2013 | #863


Новый участник


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

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


а кто что пишет в батнике для SrepInside&

Отправлено: 21:50, 26-07-2013 | #864


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


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

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


Ребята, выходные?

Отправлено: 13:25, 27-07-2013 | #865


Аватара для audiofeel

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


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

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


Привет всем, прогресс бар идет поверх "процентов" (Pct). как его сделать поверх прогресс бара

скрипт
читать дальше »

#define MyAppName "Battlefield 3"
#define NeedSize 23140
;#define records

[Setup]
AppName={#MyAppName}
DefaultDirName={pf}\Origin Games\{#MyAppName}
OutputBaseFilename=Touchup
Compression=lzma/ultra64
SolidCompression=true
DisableReadyPage=true
SetupIconFile=Files\app.ico
Uninstallable=false
CreateUninstallRegKey=false
UpdateUninstallLogAppName=false
VersionInfoVersion=1.6.0.0
AppVerName={#MyAppName}
UsePreviousGroup=false
AppendDefaultGroupName=false
DisableProgramGroupPage=true
VersionInfoCompany=Electronic Arts, Inc.
VersionInfoDescription=EA Installer Touchup
VersionInfoCopyright=(C) 2013 MaratRepack
InternalCompressLevel=ultra64

[Files]
Source: dll\b2p.dll; Flags: dontcopy
Source: dll\botva2.dll; Flags: dontcopy
Source: dll\gdiplus.dll; Flags: dontcopy
Source: Files\Button.png; Flags: dontcopy
Source: Files\dir.png; Flags: dontcopy
Source: Files\edit.png; Flags: dontcopy
Source: Files\exit.png; Flags: dontcopy
Source: Files\min.png; Flags: dontcopy
Source: Files\pb.png; Flags: dontcopy
Source: Files\pb1.png; Flags: dontcopy
Source: Files\2work1.jpg; Flags: dontcopy
Source: Files\2work2.jpg; Flags: dontcopy
Source: Files\2work5.jpg; Flags: dontcopy
Source: Files\2work6.jpg; Flags: dontcopy
Source: Files\2workerror.jpg; Flags: dontcopy

Source: ISDone\unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISDone\ISDone.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISDone\facompress.dll; DestDir: {tmp}; Flags: dontcopy

#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy
#endif

[Messages]
ButtonNext=Äàëåå
ButtonCancel=Îòìåíà
ButtonBack=Íàçàä
ButtonWizardBrowse=Èçìåíèòü
SetupAppTitle=EA Installer Touchup
ExitSetupMessage=Âûéòè èç ïðîãðàììû óñòàíîâêè ?
ConfirmUninstall=Óäàëèòü {#MyAppName} ?

[CustomMessages]
Welcome1=Âàñ ïðèâåòñòâóåò Ìàñòåð óñòàíîâêè èãðû %n«{#MyAppName}»
Welcome2=Ðåêîìåíäóåòñÿ çàêðûòü àíòèâèðóñíûå ïðîãðàììû, à òàêæå âñå ïðî÷èå ïðèëîæåíèÿ ïåðåä òåì, êàê ïðîäîëæèòü.%n%nÍàæìèòå «Äàëåå», ÷òîáû ïðîäîëæèòü, èëè «Îòìåíà», ÷òîáû âûéòè èç ïðîãðàììû óñòàíîâêè.
Dir1=Ïðîãðàììà óñòàíîâèò «{#MyAppName}» â ñëåäóþùóþ ïàïêó.
Dir2=Íàæìèòå «Äàëåå», ÷òîáû ïðîäîëæèòü. Åñëè Âû õîòèòå âûáðàòü äðóãóþ ïàïêó, íàæìèòå «Îáçîð».
FreeSpace=Äîñòóïíî ìåñòà íà äèñêå:.....
NeedSpace=Òðåáóåòñÿ ìåñòà äëÿ óñòàíîâêè:.....
AfterInstallSpace=Ïîñëå óñòàíîâêè èãðà çàéìåò:.....
Fin1=Óñòàíîâêà èãðû «{#MyAppName}» %nóñïåøíî çàâåðøåíà
Fin2=%n%nÄëÿ åå çàïóñêà âûáåðèòå ñîîòâåòñòâóþùèé ÿðëûê â ìåíþ "Ïóñê" %nèëè íà Ðàáî÷åì ñòîëå. %n%nÍàæìèòå "Çàâåðøèòü", ÷òîáû âûéòè èç ïðîãðàììû óñòàíîâêè.
ExtractedFile=Èçâëåêàåòñÿ ôàéë:
Extracted=Óñòàíîâêà...
Error=Îøèáêà ðàñïàêîâêè!
ElapsedTime=Ïðîøëî:
RemainingTime=Îñòàëîñü âðåìåíè:
rbc=Îòêàò óñòàíîâêè...
exit=Âûõîä
Error1=Óñòàíîâêà èãðû «{#MyAppName}» íå çàâåðøåíà.
Error2=%nÂî âðåìÿ óñòàíîâêè ïðîèçîøëà îøèáêà, ïîæàëóéñòà îòêëþ÷èòå ñòîðîííèå ïðîãðàììû è ïîâòîðèòå ïîïûòêó óñòàíîâêè. %n%nÍàæìèòå «Çàâåðøèòü», ÷òîáû âûéòè èç ïðîãðàììû óñòàíîâêè.
ready2=Èíôîðìàöèÿ:
ready3=Èãðà áóäåò óñòàíîâëåíà â

[Run]
Filename: {app}\__Installer\Touchup.exe; Parameters: " install -locale ru_RU -installPath ""{app}\"" -autologging -Opt:InstallPB -startmenuIcon=1 -desktopIcon=1"; WorkingDir: {app}\__Installer

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

[_Code]
const
notPCFonFLY = false;
VK_ESCAPE = 27;

var
img1, img2: longint;
Cancel: Integer;
Error: Boolean;
ISDoneError: Boolean;
PCFVer: Double;
edit, dir, work1, work2, work5, work6, workerror, ready: Longint;
hCancelBtn, hNextBtn, hBackBtn, hDirBrowseBtn, Min, CloseBtn, CancelBtn, MinBtn: HWND;
WFButtonFont: TFont;
UpdBtn: TTimer;
WelcomeLabel1, MainLabel, WelcomeLabel2, dir1,
NeedSpaceLabel, Dir1Label, FreeSpaceLabel, Pct, CurrFileName, Time1, Time2, i, ready1, ready2, ready3, ready9 : TLabel;
FreeMB, TotalMB: Cardinal;
SizeInt: Longint;
Enabled: Boolean;
closebnt: HWND;
TimerID: LongWord;
CurrentPicture:integer;
PicList: TStringlist;
imgpanel: tpanel;

#include "AddIss\botva2.iss"
#include "AddIss\progressbar.iss"

var pb: TImgPB;

function ReleaseCapture: Longint; external 'ReleaseCapture@user32.dll stdcall';

type
TCallback = function (OveralPct, CurrentPct: Integer; CurrentFile, TimeStr1, TimeStr2, TimeStr3: PAnsiChar): longword;
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
function GetKeyState(nVirtKey: Integer): ShortInt; external 'GetKeyState@user32 stdcall delayload';

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 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 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 SuspendProc: Boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc: Boolean; external 'ResumeProc@files:ISDone.dll stdcall';

procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0)
end;
function ProgressCallback(OveralPct, CurrentPct: Integer; CurrentFile, TimeStr1, TimeStr2, TimeStr3: PAnsiChar): longword;
begin
if (GetKeyState(VK_ESCAPE) < 0) then begin if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:= 1; end;
if OveralPct<=1000 then ImgPBSetPosition(pb, OveralPct);
Pct.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
CurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, CurrFileName.Font, CurrFileName.Width-ScaleX(100));
Time1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
Time2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
Result := Cancel;
end;

procedure CancelButtonOnClick(h: HWND);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:= 1;
ResumeProc;
end;

function cm(s: PAnsiChar): String;
begin
Result:= ExpandConstant('{cm:'+s+'}');
end;

procedure HideControls;
begin
Pct.Hide; i.Hide; CurrFileName.Hide; Time1.Hide; Time2.Hide; ImgPBDelete(pb);
if Error then begin i.Show; i.Caption:= cm('rbc'); end;
end;

procedure CreateControls;
begin
Pct := TLabel.Create(WizardForm);
with Pct do begin
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
Parent:= WizardForm;
AutoSize:= false;
Left:= ScaleX(350);
Top:= ScaleY(439);
Width:= ScaleX(100);
Transparent:= true;
BringToFront;
end;

CurrFileName := TLabel.Create(WizardForm);
with CurrFileName do begin
Parent:= WizardForm;
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
AutoSize:= false;
Width:= ScaleX(300);
Left:= ScaleX(59);
Top:= ScaleY(375);
Transparent:= true;
end;

Time1 := TLabel.Create(WizardForm);
with Time1 do begin
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
Parent:= WizardForm;
AutoSize:= false;
Width:= ScaleX(200);
Left:= ScaleX(59);
Top:= ScaleY(390);
Transparent:= true;
end;

Time2 := TLabel.Create(WizardForm);
with Time2 do begin
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
Parent:= WizardForm;
AutoSize:= false;
Width:= Time1.Width+ScaleX(40);
Left:= ScaleX(59);
Top:= Time1.Top+ScaleY(15);
Transparent:= true;
end;

i := TLabel.Create(WizardForm);
with i do begin
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
Parent:= WizardForm;
AutoSize:= false;
Width:= Time1.Width+ScaleX(40);
Left:= ScaleX(59);
Top:= ScaleY(360);
Transparent:= true;
Caption:= cm('Extracted');
end;
end;

function CheckError: Boolean;
begin
Result:= not Error;
end;
///

procedure FrameMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
WizardForm.SetFocus;
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0);
end;

function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll');
if not FileExists(ExpandConstant('{tmp}\gdiplus.dll')) then ExtractTemporaryFile('gdiplus.dll');
Result:=True;
end;

//************************************************ [Íà÷àëî - Çàãðóçêà èçîáðàæåíèé è ïîäãîòîâêà âèçàðäà] ***************************************************//
procedure CreateWizardImg;
begin
with WizardForm do begin
BorderStyle := bsNone;
ClientWidth:=ScaleX(733);
ClientHeight:=ScaleY(506);
InnerNotebook.Hide;
OuterNotebook.Hide;
Bevel.Hide;
Center;
Color:= $191919;
end;

work1:= ImgLoad(WizardForm.handle, ExpandConstant('2work1.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);
work2:= ImgLoad(WizardForm.handle, ExpandConstant('2work2.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);
work5:= ImgLoad(WizardForm.handle, ExpandConstant('2work5.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);
work6:= ImgLoad(WizardForm.handle, ExpandConstant('2work6.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);
workerror:= ImgLoad(WizardForm.handle, ExpandConstant('2workerror.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);

edit:= ImgLoad(WizardForm.handle, ExpandConstant('edit.png'), ScaleX(145), ScaleY(380), ScaleX(328), ScaleY(24), True, True);
dir:= ImgLoad(WizardForm.handle, ExpandConstant('dir.png'), ScaleX(143), ScaleY(327), ScaleX(65), ScaleY(48), True, True);
ImgApplyChanges(WizardForm.Handle);
end;
//************************************************ [Êîíåö - Çàãðóçêà èçîáðàæåíèé è ïîäãîòîâêà âèçàðäà] ***************************************************//

//************************************************ [Íà÷àëî - Òåêñòóðû êíîïîê] ***************************************************//
procedure SetStateNewButtons;
begin
with WizardForm.BackButton do begin
BtnSetText(hBackBtn,PAnsiChar(Caption));
BtnSetVisibility(hBackBtn,Visible);
BtnSetEnabled(hBackBtn,Enabled);
BtnRefresh(hBackBtn);
end;
with WizardForm.NextButton do begin
BtnSetText(hNextBtn,PAnsiChar(Caption));
BtnSetVisibility(hNextBtn,Visible);
BtnSetEnabled(hNextBtn,Enabled);
BtnRefresh(hNextBtn);
end;
with WizardForm.CancelButton do begin
BtnSetText(hCancelBtn, PAnsiChar(cm('exit')));
BtnSetVisibility(hCancelBtn,Visible);
BtnSetEnabled(hCancelBtn,Enabled);
BtnRefresh(hCancelBtn);
end;
BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption));
end;

procedure TimerRefreshBtn(S: TObject);
begin
BtnRefresh(hBackBtn);
BtnRefresh(hNextBtn);
BtnRefresh(hCancelBtn);
BtnRefresh(hDirBrowseBtn);
end;

procedure WizardFormBtnClick(hBtn: HWND);
var
Btn:TButton;
begin
case hBtn of
hCancelBtn: Btn:=WizardForm.CancelButton;
hNextBtn: Btn:=WizardForm.NextButton;
hBackBtn: Btn:=WizardForm.BackButton;
hDirBrowseBtn: Btn:=WizardForm.DirBrowseButton;
end;
Btn.OnClick(Btn);
SetStateNewButtons;
BtnRefresh(hBtn);
end;

procedure MinimizeBtnClick(h: HWND);
begin
WizardForm.SetFocus;
ReleaseCapture;
SendMessage(WizardForm.Handle,$112,61472,0);
end;

procedure CancelBtnClick(h: HWND);
begin
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;

procedure ButtonsTextures;
begin
WFButtonFont:=TFont.Create;
WFButtonFont.Name:= 'Arial';
WFButtonFont.Height := -13;
WFButtonFont.Color:= $FFFFFF;
WFButtonFont.Style := [fsBold];

with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle, ScaleX(500), ScaleY(470), ScaleX(93), ScaleY(33), 'button.png', 5, False);
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hNextBtn,WFButtonFont.Handle);
BtnSetFontColor(hNextBtn, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF)
Width:=0;
Height:=0;
end;

with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle, ScaleX(400), ScaleY(470), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False);
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hBackBtn,WFButtonFont.Handle);
BtnSetFontColor(hBackBtn, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF);
Width:=0;
Height:=0;
end;


with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle, ScaleX(620), ScaleY(470), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False);
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hCancelBtn,WFButtonFont.Handle);
BtnSetFontColor(hCancelBtn, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF);
Width:=0;
Height:=0;
end;

CancelBtn:=BtnCreate(WizardForm.Handle, ScaleX(717), ScaleY(0), ScaleX(11), ScaleY(33), ExpandConstant('exit.png'), 1, False);
BtnSetEvent(CancelBtn, BtnClickEventID,WrapBtnCallback(@CancelBtnClick,1));
BtnSetFont(CancelBtn, WFButtonFont.Handle);
BtnSetText(CancelBtn,'');

MinBtn:=BtnCreate(WizardForm.Handle, ScaleX(704), ScaleY(4), ScaleX(8), ScaleY(33), ExpandConstant('min.png'), 1, false);
BtnSetEvent(MinBtn, BtnClickEventID,WrapBtnCallback(@MinimizeBtnClick,1));

with WizardForm.DirBrowseButton do begin
hDirBrowseBtn:=BtnCreate(WizardForm.Handle, ScaleX(502), ScaleY(375), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False);
BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hDirBrowseBtn,WFButtonFont.Handle);
BtnSetFontColor(hDirBrowseBtn, $FFFFFF, $FFFFFF, $FFFFFF, $FFFFFF);
Width:=0;
Height:=0;
end;
end;
//************************************************ [Êîíåö - Òåêñòóðû êíîïîê] ***************************************************//

//************************************************[Íà÷àëî - Ïðîâåðêà ìåñòà íà äèñêå]*************************************************************//
Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.2n', [Float]); StringChange(Result, ',', ',');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = ',')) and (Pos(',', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

function CompareNum(FirstNum, SecondNum: Integer): Boolean;
begin
if FirstNum < SecondNum then Result:= False else Result:= True;
end;

Function MbOrTb(Byte: Extended): AnsiString;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' MB' else
if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' GB' else
Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' TB'
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: AnsiString; gsod: Boolean;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
gsod:= GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if gsod then begin
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTB(FreeMb) + ' (' + IntToStr((FreeMb*100) div TotalMB) + ' %)';
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt);
BtnSetEnabled(hNextBtn, true);
WizardForm.NextButton.Enabled:= true;
end else

if not gsod then begin
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} 0 MB');
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt)
BtnSetEnabled(hNextBtn, false);
WizardForm.NextButton.Enabled:= false;
Exit;
end;
ready2.Caption:=ready2.Caption + ': ' + WizardForm.DirEdit.Text;
end;

procedure NeedSpace;
begin
SizeInt:= {#NeedSize}

FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.SetBounds(ScaleX(145), ScaleY(410), ScaleX(209), ScaleY(13))
FreeSpaceLabel.Parent := WizardForm;
FreeSpaceLabel.Font.Name:='Arial';
FreeSpaceLabel.Font.Size:= 8;
FreeSpaceLabel.Font.Color:= $363636;
FreeSpaceLabel.Transparent:=true;
FreeSpaceLabel.Font.Style := [fsBold];

NeedSpaceLabel := TLabel.Create(WizardForm);
NeedSpaceLabel.SetBounds(ScaleX(145), ScaleY(430), ScaleX(209), ScaleY(13))
NeedSpaceLabel.Parent := WizardForm;
NeedSpaceLabel.Font.Name:='Arial';
NeedSpaceLabel.Font.Size:= 8;
NeedSpaceLabel.Font.Color:= $363636;
NeedSpaceLabel.Transparent:=true;
NeedSpaceLabel.Font.Style:= [fsBold];

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
end;
//************************************************[Êîíåö - Ïðîâåðêà ìåñòà íà äèñêå]*************************************************************//

//************************************************ [Íà÷àëî - Ñîçäàíèå ëåáåëîâ] ***************************************************//
procedure CreateLabel;
begin
UpdBtn:= TTimer.Create(nil);
UpdBtn.Interval:= 1;
UpdBtn.OnTimer:= @TimerRefreshBtn;

MainLabel:= TLabel.Create(WizardForm);
with MainLabel do begin
Left:= ScaleX(0);
Top:= ScaleY(7);
Width:= ScaleX(752);
Height:= ScaleY(34);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Name:='Corbel';
Alignment:= taCenter;
Font.Size:= 10;
Font.Color:= $aeacac;
Font.Style := [fsBold];
Parent:= WizardForm;
OnMouseDown:=@LabelOnMouseDown;
Caption:= WizardForm.Caption;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do begin
Left:= ScaleX(140);
Top:= ScaleY(330);
Width:= ScaleX(450);
Height:= ScaleY(65);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Name:='Arial';
Font.Size:= 10;
Font.Color:=$363636;
Font.Style := [fsBold];
Alignment := taCenter;
Parent:= WizardForm;
Caption:= cm('Welcome1');
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do begin
Left:= ScaleX(140);
Top:= ScaleY(370);;
Width:= ScaleX(450);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:='Arial';
Font.Size:= 9;
Font.Color:=$363636;
Alignment := taCenter;
Font.Style := [fsBold];
Transparent:= true;
Parent:= WizardForm;
Caption:= cm('Welcome2');
end;

with WizardForm.DirEdit do begin
Parent:= WizardForm;
Left:= ScaleX(148);
Top:= ScaleY(384);
BorderStyle:= bsNone;
Color:= $ffffff;
Font.Name:= 'Arial';
Font.Size:= 9;
Font.Color:= $363636;
Width:= ScaleX(324);
Height:= ScaleY(18);
end;

dir1:=TLabel.Create(WizardForm);
with dir1 do begin
Left:= ScaleX(300);
Top:= ScaleY(480);
Width:= ScaleX(450);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8
Font.Style := [fsBold];
Transparent:= true;
Font.Color:= $363636;
Parent:= WizardForm;
Caption:= cm('dir1');
end;

ready1:=TLabel.Create(WizardForm);
with ready1 do begin
Left:= ScaleX(143);
Top:= ScaleY(370);
Width:= ScaleX(550);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8;
Font.Style := [fsBold];
Transparent:= true;
Font.Color:=$363636;
Parent:= WizardForm;
Caption:= cm('ready2')
end;

ready2:=TLabel.Create(WizardForm);
with ready2 do begin
Left:= ScaleX(160);
Top:= ScaleY(385);
Width:= ScaleX(460);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Arial';
Font.Size:= 8;
Font.Style := [fsBold];
Transparent:= true;
Font.Color:=$363636;
Parent:= WizardForm;
Caption:= cm('ready3');
end;
end;
//************************************************ [Êîíåö - Ñîçäàíèå ëåáåëîâ] ***************************************************//

procedure InitializeWizard;
begin
Enabled:= true;
CreateWizardImg;
CreateLabel;
ButtonsTextures;
NeedSpace;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
SetStateNewButtons;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
BtnSetVisibility(hDirBrowseBtn, false);
ImgSetVisibility(edit, false);
ImgSetVisibility(dir, false);
ImgSetVisibility(work1, false);
ImgSetVisibility(work2, false);
ImgSetVisibility(work5, false);
ImgSetVisibility(work6, false);
ImgSetVisibility(ready, false);
ImgSetVisibility(workerror, false);
WizardForm.DirEdit.Hide;
dir1.Hide;
FreeSpaceLabel.Hide;
NeedSpaceLabel.Hide;
ready1.Hide;
ready2.Hide;

if CurPageID = wpWelcome then
begin
WelcomeLabel1.Show;
WelcomeLabel2.Show;
ImgSetVisibility(work1, true);
ImgSetVisibility(img1, true);
end;

if CurPageID = wpSelectDir then
begin
BtnSetVisibility(hDirBrowseBtn, true);
ImgSetVisibility(edit, true);
ImgSetVisibility(dir, true);
WizardForm.DirEdit.Show;
FreeSpaceLabel.Show;
NeedSpaceLabel.Show;
dir1.Show;
dir1.Caption:= cm('dir1');
dir1.Left:= ScaleX(220);
dir1.Top:= ScaleX(343);
ImgSetVisibility(work2, true);
ImgSetVisibility(img2, true);
end;

if CurPageID = wpInstalling then
begin
ImgSetVisibility(work5, true);
end;

if CurPageID = wpFinished then
begin
ImgSetVisibility(work6, true);
WelcomeLabel1.Caption:= cm('Fin1');
WelcomeLabel2.Caption:= cm('Fin2');
WelcomeLabel2.Top:= WelcomeLabel2.Top-ScaleY(23);
WelcomeLabel1.Show;
WelcomeLabel2.Show;
i.Hide;
end;

if (CurPageID = wpFinished) and Error then
begin
WelcomeLabel1.Caption:= cm('Error1');
WelcomeLabel2.Caption:= cm('Error2')
ImgSetVisibility(workerror, true);
end;
ImgApplyChanges(WizardForm.Handle);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then begin
CreateControls;
pb:= ImgPBCreate(WizardForm.Handle, 'pb1.png','pb.png', ScaleX(59), ScaleY(437), ScaleX(620), ScaleY(19));
BtnSetEvent(hCancelBtn, BtnClickEventID, WrapBtnCallback(@CancelButtonOnClick, 1));
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
Cancel:=0;

ExtractTemporaryFile('unarc.dll');
ExtractTemporaryFile('facompress.dll');

#ifdef records
ExtractTemporaryFile('records.inf');
#endif

Error:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, 0,0,0, 0, 512, @ProgressCallback) then begin
repeat
if not FileSearchInit(true) then break;
// if not ISArcExtract ( 0, 0, ExpandConstant('{src}\disk-1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå âòîðîé äèñê è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'disk-2.bin') then break;
// if not ISArcExtract ( 0, 0, ExpandConstant('{src}\disk-2.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå òðåòèé äèñê è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'disk-3.bin') then break;
// if not ISArcExtract ( 0, 0, ExpandConstant('{src}\disk-3.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
// if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå ÷åòâåðòûé äèñê è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'disk-4.bin') then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\disk-4.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Error:=false;
until true;
ISDoneStop;
end;
HideControls;
end;
if (CurStep=ssPostInstall) and Error then begin
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
end;
end;
procedure DeinitializeSetup;
begin
if Enabled then gdipShutdown;
end;


Последний раз редактировалось audiofeel, 29-09-2013 в 15:35.


Отправлено: 21:38, 27-07-2013 | #866


Аватара для audiofeel

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


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

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


Fakt_37
Цитата Fakt_37:
Ребят может вы поможете, возникла такая проблема через SrepInside жму файлы, в батнике пишу arc.exe a -ep1 -dses --dirs -s; -lc- -di -i2 -r -msrep:l256+lzma:a1:mfbt4:d200m:fb128:mc1000:lc8 data.arc packeddata\* (как обычно я делал) но теперь выдаёт ошибку ISDone.dll »
, попробуй новую версию SrepInside0.32 = http://rghost.ru/47598085
и плюс Dll ки от этой версии ISDone 0.6final - for FreeArc Alpha 2012 = http://krinkels.org//downloads.php?do=file&id=110

Последний раз редактировалось audiofeel, 28-07-2013 в 02:27.


Отправлено: 02:21, 28-07-2013 | #867


Новый участник


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

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


Цитата audiofeel:
попробуй новую версию SrepInside0.32 »
дело было совсем в другом, я всё это уже пробовал, надо было всего лишь UAC на компе включить)

Отправлено: 02:37, 28-07-2013 | #868


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


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

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


audiofeel, смотри в function ImgPBCreate
if Length(pb)>0 then Result.img1:=ImgLoad(hParent,pb,Result.Left,Result.Top,Result.Width,Result.Height,True,True) else Result.img1:=0;
if Length(bk)>0 then Result.img2:=ImgLoad(hParent,bk,Left,Top,Width,Height,True,False) else Result.img2:=0;
Последнее значение в ImgLoad
//IsBkg - если IsBkg=True, изображение будет выведено на фоне формы,
// поверх него будут отрисованы графические объекты (TLabel, TBitmapImage и т.д.),
// затем поверх всего будут выведены изображения с флагом IsBkg=False

Отправлено: 11:27, 28-07-2013 | #869


Аватара для audiofeel

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


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

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


sergey3695,Или я не понял или надо в другом месте искать, меняю значения с true на false, прогресс бара не видно или вобще не пикчер лейбл не видно и прогресс бара

type
TImgPB = record h: HWND; Left, Top, Width, Height, MaxWidth: Integer; img1, img2: Longint; end;

function ImgPBCreate(hParent: HWND; bk, pb: AnsiString; Left, Top, Width, Height: Integer): TImgPB;
begin
Result.Left:=Left;
Result.Top:=Top;
Result.Width:=0;
Result.Height:=Height;
Result.MaxWidth:=Width;
Result.h:= hParent;
if Length(pb)>0 then Result.img1:=ImgLoad(hParent, pb, Result.Left, Result.Top, 0, Result.Height, True, false) else Result.img1:= 0;
if Length(bk)>0 then Result.img2:=ImgLoad(hParent, bk, Left, Top, Width, Height, True, true) else Result.img2:=0;
ImgApplyChanges(Result.h);
end;

Отправлено: 12:22, 28-07-2013 | #870



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 6]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход