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

Компьютерный форум 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

 

Аватара для diman_21Ru

Старожил


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

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


а где найти ansi-версию и какую надо именно ?

5.5.1 стоит расширенная на ней ошибку выдает (

Отправлено: 19:10, 10-01-2014 | #1831



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


diman_21Ru, там-же, где нашел юникодную, я думаю какая именно - я так понял - обычная или расширенная? это уже нужно смотреть скрипт - если используются функции расширенной версии, то только расширенную, если нет, то достаточно обычной с официального сайта сабжа.

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

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:16, 10-01-2014 | #1832


Аватара для diman_21Ru

Старожил


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

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


спасибо

Отправлено: 19:18, 10-01-2014 | #1833


Аватара для Ivan_009

Ветеран


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

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


Не могу никак настроить прогресс бар при отмене установки установка все равно продолжается помогите пожалуйста...

Вот код

Код: Выделить весь код
type
  TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
  TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

const
  PCFonFLY=true;
  notPCFonFLY=false;

  GWL_STYLE = -16;

  WS_MINIMIZEBOX = $20000;
  WS_MAXIMIZEBOX = $10000;

var
  LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
  ISDoneProgressBar1: TNewProgressBar;
#ifdef SecondProgressBar
  LabelPct2: TLabel;
  ISDoneProgressBar2:TNewProgressBar;
#endif
  ISDoneCancel:integer;
  ISDoneError:boolean;
  PCFVer:double;

  BmpFile: TBitmapImage;
  about: TNewButton;

  pfunc: LongWord;
  TimerID: LongWord;
  intOldCurrWidth : Integer;
  ProgressBar_BitmapImage: TBitmapImage;
  ProgressBar_Edit : TEdit;
  ProgressBar_ImageHeight : integer;

procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

function MessageBox(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal): Integer; external 'MessageBoxA@user32.dll stdcall';

// Ôóíêöèè äëÿ ðàáîòû ñ òàéìåðîì
function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';

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 WizardForm.ProgressGauge.Position := OveralPct;
  Result := ISDoneCancel;
end;

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

procedure AboutClick(Sender: TObject);
begin
  MessageBox(WizardForm.Handle, '{#Release}', 'Î ðåëèçå', MB_OK or MB_ICONINFORMATION);
end;

// Ôóíêöèÿ âûçûâàåìàÿ ïî òàéìåðó
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
    CurrWidth : single;
begin
    // Èñïîëüçóåì òåêóùåå ñîñòîÿíèå ñòàíäàðòíîãî Ïðîãðåññ Áàðà (ÏÁ)
    with WizardForm.ProgressGauge do
    begin
        CurrWidth := ( Position * ScaleX(430) ) / Max;            // Âû÷èñëÿåì êàêîé øèðèíû äîëæåí áûòü íàø ÏÁ
        if intOldCurrWidth <> Round( CurrWidth ) then       // Åñëè øèðèíà ïîêà ÷òî òàêàÿ æå, òî íå áóäåì ïîêà ÷òî ðèñîâàòü, ÷òîáû èçáåæàòü ëèøíèõ îáíîâëåíèé ôîðìû
        begin
            intOldCurrWidth := Round( CurrWidth );
            // Òåïåðè÷à "ðèñóåì" íàø ÏÁ
            ProgressBar_BitmapImage.SetBounds( 0, 0, intOldCurrWidth, ProgressBar_ImageHeight );
            ProgressBar_BitmapImage.Show();                     // Ïîêàçûâàåì åãî âî âñåé êðàñå
        end;
    end;
end;

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Skin.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');
  Result:= true
end;

procedure HideControls;
begin
  WizardForm.FileNamelabel.Hide;
  ISDoneProgressBar1.Hide;
  LabelPct1.Hide;
  LabelCurrFileName.Hide;
  LabelTime1.Hide;
  LabelTime2.Hide;
 #ifdef SecondProgressBar
  ISDoneProgressBar2.Hide;
  LabelPct2.Hide;
#endif
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;
#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;
 end;

procedure InitializeWizard();
begin
  WizardForm.Width:=ScaleX(654);
  WizardForm.Height:=ScaleY(423);
  WizardForm.Position:=poScreenCenter;
  WizardForm.InnerNotebook.Hide;
  WizardForm.OuterNotebook.Hide;
  WizardForm.Color:=$000000;

SetWindowLong(WizardForm.handle, GWL_STYLE, GetWindowLong(WizardForm.handle, GWL_STYLE)and(not WS_MINIMIZEBOX)and(not WS_MAXIMIZEBOX));
SetWindowLong(WizardForm.Handle, (-20), GetWindowLong(WizardForm.Handle, (-20)) or $2000000);

  ExtractTemporaryFile('Welcome.bmp');
  ExtractTemporaryFile('Finished.bmp');
  ExtractTemporaryFile('{#PB_ImageFile}');

  BmpFile:= TBitmapImage.Create(WizardForm)
  BmpFile.Stretch:= True;
  BmpFile.SetBounds(ScaleX(0),ScaleY(0), ScaleX(654), ScaleY(355))
  BmpFile.Parent:= WizardForm;

with WizardForm.Bevel do
begin
  Parent:=WizardForm;
  Left := ScaleX(0);
  Top := ScaleY(355);
  Width := ScaleX(654);
  Height := ScaleY(2);
end;

with WizardForm.NextButton do
begin
  Parent:=WizardForm;
  Left := ScaleX(450);
  Top := ScaleY(365);
  Width := ScaleX(95);
  Height := ScaleY(25);
end;

with WizardForm.CancelButton do
begin
  Parent:=WizardForm;
  Left := ScaleX(550);
  Top := ScaleY(365);
  Width := ScaleX(95);
  Height := ScaleY(25);
end;

with WizardForm.BackButton do
begin
  Parent:=WizardForm;
  Left := ScaleX(350);
  Top := ScaleY(365);
  Width := ScaleX(95);
  Height := ScaleY(25);
end;

About := TNewButton.Create(WizardForm);
with About do
begin
  Parent := WizardForm;
  Left := ScaleX(3);
  Top := ScaleY(365);
  Width := ScaleX(95);
  Height := ScaleY(25);
  Caption := 'Î ðåëèçå';
  OnClick := @AboutClick;
end;

// Ñîçäàåì íàø Edit, ÷òîáû ó íàøåãî ÏÁ áûëà áîëåå-ìåíåå íîðìàëüíàÿ ðàìêà.
    ProgressBar_Edit := TEdit.Create( WizardForm );
    with ProgressBar_Edit do
    begin
        // Ñîçäàåì åãî íà ìåñòå ñòàíäàðòíîãî ÏÁ
        Left := ScaleX(115);
        Top := ScaleY(367);
        Width := ScaleX(430);
        Height := ScaleY(21);
        Enabled := False;
        ReadOnly := True;
        // Ôîíîâûé öâåò äåëàåì òî÷íî òàêîé æå êàê ó ôîðìû.
        Color := $000000;
        Parent := WizardForm;
    end;

    ProgressBar_BitmapImage := TBitmapImage.Create( WizardForm );
    with ProgressBar_BitmapImage do
    begin
        // Çàãðóæàåì êàðòèíêó
        Bitmap.LoadFromFile( ExpandConstant( '{tmp}\' ) + '{#PB_ImageFile}' );
        Parent := ProgressBar_Edit;
        Stretch := True;        // Îí äîëæåí ðàñòÿãèâàòüñÿ
        Hide;                   // Ïðÿ÷åì åãî äî ïîðû äî âðåìåíè
    end;

    // Ïîëó÷àåì âûñîòó äëÿ êàðòèíêè
    ProgressBar_ImageHeight := ProgressBar_Edit.Height - 2;
    // Ïðÿ÷åì ñòàíäàðòíûé ÏÁ
    WizardForm.ProgressGauge.Hide;
end;

procedure ShowComponents(CurPageID: Integer);
//var
 // pfunc: LongWord;
begin
  BmpFile.Hide;
  ProgressBar_Edit.Hide;
Case CurPageID of
wpWelcome:
begin

  BmpFile.Show;
  BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Welcome.bmp'))
end;
wpSelectDir:
begin

end;
wpSelectComponents:
begin

end;
wpReady:
begin

end;
wpInstalling:
begin
  BmpFile.Show;
  BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Welcome.bmp'))
  About.Hide;
  ProgressBar_Edit.Show;
  // Óñòàíàâëèâàåì òàéìåð
  //pfunc := WrapTimerProc( @OnTimer, 4 );
  //TimerID := SetTimer( 0, 0, 100, pfunc );
  //intOldCurrWidth := 0;
end;
wpFinished:
begin
  About.Hide;
  BmpFile.Show;
  WizardForm.NextButton.Left := ScaleX(550);
  BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Finished.bmp'))
  KillTimer( 0, TimerID );
end;
end;
end;

Procedure UnpackingISDoneFinished(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 UnpackingISDone(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
    // Óñòàíàâëèâàåì òàéìåð
    pfunc := WrapTimerProc( @OnTimer, 4 );
    TimerID := SetTimer( 0, 0, 100, pfunc );
    intOldCurrWidth := 0;

    //WizardForm.ProgressGauge.Hide;
    WizardForm.CancelButton.OnClick:=@CancelButtonOnClick;
    CreateControls;
    WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    ISDoneCancel:=0;

// Ðàñïàêîâêà âñåõ íåîáõîäèìûõ ôàéëîâ â ïàïêó {tmp}.

ExtractTemporaryFile('unarc.dll');

#ifdef PrecompInside
ExtractTemporaryFile('CLS-precomp.dll');
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('packjpg_dll1.dll');
ExtractTemporaryFile('precomp.exe');
ExtractTemporaryFile('zlib1.dll');
#endif
#ifdef SrepInside
ExtractTemporaryFile('CLS-srep.dll');
#endif
#ifdef MSCInside
ExtractTemporaryFile('CLS-MSC.dll');
#endif
#ifdef facompress
    ExtractTemporaryFile('facompress.dll'); //óñêîðÿåò ðàñïàêîâêó .arc àðõèâîâ.
#endif
#ifdef records
    ExtractTemporaryFile('records.inf');
#endif
#ifdef precomp
  #if precomp == "0.38"
    ExtractTemporaryFile('precomp038.exe');
  #else
    #if precomp == "0.4"
      ExtractTemporaryFile('precomp040.exe');
    #else
      #if precomp == "0.41"
        ExtractTemporaryFile('precomp041.exe');
      #else
        #if precomp == "0.42"
          ExtractTemporaryFile('precomp042.exe');
        #else
          ExtractTemporaryFile('precomp038.exe');
          ExtractTemporaryFile('precomp040.exe');
          ExtractTemporaryFile('precomp041.exe');
          ExtractTemporaryFile('precomp042.exe');
        #endif
      #endif
    #endif
  #endif
#endif
#ifdef unrar
    ExtractTemporaryFile('Unrar.dll');
#endif
#ifdef XDelta
    ExtractTemporaryFile('XDelta3.dll');
#endif
#ifdef PackZIP
    ExtractTemporaryFile('7z.dll');
    ExtractTemporaryFile('PackZIP.exe');
#endif

    ExtractTemporaryFile('English.ini');

// Ïîäãîòàâëèâàåì ïåðåìåííóþ, ñîäåðæàùóþ âñþ èíôîðìàöèþ î âûäåëåííûõ êîìïîíåíòàõ äëÿ ISDone.dll
// ìàêñèìóì 96 êîìïîíåíòîâ.
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;     //êîìïîíåíò 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue;     //êîìïîíåíò 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue;    //êîìïîíåíò 3
    TmpValue:=TmpValue*2;
    if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;    //êîìïîíåíò 4
//    .....
// ñì. ñïðàâêó
#endif

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

        if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), '', false, 'kis', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

//    äàëåå íàõîäÿòñÿ çàêîììåíòèðîâàíûå ïðèìåðû ðàçëè÷íûõ ôóíêöèé ðàñïàêîâêè (÷òîáû êàæäûé ðàç íå ëàçèòü â ñïðàâêó çà ïðèìåðàìè)
(*
        if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
        if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\CODMW2.7z'), ExpandConstant('{app}\data1'), false, '') then break;
        if not ISRarExtract    ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break;
        if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break;
        if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'),    ExpandConstant('{app}\data.7z'), true) then break;
        if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'),   ExpandConstant('{app}\out.dat'), false, false) then break;
        if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break;
        if not ISExec          ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break;
        if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå âòîðîé äèñê è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'CODMW_2.arc') then break;

//    ðàñïàêîâêà ãðóïïû ôàéëîâ ïîñðåäñòâîì âíåøíåãî ïðèëîæåíèÿ

        FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1);
        ExecError:=false;
        while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin
          InFilePath:=ISGetName(0);
          OutFilePath:=ISGetName(1);
          OutFileName:=ISGetName(2);
          ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false);
        end;
        ISFindFree(FindHandle1);
        if ExecError 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;

procedure CurStepChanged(CurStep: TSetupStep);
begin
UnpackingISDone(CurStep); // IsDone Ðàñïàêîâêà àðõèâîâ
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  ShowComponents(CurPageID);
  UnpackingISDoneFinished(CurPageID); // IsDone Çàâåðøåíèå ðàñïàêîâêè
end;

procedure DeinitializeSetup();
begin
  UnloadSkin();
  KillTimer( 0, TimerID );
end;

Отправлено: 21:59, 11-01-2014 | #1834


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


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

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


Помогите ! ! ! Зашёл в тупик не могу добавить шрифты в инстолятор

читать дальше »
#define GameID "{5F05CE9B-7768-490E-9A71-C6R92B4EX123}" ;Ид инстолятора
#define MyAppName "DRZLoy Mod Pack 0.8.10" ;Название инстоллятора
#define MyInfoVer "1.0" ;Версия инсталлятора
#define MyAppVer "8.0.10" ;Версия игры
#define MyAppPublisher "DRZLoy" ;Имя компании или человека кто делал
#define MyAppURL "http://drzloywot.blogspot.com/" ;Ссылка для лого

;#include "Components.iss" ;Компаненты, они же моды
#include "Messages.iss" ;Сообщение, надписи на кнопках и т.д.

[Types]
Name: custom; Description: Full installation; Flags: iscustom

[Components]
Name: KMP; Description: DRZLoy Mod Pack; Types: custom; Flags: fixed
Name: KMP\X; Description: 1. XVM.;
Name: KMP\X\P; Description: а. Полная версия XVM; Flags: checkablealone ;
Name: KMP\X\L; Description: б. Без оленимера, версия XVM ; Flags: checkablealone ;
Name: KMP\Z; Description: 2. Модификация звуком.;
Name: KMP\Z\L; Description: a. Озвучка лампочки.;
Name: KMP\Z\G; Description: b. Озвучка перезарядки .;
Name: KMP\H; Description: 3. Модификация моделей танков .;
Name: KMP\H\T; Description: a. Серые трупы танков .; Flags: checkablealone ;
Name: KMP\P; Description: 4.Яркие платформы .;
Name: KMP\4; Description: 5.Часы .;
Name: KMP\I; Description: 6.Иконки в Ушах .;
Name: KMP\D; Description: 7.Отключение дерганья в динамической камере.;
Name: KMP\ZO; Description: 8.Многопозиционный снайперский режим.;
Name: KMP\N; Description: 9.Настраиваемое боевое меню.;
Name: KMP\K; Description: 10.Кто и чем по вам стреляли .;
Name: KMP\S; Description: 11.Блокировка выстрела по союзнику и трупам.;
Name: KMP\ZAS; Description: 12.Уведомление союзников о засвете.;
Name: KMP\PD; Description: 13.Боевой интефейс от Zayaz.;
Name: KMP\T; Description: 14.Расширенные подсказки к умениям и навыкам танкового экипажа.;


[Setup]
AppId={{#GameID}
AppName={#MyAppName}
AppVersion={#MyAppVer}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}

//====={ Ссылки }=====\\
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}

//====={ Папка устанвки }=====\\
;DefaultDirName={pf}\{#MyAppName}
DefaultDirName={code:MyDirName}
DefaultGroupName={#MyAppName}

//====={ Картинки }=====\\
SetupIconFile=Files\wot_ico.ico
WizardSmallImageFile=Files\img2.bmp
WizardImageFile=Files\img1.bmp

//====={ Отключение строниц }=====\\
DisableProgramGroupPage=yes

//====={ Лицензия и Фак }=====\\
LicenseFile=licensia.txt
InfoBeforeFile=faq.rtf

//====={ Папка создания и название сетапа }=====\\
OutputDir=.\Output
OutputBaseFilename=Setup

//====={ Сжатие сетапа }=====\\
InternalCompressLevel=ultra64
Compression=lzma2/ultra64
SolidCompression=true

//====={ Основные файлы сетапа }=====\\
[Files]
Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption
//===БОльшая чать файлов==\\
Source: "MODS\MODI\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
//=== XVM===\\
Source: "MODS\XVM\PR\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\X\P;
Source: "MODS\XVM\L\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\X\L;

///===Модификации Звуков===\\\
Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\Z\L;
Source: "MODS\ZVUKI\LAMPO4KA\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\Z\L;
Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.8.10\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\Z\G;
Source: "MODS\ZVUKI\GOTOV\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\Z\G;
//===Текст====\\\
Source: "{app}\res\text\*"; DestDir: "{app}\res_mods\0.8.10\text\"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: KMP\T;
Source: "MODS\TEXT\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\T;

// ====Модификации мира===\
Source: "MODS\PLAT\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P;

//===Шкурки===\\
Source: "MODS\HKURKI\TRUP\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\H\T;
//===Всякая херь===\
Source: "MODS\4ASI\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\4;
Source: "MODS\IKON\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\I;
Source: "MODS\DIMCAM\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\D;
Source: "MODS\ZOM\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\ZO;
Source: "MODS\NASTRAMEN\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\N;
Source: "MODS\KTO\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\K;
Source: "MODS\SAFE\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\S;
Source: "MODS\ZASVET\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\ZAS;
Source: "MODS\PDEMAG\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\PD;



//====={ Выбор языка }=====\\
[Languages]
Name: "eng"; MessagesFile: "compiler:Default.isl"
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

[code]
function MyDirName(S:String): String;
var
InsPath: String;
er: boolean;
myFile:String;
begin
Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
if er and (InsPath<>'') then //если ключ существует и там что-то записано
begin
Result := InsPath;
end;
end;

procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)
end;

procedure RedesignWizardForm;
var
i: integer;
BtnPanel: TPanel;
BtnImage: TBitmapImage;

begin
ExtractTemporaryFile('logo.bmp')
BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=0
Top:=315
Width:=179
Height:=46
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=WizardForm
end;
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')
Parent:=BtnPanel
end;

with WizardForm do
begin
Caption := ExpandConstant('{cm:Main}');
end;

with WizardForm.WizardBitmapImage do
begin
Width := ScaleX(502);
end;

with WizardForm.WelcomeLabel2 do
begin
Visible := False;
end;

with WizardForm.WelcomeLabel1 do
begin
Visible := False;
end;

with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Width := ScaleX(502);
Height := ScaleY(70);
end;

with WizardForm.PageDescriptionLabel do
begin
Visible := False;
end;

with WizardForm.PageNameLabel do
begin
Visible := False;
end;

with WizardForm.WizardBitmapImage2 do
begin
Width := ScaleX(502);
end;

with WizardForm.FinishedLabel do
begin
Visible := False;
end;

with WizardForm.FinishedHeadingLabel do
begin
Visible := False;
end;
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
end;





Название шрифтов: ANDLSO.TTF, ASROCK7SEGMENT.TTF, CONSTAN.TTF, CONSTANB.TTF, CONSTANI.TTF, CONSTANZ.TTF, CUPRUM.TTF, NeogreyMedium.otf ,NeogreyRegular.otf, XVMSymbol_4.0.ttf
Путь к шрифтам: MODS\FONTS\

Отправлено: 00:39, 13-01-2014 | #1835


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


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

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


У меня такой вопрос как сделать при установке поле в которое вписываеш слово и оно в последующем заноситься в ini файл в определенное место и сохраняеться в карневой папке установленого проекта

Отправлено: 09:12, 13-01-2014 | #1836


Ветеран


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

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


Цитата NAMAT:
У меня такой вопрос как сделать при установке поле в которое вписываеш слово и оно в последующем заноситься в ini файл в определенное место и сохраняеться в карневой папке установленого проекта »
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.


[INI]
Filename: {app}\Test.ini; Section: TestSection; Key: TestKey; String: {code:IniStr};


[Code]
var
    InputPage: TInputQueryWizardPage;


function IniStr(const Input: String): String;
begin
    Result := InputPage.Values[0];
end;


procedure InitializeWizard;
begin
    InputPage := CreateInputQueryPage(wpSelectDir, 'Caption', 'Description', 'SubCaption');

    InputPage.Add('Input Value:', False);
    InputPage.Values[0] := 'Test_Value';
end;

Последний раз редактировалось saurn, 14-01-2014 в 02:43.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:36, 13-01-2014 | #1837


Аватара для habib2302

Ветеран


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

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


доброе время суток. как сделать так, чтобы при выборе компонента portable в SelectDirPage стояла кнопка установить вместо кнопки далее?
вот пример
читать дальше »
Код: Выделить весь код
Procedure CurPageChanged(CurPageID: Integer);
Begin
  Case CurPageID of
  wpSelectTasks:
     if IsComponentSelected('VKMusic\instal') then
  begin
    WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
  end;
  wpSelectDir: if WizardForm.Tag = 1 then

  begin
    WizardForm.SelectDirPage.Notebook.ActivePage:= WizardForm.SelectComponentsPage;
    WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectComponents);
    WizardForm.Hint:= WizardForm.PageDescriptionLabel.Caption; // çàïîìíèòü SetupMessage(msgSelectDirDesc)
    WizardForm.PageDescriptionLabel.Caption:= SetupMessage(msgSelectComponentsDesc);
  end;
  wpSelectComponents: if WizardForm.Tag = 1 then
  begin
    WizardForm.SelectComponentsPage.Notebook.ActivePage:= WizardForm.SelectDirPage;
    WizardForm.DiskSpaceLabel.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
    WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir);
    WizardForm.PageDescriptionLabel.Caption:= WizardForm.Hint; // èíà÷å âìåñòî íàçâàíèÿ ïðîãðàììû [name]
      if IsComponentSelected('VKMusic\Portable') then
  begin
    WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppName} Portable'
  end;
  end;
 end;
end;

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 13:46, 14-01-2014 | #1838


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


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

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


habib2302, может просто добавить аналогично твоему же примеру
читать дальше »
Код: Выделить весь код
Procedure CurPageChanged(CurPageID: Integer);
Begin
  Case CurPageID of
  wpSelectTasks:
     if IsComponentSelected('VKMusic\instal') then
  begin
    WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
  end;
  wpSelectDir: if WizardForm.Tag = 1 then

  begin
    WizardForm.SelectDirPage.Notebook.ActivePage:= WizardForm.SelectComponentsPage;
    WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectComponents);
    WizardForm.Hint:= WizardForm.PageDescriptionLabel.Caption; // çàïîìíèòü SetupMessage(msgSelectDirDesc)
    WizardForm.PageDescriptionLabel.Caption:= SetupMessage(msgSelectComponentsDesc);
  end;
  wpSelectComponents: if WizardForm.Tag = 1 then
  begin
    WizardForm.SelectComponentsPage.Notebook.ActivePage:= WizardForm.SelectDirPage;
    WizardForm.DiskSpaceLabel.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
    WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir);
    WizardForm.PageDescriptionLabel.Caption:= WizardForm.Hint; // èíà÷å âìåñòî íàçâàíèÿ ïðîãðàììû [name]
      if IsComponentSelected('VKMusic\Portable') then
  begin
    WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + '{#MyAppName} Portable';
    WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
  end;
  end;
 end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:37, 14-01-2014 | #1839


Ветеран


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

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


habib2302,
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
    case CurPageID of
        wpSelectDir: if IsComponentSelected('VKMusic\instal') then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall);
    end;
end;

Отправлено: 20:13, 14-01-2014 | #1840



Компьютерный форум 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




 
Переход