Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

Widok (23-11-2010 10:55): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Gnom3



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#define NeedMem 512
 
#define Components
 
#define SecondProgressBar
//#define records
[Setup]
OutputBaseFilename=SicMin
AppName=SicMin
AppVerName=SicMin 1.1
Uninstallable=false
CreateUninstallRegKey=false
UpdateUninstallLogAppName=false
WizardImageFile=C:\Program Files (x86)\Inno Setup 5\WizModernImage\SetupClassic06.bmp
WizardSmallImageFile=C:\Program Files (x86)\Inno Setup 5\WizModernSmallImage\MicrosoftModernSmall01.bmp
DisableProgramGroupPage=true
UsePreviousGroup=false
AppendDefaultGroupName=false
DisableStartupPrompt=false
FlatComponentsList=false
UsePreviousSetupType=false
ShowTasksTreeLines=true
ShowLanguageDialog=no
LanguageDetectionMethod=none
SetupIconFile=E:\greylink\Downloads\Коллекция иконок(ico)\Bacardi Black\BacardiLinks.ico
CreateAppDir=false
UsePreviousAppDir=false
AllowUNCPath=false
AppendDefaultDirName=false
 
[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
 
[Files]
Source: Include\ISDone.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: {temp}\Chrome.exe; DestDir: {tmp}
Source: {temp}\DotNet.exe; DestDir: {tmp}
Source: {temp}\DX9.7.10.exe; DestDir: {tmp}
Source: {temp}\Firefox.exe; DestDir: {tmp}
Source: {temp}\Flash.exe; DestDir: {tmp}
Source: {temp}\Opera106.exe; DestDir: {tmp}
Source: {temp}\PhysX.exe; DestDir: {tmp}
Source: {temp}\RuntimePack_Lite_x86_x64.exe; DestDir: {tmp}
Source: {temp}\UExtract.exe; DestDir: {tmp}
Source: {temp}\VCR_Ext_x86_x64.exe; DestDir: {tmp}
#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy nocompression
#endif
#ifdef Components
[Run]
Filename: {tmp}\Chrome.exe; WorkingDir: {tmp}; Components: brous\Chrome
Filename: {tmp}\DotNet.exe; WorkingDir: {tmp}; Components: dll\DotNet
Filename: {tmp}\DX9.7.10.exe; Parameters: "/VERYSILENT"; WorkingDir: {tmp}; Components: dll\DX9
Filename: {tmp}\Firefox.exe; Parameters: " -y -gm2 -fm0"; WorkingDir: {tmp}; Components: brous\Firefox
Filename: {tmp}\Flash.exe; WorkingDir: {tmp}; Components: brous\Flash
Filename: {tmp}\Opera106.exe; Parameters: " -y -gm2 -fm0"; WorkingDir: {tmp}; Components: brous\Opera
Filename: {tmp}\PhysX.exe; Parameters: " /S"; WorkingDir: {tmp}; Components: dll\PhysX
Filename: {tmp}\RuntimePack_Lite_x86_x64.exe; Parameters: " -y -gm2 -fm0"; WorkingDir: {tmp}; Components: dll\Runtime
Filename: {tmp}\VCR_Ext_x86_x64.exe; Parameters: /S; WorkingDir: {tmp}; Components: dll\VCR
Filename: {tmp}\UExtract.exe; Parameters: " -y -gm2 -fm0"; WorkingDir: {tmp}; Components: UExtract
 
[Components]
Name: dll; Description: Системные службы и драйверы; Types: full
Name: dll\VCR; Description: Microsoft Visual C++ 2005-2008-2010 Redistributable Package Extended; Types: full compact
Name: dll\Runtime; Description: Пакет библиотек для исправления ошибок запуска программ; Types: full compact
Name: dll\DotNet; Description: Microsoft .NET Framework 1.1-4.0; Types: full compact
Name: dll\PhysX; Description: Драйвер PhysX; Types: full compact
Name: dll\DX9; Description: DiprectX 9; Types: full compact
Name: UExtract; Description: Распаковщик большинства известных архивов; Types: full
Name: brous; Description: Интернет-браузеры; Types: full
Name: brous\Flash; Description: Комплект Flash-плагинов для браузеров; Types: full compact
Name: brous\Opera; Description: Браузер Opera; Types: full
Name: brous\Firefox; Description: Браузер Firefox; Types: full
Name: brous\Chrome; Description: Браузер Google Chrome; Types: full
#endif
[Code]
var
  LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
  ISDoneProgressBar1: TNewProgressBar;
#ifdef SecondProgressBar
  LabelPct2: TLabel;
  ISDoneProgressBar2:TNewProgressBar;
#endif
  MyCancelButton: TButton;
  Cancel:integer;
  CallBack:longword;
  MyError:boolean;
  PCFVer:double;
 
type
  TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
 
function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function ISDoneInitialize(RecordFileName:AnsiString; TimeType,AllComponents1,AllComponents2,AllComponents3:longword; PrecompVers: double; RecursiveSubDir:boolean; WinHandle, NeededMem:longint; callback:longword):BOOL; external 'ISDoneInitialize@files:ISDone.dll stdcall';
function ISDoneStop:BOOL; external 'ISDoneStop@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)+'%';
#ifdef SecondProgressBar
  if CurrentPct<=1000 then
    ISDoneProgressBar2.Position := CurrentPct;
  LabelPct2.Caption := IntToStr(CurrentPct div 10)+'.'+chr(48 + CurrentPct mod 10)+'%';
#endif
  LabelCurrFileName.Caption:=MinimizePathName(ExpandConstant('{cm:ExtractedFile} ')+CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width);
  LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
  LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
  LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
  Result := Cancel;
end;
 
procedure CancelButtonOnClick(Sender: TObject);
begin
  if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:=1;
end;
 
procedure HideComponents;
begin
  WizardForm.FileNamelabel.Hide;
  ISDoneProgressBar1.Hide;
  LabelPct1.Hide;
  LabelCurrFileName.Hide;
  LabelTime1.Hide;
  LabelTime2.Hide;
  MyCancelButton.Hide;
#ifdef SecondProgressBar
  ISDoneProgressBar2.Hide;
  LabelPct2.Hide;
#endif
end;
 
procedure ShowComponents;
var PBTop:integer;
begin
  PBTop:=ScaleY(50);
  ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
  with ISDoneProgressBar1 do begin
    Parent   := WizardForm.InstallingPage;
    Left     := ScaleX(0);
    Top      := PBTop;
    Width    := ScaleX(365);
    Max      := 1000;
    Height   := WizardForm.ProgressGauge.Height;
  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;
#ifdef SecondProgressBar
  PBTop:=PBTop+ScaleY(25);
  ISDoneProgressBar2 := TNewProgressBar.Create(WizardForm);
  with ISDoneProgressBar2 do begin
    Parent   := WizardForm.InstallingPage;
    Left     := ScaleX(0);
    Top      := PBTop+ScaleY(8);
    Width    := ISDoneProgressBar1.Width;
    Max      := 1000;
    Height   := WizardForm.ProgressGauge.Height;
  end;
  LabelPct2 := TLabel.Create(WizardForm);
  with LabelPct2 do begin
    Parent    := WizardForm.InstallingPage;
    AutoSize  := False;
    Left      := ISDoneProgressBar2.Width+ScaleX(5);
    Top       := ISDoneProgressBar2.Top + ScaleY(2);
    Width     := ScaleX(80);
  end;
#endif
  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(135);
    Caption:=ExpandConstant('{cm:CancelButton}');
    Left:=ScaleX(360);
    Top:=WizardForm.cancelbutton.top;
    OnClick:=@CancelButtonOnClick;
  end;
end;
 
Procedure CurPageChanged(CurPageID: Integer);
Begin
  if (CurPageID = wpFinished) and MyError 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 MyError;
end;
 
procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:longword;
    tmp:integer;
begin
  if CurStep = ssPostInstall then begin  //Если необходимо, можно поменять на ssPostInstall
    WizardForm.ProgressGauge.Hide;
    WizardForm.CancelButton.Hide;
    ShowComponents;
    WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    CallBack:=WrapMyCallback(@ProgressCallback,6);
    Cancel:=0;
 
#ifdef records
    ExtractTemporaryFile('records.inf');
#endif
 
// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('dll\VCR') then Comps1:=Comps1+TmpValue;     //компонент 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('dll\Runtime') then Comps1:=Comps1+TmpValue;     //компонент 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('dll\DotNet') then Comps1:=Comps1+TmpValue;    //компонент 3
    TmpValue:=TmpValue*2;
    if IsComponentSelected('dll\PhysX') then Comps1:=Comps1+TmpValue;    //компонент 4
    TmpValue:=TmpValue*2;
    if IsComponentSelected('dll\DX9') then Comps1:=Comps1+TmpValue;     //компонент 5
    TmpValue:=TmpValue*2;
    if IsComponentSelected('UExtract') then Comps1:=Comps1+TmpValue;     //компонент 6
    TmpValue:=TmpValue*2;
    if IsComponentSelected('brous\Flash') then Comps1:=Comps1+TmpValue;    //компонент 7
    TmpValue:=TmpValue*2;
    if IsComponentSelected('brous\Opera') then Comps1:=Comps1+TmpValue;    //компонент 8
    TmpValue:=TmpValue*2;
    if IsComponentSelected('brous\Firefox') then Comps1:=Comps1+TmpValue;    //компонент 9
    TmpValue:=TmpValue*2;
    if IsComponentSelected('brous\Chrome') then Comps1:=Comps1+TmpValue;    //компонент 10
//    .....
#endif
    repeat
      MyError:=true;
      if not ISDoneInitialize(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, PCFVer, false, MainForm.Handle, {#NeedMem}, CallBack) then break;
      repeat
         MyError:=false;
      until true;
      ISDoneStop;
    until true;
    HideComponents;
    WizardForm.CancelButton.Visible:=true;
    WizardForm.CancelButton.Enabled:=false;
  end;
  if (CurStep=ssPostInstall) and MyError then begin
    Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, tmp);
  end;
end;

Всего записей: 864 | Зарегистр. 14-11-2010 | Отправлено: 21:32 14-11-2010 | Исправлено: Gnom3, 21:54 14-11-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
Widok (23-11-2010 10:55): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru