Скрипты Inno Setup. Помощь и советы [часть 3]

Ответить
 • Просмотры: 15
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Gnom_aka_Lexander »

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



Serega, R.i.m.s.k.y., Давайте остынем и подумаем Изображение Wow6432Node - подключ создаваемый для х32 приложений, ArchitecturesInstallIn64BitMode=x64 - автоматически заставляет писать напрямую, без Wow6432Node, и тогда действительно нужно писать в скрипт разные ключи и проверку IsWin64, а без этой строчки - ArchitecturesInstallIn64BitMode=x64 достаточно указать ключ для х32 и все всегда запишется правильно.
Аватара пользователя
murlakatamenka

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение murlakatamenka »

Лександер, выручай, вообще не доходит что там как 0_о Мне бы пример готовый, яб на нем натренировался, а так я только нашел в их справках про размер и ссылки, про установку не слова
Аватара пользователя
Serega

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Serega »

Цитата Влад2012:



Подскажите, пожалуйста, как реализовать подхват настроек из reg файлов (как в репаках от elchupakabra?
Скрипты Inno Setup. Помощь и советы [часть 3]




вас ист дас elchupakabra?

а вообще почитать в шапке "сборник вопросов", третий пример сверху





Изображение
Аватара пользователя
Хочу_спросить

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Хочу_спросить »

EvilAlex, вот накидал тебе распаковку на базе твоего примера + Библиотечка от Экспедитора.


читать дальше »


[Setup]

AppName=My Program

AppVerName=My Program version 1.5

DefaultDirName={pf}\My Program

DefaultGroupName=My Program

Compression=zip



[Languages]

Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"



[Files]

Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy



[Icons]

Name: "{group}\Удалить"; IconFilename: "{app}\unins000.exe"; Filename: "{app}\unins000.exe"


Код: Выделить всё


var

ProgressBar : TNewProgressBar;

ExtractFile:TNewStaticText;

Button1:TButton;



procedure Extract7z (hWnd, hpb, hst: THandle; fpath, extractPath, pass:pchar); external 'Extract7z@files:is7z.dll stdcall';

procedure CancelExtract; external 'CancelExtract@files:is7z.dll stdcall';



procedure download();

begin

 itd_init;



 //Let's download two zipfiles from my website..

 itd_addfile('http://87.224.140.43/files/setup1.zip',expandconstant('{tmp}\setup1.zip'));



 //Start the download after the "Ready to install" screen is shown

 itd_downloadafter(wpReady);

end;



procedure InitializeWizard();

begin

  download();



  ProgressBar := TNewProgressBar.Create(WizardForm);

  ExtractFile:=TNewStaticText.Create(WizardForm);

  with WizardForm.ProgressGauge do

    begin

      ProgressBar.Left := Left;

      ProgressBar.Top := Top + ScaleX(55);

      ProgressBar.Width := Width;

      ProgressBar.Height := Height;

      ProgressBar.Parent := WizardForm.InstallingPage;

      ProgressBar.max := 100;

      ProgressBar.Position := 0;

      ExtractFile.parent:=WizardForm.InstallingPage;

      ExtractFile.autosize:=false;

      ExtractFile.Width := Width;

      ExtractFile.top:=Top + ScaleX(35);

      ExtractFile.caption:='Распаковка архива 7zip';

    end;

end;



procedure Button1OnClick(Sender: TObject);

begin

 CancelExtract;

end;



procedure CurStepChanged(CurStep: TSetupStep);

begin

  If CurStep=ssPostInstall then

   begin

    Button1:=TButton.create(WizardForm);

    Button1.parent:=WizardForm;

    Button1.width:=135;

    Button1.caption:='Отменить распаковку';

    Button1.left:=260;

    Button1.top:=WizardForm.cancelbutton.top;

    Button1.OnClick:=@Button1OnClick;

    try



  if FileExists (expandconstant('{tmp}\setup1.zip')) then begin  // проверяем наличие файла

     Extract7z (wizardform.handle, progressbar.handle, ExtractFile.handle, ExpandConstant('{tmp}') + '\setup1.7z', ExpandConstant('{app}'), '');

    end;

     Button1.visible:=false;

    except

     MsgBox('Неверный пароль!', mbInformation, MB_OK);

     Button1.visible:=false;

    end;

   end;

end;

 Во вложении архив с библиотечкой и этим-же скриптом.



[b]insombia[/b], 
				Цитата [b]insombia[/b]:
	
	
		
				У кого-то есть закос под шепарда? [url=viewtopic.php?p=2800026#p2800026]»[/url]
		
	
	
У Гугла. [url=http://rghost.ru/4896048]http://rghost.ru/4896048[/url]
Аватара пользователя
Serega

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Serega »

EvilAlex, залей целиком свой скрипт замени вот в этой строчке 7z на zip - пропустил...



Код:

Код: Выделить всё

Extract7z (wizardform.handle, progressbar.handle, ExtractFile.handle, ExpandConstant('{tmp}') + '\setup1.zip', ExpandConstant('{app}'), '');
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение R.i.m.s.k.y. »

Serega, держи 500-ю юбилейную благодарность Изображение
Аватара пользователя
Serega

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение Serega »

Цитата EvilAlex:



а куда и что он установил хз !!!
Скрипты Inno Setup. Помощь и советы [часть 3]




- сюда: DefaultDirName={pf}\My Program - ты сам указываеш, куда распаковывать, мне нужен полный скрипт - иначе никак не проверить.
Аватара пользователя
my-94

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение my-94 »

Ребята помогите текст по середине сделать на 1 и на последней странице и чтобы картинок вообще не было




читать дальше »




[Setup]

AppName=Machinarium

AppVerName=Machinarium

DefaultDirName={pf}\Machinarium

DefaultGroupName=Machinarium

VersionInfoCopyright=Bulat Ziganshin, Victor Dobrov, SotM, CTACKo, Alex Muscle

OutputBaseFilename=setup

OutputDir=.

UsePreviousAppDir=false

DirExistsWarning=no

ShowLanguageDialog=no



[Files]

;Source: *.arc; DestDir: {app}; Flags: nocompression

Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall

Source: compiler:InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy



[Icons]

Name: {group}\Играть; Filename: {app}\machinarium.exe

Name: {group}\Удалить; Filename: {app}\unins000.exe

Name: {commondesktop}\Машинариум; Filename: {app}\machinarium.exe



[Languages]

Name: rus; MessagesFile: compiler:Languages\Russian.isl



[CustomMessages]

rus.ArcBreak=Установка прервана!

rus.ExtractedInfo=Распаковано %1 Мб из %2 Мб

rus.ArcInfo=Архив: %1 из %2

rus.ArcTitle=Распаковка архивов FreeArc

rus.ArcError=Распаковщик FreeArc вернул код ошибки: %1

rus.ArcFail=Распаковка не завершена!

rus.AllProgress=Общий прогресс распаковки: %1%%

rus.ArcBroken=Возможно, архив %1 повреждён%nили недостаточно места на диске назначения.

rus.Extracting=Распаковывается: %1

rus.taskbar=%1%%, жди %2

rus.remains=Осталось ждать %1

rus.LongTime=вечно

rus.ending=завершение

rus.hour= часов

rus.min= мин

rus.sec= сек



[UninstallDelete]

Type: filesandordirs; Name: {app}


Код: Выделить всё


const

    Archives = '{src}\*.arc';    // укажите расположение архивов FreeArc; для внешних файлов строку в [Files] добавлять необязательно



    PM_REMOVE = 1;

    CP_ACP = 0; CP_UTF8 = 65001;

    oneMb = 1048576;



type

#ifdef UNICODE  ; если у вас ошибка на этой строке, то установите препроцессор или исправьте скрипт для вашей версии Inno Setup

    #define A "W"

#else

    #define A "A"  ; точка входа в SetWindowText, {#A} меняется на A или W в зависимости от версии

  ///  PAnsiChar = PChar;  // Required for Inno Setup 5.3.0 and higher. (требуется для Inno Setup версии 5.3.0 и ниже)

#endif

#if Ver < 84018176

    AnsiString = String; // There is no need for this line in Inno Setup 5.2.4 and above (для Inno Setup версий 5.2.4 и выше эта строка не нужна)

#endif



    TMyMsg = record

        hwnd: HWND;

        message: UINT;

        wParam: Longint;

        lParam: Longint;

        time: DWORD;

        pt: TPoint;

    end;



    TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;

    TArc = record Path: string; OrigSize: Integer; Size: Extended; end;



var

    ExtractFile: TLabel;

    lblExtractFileName: TLabel;

    btnCancelUnpacking: TButton;

    CancelCode, n, UnPackError, StartInstall: Integer;

    Arcs: array of TArc;

    msgError: string;

    lastMb: Integer;

    baseMb: Integer;

    totalUncompressedSize: Integer;             // total uncompressed size of archive data in mb

    LastTimerEvent: DWORD;



Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: string; cbMultiByte: integer; lpWideCharStr: string; cchWideChar: integer): longint; external 'MultiByteToWideChar@kernel32.dll stdcall';

Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: integer; lpMultiByteStr: string; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external 'WideCharToMultiByte@kernel32.dll stdcall';



function PeekMessage(var lpMsg: TMyMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';

function TranslateMessage(const lpMsg: TMyMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';

function DispatchMessage(const lpMsg: TMyMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';



Function OemToChar(lpszSrc, lpszDst: AnsiString): longint; external 'OemToCharA@user32.dll stdcall';

function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';

function SetWindowText(hWnd: Longint; lpString: String): Longint; external 'SetWindowText{#A}@user32 stdcall delayload';



function GetTickCount: DWord; external 'GetTickCount@kernel32';

function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';

function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl';



procedure AppProcessMessage;

var

    Msg: TMyMsg;

begin

    while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin

        TranslateMessage(Msg);

        DispatchMessage(Msg);

    end;

end;



// Перевод числа в строку с точностью 3 знака (%.3n) с округлением дробной части, если она есть

Function NumToStr(Float: Extended): String;

Begin

    Result:= Format('%.3n', [Float]); StringChange(Result, ',', '.');

    while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Length(Result) > 1) do

        SetLength(Result, Length(Result)-1);

End;



function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;



Function Size64(Hi, Lo: Integer): Extended;

Begin

    Result:= Lo;

    if Lo= 0 then Result:= origsize;

    except

        Result:= -63;  //    ArcFail

    end;

end;



// Scans the specified folders for archives and add them to list

function FindArcs(dir: string): Extended;

var

    FSR: TFindRec;

Begin

    Result:= 0;

    if FindFirst(ExpandConstant(dir), FSR) then begin

        try

            repeat

                // Skip everything but the folders

                if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then CONTINUE;

                n:= GetArrayLength(Arcs);

                // Expand the folder list

                SetArrayLength(Arcs, n +1);

                Arcs[n].Path:= ExtractFilePath(ExpandConstant(dir)) + FSR.Name;

                Arcs[n].Size:= Size64(FSR.SizeHigh, FSR.SizeLow);

                Result:= Result + Arcs[n].Size;

                Arcs[n].OrigSize := ArchiveOrigSize(Arcs[n].Path)

                totalUncompressedSize := totalUncompressedSize + Arcs[n].OrigSize

            until not FindNext(FSR);

        finally

            FindClose(FSR);

        end;

    end;

End;



// Sets the TaskBar title

Procedure SetTaskBarTitle(Title: String); var h: Integer;

Begin

    h:= GetWindowLong(MainForm.Handle, -8); if h  0 then SetWindowText(h, Title);

End;



// Converts milliseconds to human-readable time

// Конвертирует милисекунды в человеко-читаемое изображение времени

Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String;

Begin

    if detail                               {hh:mm:ss format} then

        Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2)

    else if Ticks/3600 >= 1000              {more than hour}  then

        Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m

    else if Ticks/60 >= 1000                {1..60 minutes}   then

        Result:= IntToStr(Ticks/60000) +m+' '+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) +s

   else Result:= IntToStr(Ticks/1000) +s    {less than one minute}

End;



// The main callback function for unpacking FreeArc archives

function FreeArcCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer;

var

    percents, Remaining: Integer;

    s: String;

begin

    if GetTickCount - LastTimerEvent > 1000 then begin

        // This code will be executed once each 1000 ms (этот код будет выполняться раз в 1000 миллисекунд)

        //  ....

        // End of code executed by timer

        LastTimerEvent := LastTimerEvent+1000;

    end;

    

    if string(what)='filename' then begin

        // Update FileName label

        lblExtractFileName.Caption:= FmtMessage( cm( 'Extracting' ), [OemToAnsiStr( str )] )

    end else if (string(what)='write') and (totalUncompressedSize>0) and (Mb>lastMb) then begin

        // Assign to Mb *total* amount of data extracted to the moment from all archives

        lastMb := Mb;

        Mb := baseMb+Mb;

    

        // Update progress bar

        WizardForm.ProgressGauge.Position:= Mb;



        // Show how much megabytes/archives were processed up to the moment

        percents:= (Mb*1000) div totalUncompressedSize;

        s := FmtMessage(cm('ExtractedInfo'), [IntToStr(Mb), IntToStr(totalUncompressedSize)]);

        if GetArrayLength(Arcs)>1 then

            s := s + '. '+FmtMessage(cm('ArcInfo'), [IntToStr(n+1), IntToStr(GetArrayLength(Arcs))])

        ExtractFile.Caption := s



        // Calculate and show current percents

        percents:= (Mb*1000) div totalUncompressedSize;

        s:= FmtMessage(cm('AllProgress'), [Format('%.1n', [Abs(percents/10)])]);

        if Mb > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((totalUncompressedSize - Mb)/Mb)) else Remaining:= 0;

        if Remaining = 0 then SetTaskBarTitle(cm('ending')) else begin

            s:= s + '.  '+FmtMessage(cm('remains'), [TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)])

            SetTaskBarTitle(FmtMessage(cm('taskbar'), [IntToStr(percents/10), TicksToTime(Remaining, 'h', 'm', 's', false)]))

        end;

        WizardForm.FileNameLabel.Caption := s

    end;

    AppProcessMessage;

    Result:= CancelCode;

