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

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

 

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


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

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


Nightwishh
все равно ошибка при компиляции, чуть другая но все равно есть

Отправлено: 21:06, 16-04-2013 | #211



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

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


Ветеран


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

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


Цитата ilya_klimovich:
unknown identifier" notPCFonFLY" »
В скрипте отсутствуют данные константы:
Код: Выделить весь код
const
  PCFonFLY = true;
  notPCFonFLY = false;
Отсюда и ругань на неизвестный идентификатор. А вообще, когда обращаетесь с проблемой, прикрепляйте к сообщению скрипт(под спойлером), а то получается игра в угадайку.

habib2302, ну серьёзно, вы это можете сделать и сами
читать дальше »
Код: Выделить весь код
#define Components

#ifdef Components
[Components]
Name: AIDA641; Description: {#AIDA641}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
Name: AIDA642; Description: {#AIDA642}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
Name: AIDA643; Description: {#AIDA643}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
#endif

[code]
...
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('AIDA641') then Comps1:=Comps1+TmpValue;     //компонент 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('AIDA642') then Comps1:=Comps1+TmpValue;     //компонент 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('AIDA643') then Comps1:=Comps1+TmpValue;    //компонент 3
#endif

/////////////////////////////////////////////////////////////////////////////////////

  if not ISArcExtract ( 1, 0, ExpandConstant('{src}\AIDA641.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
  if not ISArcExtract ( 2, 0, ExpandConstant('{src}\AIDA642.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
  if not ISArcExtract ( 3, 0, ExpandConstant('{src}\AIDA643.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
...

Последний раз редактировалось saurn, 16-04-2013 в 21:36.

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

Отправлено: 21:24, 16-04-2013 | #212


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


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

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


isdone
PHP код: Выделить весь код

[CustomMessages]
rus.ArcTitle=Распаковка игровых архивов...
rus.ExtractedInfo=Распаковано %1 Мб из %2 Мб
rus
.ArcInfo=Архив: %1 из %2
rus
.AllProgress=Прогресс распаковки архивов:
rus.Extracting=Распаковывается: %1
rus
.Taskbar=%1%%, ждите %2
rus
.ArcRemains=Осталось ждать %1
rus
.LongTime=вечно
rus
.Ending=завершение
rus
.ArcFail=Распаковка архивов не завершена!
rus.ArcBreak=Распаковка архивов прервана!
rus.ArcFinishedHeading=Установка игры {#AppName} не завершена
rus.ArcError=Установка игры {#MyAppName} не была завершена.
rus.ArcTrouble=Пожалуйстаустраните проблему и запустите установку снова.
rus.ArcBroken=Возможноархив %1 повреждён или недостаточно места на диске назначения.
rus.ExtractedFile=Распаковывается файл:
rus.CancelButton=Отменить распаковку
rus
.ArcTitleBack=Откат изменений...
rus.ISDoneError=Ошибка распаковки!

[
UninstallDelete]
TypefilesandordirsName: {app}

[
code]
var
  
LabelPctLabelCurrFileNameLabelStatusRollbackLabelStatusTLabel;
  
ISDoneProgressBarTNewProgressBar;
  
CancelUnpackingBtnHWND;
  
OveralPct,Canceln:integer;
  
CallBack:longword;
  
MyError:boolean;
  
pr:Extended;
  
msgErrorstring;
  
ISDonePBTImgPB;

type
  TCallback 
= function (Pctinteger;CurrentFile:string): longword;

  
TMessage record hWndHWNDmsgwParamWordlParamLongWordTimeTFileTimeptTPointend;

function 
PeekMessage(var lpMsgTMessagehWndHWNDwMsgFilterMinwMsgFilterMaxwRemoveMsgUINT): BOOLexternal 'PeekMessageA@user32.dll stdcall';
function 
TranslateMessage(const lpMsgTMessage): BOOLexternal 'TranslateMessage@user32.dll stdcall';
function 
DispatchMessage(const lpMsgTMessage): Longintexternal 'DispatchMessageA@user32.dll stdcall';
function 
WrapMyCallback(callback:TCallbackparamcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';
function 
ISArcExtract(CurComponent:longword; var OveralPct:integerPctOfTotal:doubleInNameOutPathstringDeleteInFile:booleancallbacklongwordPasswordCfgFileWorkPathString):BOOLexternal 'ISArcExtract@files:ISDone.dll stdcall';
function 
IS7ZipExtract(CurComponent:longword; var OveralPct:integerPctOfTotal:doubleInNameOutPathstringDeleteInFile:booleancallbacklongwordPasswordString):BOOLexternal 'IS7zipExtract@files:ISDone.dll stdcall';
function 
ISRarExtract(CurComponent:longword; var OveralPct:integerPctOfTotal:doubleInNameOutPathstringDeleteInFile:booleancallbacklongwordPasswordString):BOOLexternal 'ISRarExtract@files:ISDone.dll stdcall';
function 
ISPrecompExtract(CurComponent:longword; var OveralPct:integerPctOfTotal:doubleInNameOutFilestringDeleteInFile:booleancallbacklongword):BOOLexternal 'ISPrecompExtract@files:ISDone.dll stdcall';
function 
ISSRepExtract(CurComponent:longword; var OveralPct:integerPctOfTotal:doubleInNameOutFileIdxFilestringDeleteInFile:booleancallbacklongword):BOOLexternal 'ISSrepExtract@files:ISDone.dll stdcall';
function 
ShowChangeDiskWindow(TextDefaultPathSearchFile:string):BOOLexternal 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function 
StartRecord(RecordFileName:stringAllComponents:longword):BOOLexternal 'StartRecord@files:ISDone.dll stdcall';
function 
CheckPoint(CurComponent:Integer):BOOLexternal 'CheckPoint@files:ISDone.dll stdcall';
function 
StopRecord:BOOLexternal 'StopRecord@files:ISDone.dll stdcall';
function 
GetWindowLong(hWndnIndexInteger): Longintexternal 'GetWindowLongA@user32 stdcall delayload';
function 
SetWindowText(hWndLongintlpStringAnsiString): Longintexternal 'SetWindowTextA@user32 stdcall delayload';
function 
cm(MessageString): StringBegin Result:= ExpandConstant('{cm:'Message +'}'End;

Procedure SetTaskBarTitle(TitleAnsiString); var hInteger;
begin
  h
:= GetWindowLong(MainForm.Handle, -8); if <> 0 then SetWindowText(hTitle);
end;

procedure AppProcessMessage;
var
    
MsgTMessage;
begin
    
while PeekMessage(Msg0001) do begin
        TranslateMessage
(Msg);
        
DispatchMessage(Msg);
    
end;
end;

function 
ProgressCallback(PctintegerCurrentFile:string): longword;
begin
   ImgPBSetPosition
(ISDonePB,Pct/10);
   
LabelPct.Caption :=ExpandConstant('{cm:AllProgress} ')+IntToStr(Pct div 10)+'.'+IntToStr(Pct mod 10)+'%';
   
LabelCurrFileName.Caption :=ExpandConstant('{app}\')+CurrentFile;
   AppProcessMessage;
   Result := Cancel;
   ImgApplyChanges(WizardForm.Handle);
end;

procedure Error;
var    n:integer;
begin
    Cancel:= -1;
    Exec(ExpandConstant('
{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);
end;

procedure CreateISDoneComponents;
begin
    LabelPct := TLabel.Create(WizardForm);
  with LabelPct do begin
    AutoSize:=False;
    SetBounds(ScaleX(-70), ScaleY(170), ScaleX(638), ScaleY(17));
    Alignment := taCenter;
    Transparent:=True;
    Font.Name:= '
Georgia'
    Font.Size:= 8;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsItalic];
    Parent := WizardForm;
  end;
    LabelCurrFileName := TLabel.Create(WizardForm);
  with LabelCurrFileName do begin
    AutoSize:=False;
    SetBounds(ScaleX(41), ScaleY(105), ScaleX(638), ScaleY(17));
    Transparent:=True;
    Font.Name:= '
Georgia'
    Font.Size:= 8;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsItalic];
    Caption:= '';
    Parent := WizardForm;
    Hide;
  end;
    LabelStatusRollback := TLabel.Create(WizardForm);
  with LabelStatusRollback do begin
    Parent    := WizardForm;
    AutoSize  := False;
    SetBounds(ScaleX(41), ScaleY(80), ScaleX(400), ScaleY(17));
    Transparent:=True;
    Font.Name:= '
Georgia';
    Font.Size:= 8;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold,fsItalic];
    Caption   := cm('
ArcTitleBack');
  end;
    LabelStatus := TLabel.Create(WizardForm);
  with LabelStatus do begin
    Parent    := WizardForm;
    AutoSize  := False;
    SetBounds(ScaleX(41), ScaleY(80), ScaleX(400), ScaleY(17));
    Transparent:=True;
    Font.Name:= '
Georgia';
    Font.Size:= 8;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold,fsItalic];
    Caption   := cm('
ArcTitle');
  end;
end;

procedure CancelUnpackingOnEnter(hBtn:HWND);
begin
  sndPlaySound(ExpandConstant('
{tmp}WFEnter.wav'),$0001);
     end;

procedure CancelUnpackingOnClick(hBtn:HWND);
begin
  sndPlaySound(ExpandConstant('
{tmp}Click.wav'),$0001);
  if MsgBox( SetupMessage( msgExitSetupMessage ), mbConfirmation, MB_YESNO ) = IDYES then Cancel:= 1;
  end;

Procedure UnpackingISDoneFinished(CurPageID: Integer);
begin
  if (CurPageID = wpFinished) and (Cancel <> 0) then
  begin
      WizardForm.Caption:= ExpandConstant('
{cm:ISDoneError}');
      SetTaskBarTitle(SetupMessage(msgErrorTitle));
      FinishedHeadingLabel.Caption:=cm('
ArcFinishedHeading');
      FinishedHeadingLabel.Font.Color:= $0000C0;    // red (красный)
      FinishedLabel.Caption:= msgError + ExpandConstant(' 
{cm:ArcTrouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}');
      FinishedLabel.Font.Color:= $0000C0;    // red (красный)
end;
  CancelUnpackingBtn:=BtnCreate(WizardForm.Handle,408,297,80,80,ExpandConstant('
{tmp}button.png'),10,False);
  BtnSetEvent(CancelUnpackingBtn,BtnMouseEnterEventID,WrapBtnCallback(@CancelUnpackingOnEnter,1));
  BtnSetEvent(CancelUnpackingBtn,BtnClickEventID,WrapBtnCallback(@CancelUnpackingOnClick,1));
  BtnSetFont(CancelUnpackingBtn,WFButtonFont.Handle);
  BtnSetFontColor(CancelUnpackingBtn,$ffffff,$000000,$ffffff,$B6B6B6);
  BtnSetCursor(CancelUnpackingBtn,GetSysCursorHandle(32649));
  BtnSetVisibility(CancelUnpackingBtn, False);
end;

procedure UnpackingISDone(CurStep: TSetupStep);
begin
   if CurStep = ssPostInstall then
     if MyError then Error;
  if CurStep = ssInstall then begin
    ISDonePB:=ImgPBCreate(WizardForm.Handle, ExpandConstant('
{tmp}ProgressBackground.png'), ExpandConstant('{tmp}ProgressImg.png'),ScaleX(41),ScaleY(130),ScaleX(330),WizardForm.ProgressGauge.Height);
    NewPB:=ImgPBCreate(WizardForm.Handle, ExpandConstant('
{tmp}ProgressBackground2.png'), ExpandConstant('{tmp}ProgressImg.png'),376,130,80,WizardForm.ProgressGauge.Height);
    ImgApplyChanges(WizardForm.Handle);
    PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,CallBackProc(@PBProc,4));
    LabelStatus.Show;
    BtnSetText(CancelUnpackingBtn,WizardForm.CancelButton.Caption);
    BtnSetVisibility(CancelUnpackingBtn, True);
    BtnSetVisibility(hCancelBtn, False);
    LabelPct.Show;
    LabelCurrFileName.Show;
    ProgressInfoLabel.Hide;
    CallBack:=WrapMyCallback(@ProgressCallback,2);
    Cancel:=0;
    OveralPct:=0;

    // Распаковка всех необходимых файлов в папку {tmp}. Это необходимо для того, чтобы
//выполнять установку в момент ssInstall, и секция [Run] выполнялась после установки.
#ifdef records
    ExtractTemporaryFile('
records.inf');
#endif
#ifdef precomp04
    ExtractTemporaryFile('
packjpg_dll.dll');
    ExtractTemporaryFile('
RTconsole.exe');
    ExtractTemporaryFile('
precomp04.exe');
#endif
#ifdef precomp038
    ExtractTemporaryFile('
packjpg_dll.dll');
    ExtractTemporaryFile('
RTconsole.exe');
    ExtractTemporaryFile('
precomp038.exe');
    ExtractTemporaryFile('
zlib1.dll');
#endif
#ifdef unrar
    ExtractTemporaryFile('
Unrar.dll');
#endif

    StartRecord(ExpandConstant('
{src}records.inf'),0);
    repeat
MyError:=true;
       
if not ISArcExtract ( 0, 0, ExpandConstant('
{src}data1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), False {PCFonFLY}) then break;
       //if not ISArcExtract    ( 0, OveralPct, 0, ExpandConstant('
{src}data1.bin'),  ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
       //if not ISArcExtract    ( 0, OveralPct, 0, ExpandConstant('
{src}data2.bin'),  ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
       //if not ISArcExtract    ( 0, OveralPct, 0, ExpandConstant('
{src}data3.bin'),  ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
       //if not ISArcExtract    ( 0, OveralPct, 0, ExpandConstant('
{src}data4.bin'),  ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
       //if not ISArcExtract    ( 0, OveralPct, 0, ExpandConstant('
{src}data5.bin'),  ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
       //if not ISSRepExtract   ( 0, OveralPct, 0, ExpandConstant('
{app}White Gold.srp'), ExpandConstant('{app}White Gold.7z'), '', true, CallBack                 ) then break;
       //if not ISPrecompExtract( 0, OveralPct, 0, ExpandConstant('
{app}NFS.pcf'),  ExpandConstant('{app}NFS.7z'),      true, CallBack                  ) then break;
       //if not IS7ZipExtract   ( 0, OveralPct, 0, ExpandConstant('
{app}White Gold.7z'),   ExpandConstant('{app}'),                true, CallBack, ''               ) then break;
        //  if not ShowChangeDiskWindow('
Пожалуйставставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc'                   ) then break;
        //  if not ISArcExtract    ( 1, OveralPct, 0, ExpandConstant('
{src}rustext.arc'), ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
        //  if not ISArcExtract    ( 2, OveralPct, 0, ExpandConstant('
{src}engtext.arc'), ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
        //  if not ISArcExtract    ( 3, OveralPct, 0, ExpandConstant('
{src}rusvoice.arc'),ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
        //  if not ISArcExtract    ( 4, OveralPct, 0, ExpandConstant('
{src}engvoice.arc'),ExpandConstant('{app}'),                false,CallBack, '',    '',    '') then break;
MyError:=false;
    until true;
    StopRecord;
    BtnSetVisibility(CancelUnpackingBtn, False);
    BtnSetVisibility(hCancelBtn, True);
    BtnSetEnabled(hCancelBtn, False);
    LabelStatus.Hide;
    LabelPct.Hide;
    LabelCurrFileName.Hide;
    ProgressInfoLabel.Show;
  end;
end; 

inno
Цитата:
[code]
const
PCFonFLY = true;
notPCFonFLY = false;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
WFDiskTimerID = 1;
WFSysReqTimerID = 2;
ARTitleTimerID = 2;
в const прописываю и все равно ошибка

Отправлено: 21:33, 16-04-2013 | #213


Старожил


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

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


ilya_klimovich а версия isdone какая 5 или 6

Отправлено: 22:07, 16-04-2013 | #214


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


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

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


а что такое?? просто я не знаю какая версия

Отправлено: 22:11, 16-04-2013 | #215


Старожил


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

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


ilya_klimovich у тебя версия ISDone0.4.2.5
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Data-A.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;

Отправлено: 22:48, 16-04-2013 | #216


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


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

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


vint56
но когда я прописываю так
Цитата:
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Data-A.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
то у меня сразу в процессе установки пишет откат изменений, и ничего не устанавливается

Отправлено: 23:32, 16-04-2013 | #217


Старожил


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

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


ilya_klimovich либо метод сжатия не известен либо возле setup есть еще один файл с расшерением .bin но родной от inno setup вот по этому что не может распаковать архив идёт откат изменений

Отправлено: 00:00, 17-04-2013 | #218


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


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

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


блин ничего не помогает, помогите кто)

Отправлено: 00:23, 17-04-2013 | #219


Аватара для habib2302

Ветеран


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

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


saurn, выдает ошибку

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


Отправлено: 01:22, 17-04-2013 | #220



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




 
Переход