end;



// Extracts all found archives

function UnPack(Archives: string): Integer;

var

    totalCompressedSize: Extended;

    callback: longword;

    FreeMB, TotalMB: Cardinal;

begin

    // Display 'Extracting FreeArc archive'

    lblExtractFileName.Caption:= '';

    lblExtractFileName.Show;

    ExtractFile.caption:= cm('ArcTitle');

    ExtractFile.Show;

    // Show the 'Cancel unpacking' button and set it as default button

    btnCancelUnpacking.Caption:= WizardForm.CancelButton.Caption;

    btnCancelUnpacking.Show;

    WizardForm.ActiveControl:= btnCancelUnpacking;

    WizardForm.ProgressGauge.Position:= 0;

    // Get the size of all archives

    totalUncompressedSize := 0;

    totalCompressedSize := FindArcs(Archives);

    WizardForm.ProgressGauge.Max:= totalUncompressedSize;

    // Other initializations

    callback:= WrapFreeArcCallback(@FreeArcCallback,4);   //FreeArcCallback has 4 arguments

    StartInstall:= GetTickCount;    {время начала распаковки}

    LastTimerEvent:= GetTickCount;

    baseMb:= 0



    for n:= 0 to GetArrayLength(Arcs) -1 do

    begin

        lastMb := 0

        CancelCode:= 0;

        AppProcessMessage;

        try

            // Pass the specified arguments to 'unarc.dll'

            Result:= FreeArcExtract (callback, 'x', '-o+', '-dp' + AnsiToUtf8( ExpandConstant('{app}') ), '--', AnsiToUtf8(Arcs[n].Path), '', '', '', '', '');

            if CancelCode < 0 then Result:= CancelCode;

        except

            Result:= -63;  //    ArcFail

        end;

        baseMb:= baseMb+lastMb



        // Error occured

        if Result  0 then

        begin

            msgError:= FmtMessage(cm('ArcError'), [IntToStr(Result)]);

            GetSpaceOnDisk(ExtractFileDrive(ExpandConstant('{app}')), True, FreeMB, TotalMB);

            case Result of

                -1: if FreeMB < 32 {Мб на диске} then msgError:= SetupMessage(msgDiskSpaceWarningTitle)

                    else msgError:= msgError + #13#10 + FmtMessage(cm('ArcBroken'), [ExtractFileName(Arcs[n].Path)]);

                -127:   msgError:= cm('ArcBreak');    //Cancel button

                -63:    msgError:= cm('ArcFail');

            end;

//          MsgBox(msgError, mbInformation, MB_OK);    //сообщение показывается на странице завершения

            Log(msgError);

            Break;    //прервать цикл распаковки

        end;

    end;

    // Hide labels and button

    WizardForm.FileNameLabel.Caption:= '';

    lblExtractFileName.Hide;

    ExtractFile.Hide;

    btnCancelUnpacking.Hide;

end;



procedure CurStepChanged1(CurStep: TSetupStep);

begin

    if CurStep = ssPostInstall then

    begin

        UnPackError:= UnPack(Archives)

        if UnPackError = 0 then

            SetTaskBarTitle(SetupMessage(msgSetupAppTitle))

        else

        begin

            // Error occured, uninstall it then

            Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);    //откат установки из-за ошибки unarc.dll

            SetTaskBarTitle(SetupMessage(msgErrorTitle))

            WizardForm.Caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')

        end;

    end;

end;



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

//    if CurStep = ssInstall then

//      if UnPack(Archives)  0 then Abort;



Procedure CurPageChanged1(CurPageID: Integer);

Begin

    if (CurPageID = wpFinished) and (UnPackError  0) then

    begin // Extraction was unsuccessful (распаковщик вернул ошибку)

        // Show error message

        WizardForm.FinishedLabel.Font.Color:= $0000C0;    // red (красный)

        WizardForm.FinishedLabel.Height:= WizardForm.FinishedLabel.Height * 2;

        WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) + #13#10#13#10 + msgError;

    end;

End;



procedure InitializeWizard1();

begin

    with WizardForm.ProgressGauge do

    begin

        // Create a label to show current FileName being extracted

        lblExtractFileName:= TLabel.Create(WizardForm);

        lblExtractFileName.parent:=WizardForm.InstallingPage;

        lblExtractFileName.autosize:=false;

        lblExtractFileName.Width:= Width;

        lblExtractFileName.top:=Top + ScaleY(35);

        lblExtractFileName.Caption:= '';

        lblExtractFileName.Hide;



        // Create a label to show percentage

        ExtractFile:= TLabel.Create(WizardForm);

        ExtractFile.parent:=WizardForm.InstallingPage;

        ExtractFile.autosize:=false;

        ExtractFile.Width:= Width;

        ExtractFile.top:=lblExtractFileName.Top + ScaleY(16);

        ExtractFile.caption:= '';

        ExtractFile.Hide;

    end;



    // Create a 'Cancel unpacking' button and hide it for now.

    btnCancelUnpacking:=TButton.create(WizardForm);

    btnCancelUnpacking.Parent:= WizardForm;

    btnCancelUnpacking.SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.top, WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);

    btnCancelUnpacking.OnClick:= @btnCancelUnpackingOnClick;

    btnCancelUnpacking.Hide;

end;



[Setup]





; --- Source: ISSkinSetupSilver.iss ------------------------------------------------------------

[Files]

; Add the ISSkin DLL used for skinning Inno Setup installations.

Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy



; Add the Visual Style resource contains resources used for skinning,

; you can also use Microsoft Visual Styles (*.msstyles) resources.

Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy



  [code]

// Importing LoadSkin API from ISSkin.DLL

procedure LoadSkin(lpszPath: String; lpszIniFileName: String);

external 'LoadSkin@files:isskin.dll stdcall';



// Importing UnloadSkin API from ISSkin.DLL

procedure UnloadSkin();

external 'UnloadSkin@files:isskin.dll stdcall';



// Importing ShowWindow Windows API from User32.DLL

function ShowWindow(hWnd: Integer; uType: Integer): Integer;

external 'ShowWindow@user32.dll stdcall';



function InitializeSetup2(): Boolean;

begin

  ExtractTemporaryFile('Office2007.cjstyles');

  LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');

  Result := True;

end;



procedure DeinitializeSetup2();

begin

  // Hide Window before unloading skin so user does not get

  // a glimpse of an unskinned window before it is closed.

  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);

  UnloadSkin();

end;





[Setup]





; --- Dispatching code ------------------------------------------------------------



[code]



procedure CurStepChanged(CurStep: TSetupStep);

begin

  CurStepChanged1(CurStep);

end;



procedure CurPageChanged(CurPageID: Integer);

begin

  CurPageChanged1(CurPageID);

end;



procedure InitializeWizard();

begin

  InitializeWizard1();

end;



function InitializeSetup(): Boolean;

begin

  Result := InitializeSetup2(); if not Result then exit;

end;



procedure DeinitializeSetup();

begin

  DeinitializeSetup2();

end;
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение R.i.m.s.k.y. »

EvilAlex, Держи, тока консольное окошко на распаковке будет, тут уж звиняй, мож кто подскажет, как на прогрессбаре распаковку показать, вместо консоли.
Ответить

Вернуться в «Автоматическая установка приложений»