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

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

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

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

Ветеран


Contributor


Сообщения: 1273
Благодарности: 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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



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

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

Отправлено: 11:48, 10-03-2014

 

Аватара для Habetdin


Автор проектов


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

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


odminius, на stackoverflow пишут, что данный способ не работает из-за отсутствия меню "Пуск" в Windows 8 (что логично) и рекомендуют прописывать программы в реестр.
Код: Выделить весь код
[Registry]
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "{#MyAppName}"; ValueData: "{app}\{#MyAppExeName}"
Imperor, а чем должна была помочь смена общей автозагрузки на сею же, только для текущего пользователя?

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 23:19, 11-08-2014 | #1341



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

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


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


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

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


Habetdin, хз, я думал в этом причина. Все константы, которые прописывал работали одинаково и на 7 и на 8.

Вы разбираетесь в прогресс барах для isdone? Несколькими сообщениями ранее я выложил код, можете подсказать почему прогресс бар отображается, но не движется? Что там нужно исправить? Уже всё перепробовал, ничего не помогло.

Цитата:
ISDoneProgressBar1 :=ImgPBCreate(WizardForm.Handle, ExpandConstant('{tmp}\pbbkg.png'), ExpandConstant('{tmp}\pb.png'),7,430,646, 4);
Путь к ресурсам прогресс бара указал, ошибок это не вызвало, но всё-равно не отображается ход установки.
Вся работа на этом встала, перерыл весь инет в поисках решения - ничего. Isdone 0.6 final. Не понимаю, всё ведь правильно прописано, почему не работает?

Последний раз редактировалось Imperor, 12-08-2014 в 11:22.


Отправлено: 07:55, 12-08-2014 | #1342


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


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

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


Habetdin, Imperor, Спасибо огромное, за помощь, зря Вас потревожил. Наши криворукие "тестировщики" просто не смогли найти ярлык в папке автозагрузки (или саму папку) на win 8, и сказали что нифига не работает. Сюрприз был сегодня утром, когда программулина как надо, после старта винды показала всем приветственные окошки .
Всем еще раз спасибо за помосч)

Отправлено: 14:28, 12-08-2014 | #1343


Аватара для AlekseyPopovv

Старожил


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

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


Ребята помогите решить проблему: скрипт собирается, файл запускается всё устанавливается. Ошибка возникает при удалении после окошка "Нажмите кнопку "OK" и удалите не нужные Вам параметры программы {#MyAppName} {#MyAppVersion}.". Скрипт на две программы (Beauty.Checked и Brightness.Checked). Как решить эту проблему?

[Messages]
UninstalledAll=Нажмите кнопку "OK" и удалите не нужные Вам параметры программы {#MyAppName} {#MyAppVersion}.

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Beauty Guide');
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Beauty Guide');
if Beauty.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Beauty Guide');
if Beauty.Checked then
RemoveDir(ExpandConstant('{group}'));
end;
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Удалить Ваши настройки Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Beauty.Checked then
DelTree(ExpandConstant('{userappdata}\BeautyGuide'), True, True, True);
end;
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Удалить плагины Beauty Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Beauty.Checked then
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BeautyGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BeautyGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
begin
if (CurUninstallStep = usDone) then
begin
if Beauty.Checked then
if MsgBox('Программа {#MyAppNameBeauty} {#MyAppBeautyVersion} удалена!',mbconfirmation, mb_ok) = IDYES then
end;
end;
end;
end;
end;
end;
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'bmp_auto_file\shell\Brightness Guide');
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'jpegfile\shell\Brightness Guide');
if Brightness.Checked then
RegDeleteKeyIncludingSubkeys(HKCR, 'pngfile\shell\Brightness Guide');
if Brightness.Checked then
RemoveDir(ExpandConstant('{group}'));
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Удалить Ваши настройки Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Brightness.Checked then
DelTree(ExpandConstant('{userappdata}\BrightnessGuide'), True, True, True);
end;
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Удалить плагины Brightness Guide?',mbconfirmation, mb_yesno) = IDYES then
begin
if Brightness.Checked then
DeleteFile(ExpandConstant('{pf32}\Tint Guide\Photo Plugins\BrightnessGuidePlugin.8bf'));
DeleteFile(ExpandConstant('{pf}\Tint Guide\Photo Plugins64\BrightnessGuidePlugin64.8bf'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide\Photo Plugins'));
RemoveDir(ExpandConstant('{pf32}\Tint Guide'));
RemoveDir(ExpandConstant('{pf}\Tint Guide\Photo Plugins64'));
RemoveDir(ExpandConstant('{pf}\Tint Guide'));
begin
if (CurUninstallStep = usDone) then
begin
if Brightness.Checked then
if MsgBox('Программа {#MyAppNameBrightness} {#MyAppBrightnessVersion} удалена!',mbconfirmation, mb_ok) = IDYES then
end;
end;
end;
end;
end;
end;
end;
end;

Отправлено: 15:31, 12-08-2014 | #1344


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


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

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


Помогите! Второй день сижу в ожидание чуда( Не отображается ход прогресс бара...

Модуль ProgressBar.iss

читать дальше »
Код: Выделить весь код
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,True) 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;

procedure ImgPBSetPosition(PB: TImgPB; Percent: Extended);
var
  NewWidth: Integer;
begin
  if PB.img1<>0 then begin
    NewWidth:=Round(PB.MaxWidth*Percent/1000);
    if PB.Width<>NewWidth then begin
      PB.Width:=NewWidth;
      ImgSetPosition(PB.img1,PB.Left,PB.Top,PB.Width,PB.Height);
      ImgSetVisiblePart(PB.img1, ScaleX(0), ScaleY(0), ScaleX(PB.Width), ScaleY(PB.Height));
      ImgApplyChanges(PB.h);
    end;
  end;
end;

procedure ImgPBDelete(PB: TImgPB);
begin
  if PB.img1<>0 then ImgRelease(PB.img1);
  if PB.img2<>0 then ImgRelease(PB.img2);
  PB.img1:=0;
  PB.img2:=0;
  ImgApplyChanges(PB.h);
end;

procedure ImgPBVisibility(var PB :TImgPB; Visible :boolean);
begin
  ImgSetVisibility(PB.img1,Visible);
  ImgSetVisibility(PB.img2,Visible);
end;

Модуль ISDone:
читать дальше »
Код: Выделить весь код
[Files]
Source: Include\English.ini; DestDir: {tmp}; Flags: dontcopy
Source: Include\Russian.ini; DestDir: {tmp}; Flags: dontcopy
Source: Include\unarc.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\ISDone.dll; DestDir: {tmp}; Flags: dontcopy

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

#ifdef PrecompInside
Source: Include\CLS-precomp.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packjpg_dll1.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\precomp.exe; DestDir: {tmp}; Flags: dontcopy
Source: Include\zlib1.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef SrepInside
Source: Include\CLS-srep.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef MSCInside
Source: Include\CLS-MSC.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef facompress
Source: Include\facompress.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp
  #if precomp == "0.38"
  Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
  #else
    #if precomp == "0.4"
    Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
    #else
      #if precomp == "0.41"
      Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
      #else
        #if precomp == "0.42"
        Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
        #else
        Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp040.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp041.exe; DestDir: {tmp}; Flags: dontcopy
        Source: Include\precomp042.exe; DestDir: {tmp}; Flags: dontcopy
        #endif
      #endif
    #endif
  #endif
#endif
#ifdef unrar
Source: Include\Unrar.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef XDelta
Source: Include\XDelta3.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef PackZIP
Source: Include\7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packZIP.exe; DestDir: {tmp}; Flags: dontcopy
#endif

(code)
type
  TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

const
  PCFonFLY=true;
  notPCFonFLY=false;

var
  LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;

  ISDoneProgressBar1: TImgPB;
  ISDoneCancel:integer;
  ISDoneError:boolean;
  PCFVer:double;

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 ImgPBSetPosition(ISDoneProgressBar1,OveralPct);
  LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
  LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
  Result := ISDoneCancel;
  ImgApplyChanges(WizardForm.Handle);
end;

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

procedure IsDoneAddComponents();
var PBTop:integer;
begin
  PBTop:=ScaleY(50);
  
  ISDoneProgressBar1:=ImgPBCreate(WizardForm.Handle, ExpandConstant('{tmp}\pbbkg.png'), ExpandConstant('{tmp}\pb.png'),7,430,646, 4);

  LabelPct1 := TLabel.Create(WizardForm);
  with LabelPct1 do begin
    Parent       := WizardForm;
    Font.Name    := 'Arial';
    Font.Size    := 10;
    Font.Style   := [fsBold];
    Transparent  := true;
    Font.Color   := $e1cc70;
    AutoSize     := False;
    Left         := ScaleX(540);
    Top          := ScaleY(255);
    Width        := ScaleX(180);
  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;

  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 IsDoneHide();
begin
  LabelPct1.Hide;
  LabelCurrFileName.Hide;
  LabelTime1.Hide;
  LabelTime2.Hide;
  LabelTime3.Hide;
  ImgPBVisibility(ISDoneProgressBar1, False);
end;

procedure IsDoneShow();
 begin
   LabelPct1.Show;
   LabelCurrFileName.Show;
   LabelTime1.Show;
   LabelTime2.Show;
   ImgPBVisibility(ISDoneProgressBar1, true);
 end;


procedure IsDoneUnpack(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
    WizardForm.ProgressGauge.Hide;
    WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
    WizardForm.CancelButton.OnClick := @CancelButtonOnClick;
    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');
    ExtractTemporaryFile('Russian.ini');
                          
// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if BtnGetChecked(LanguagetextButton[1]) then Comps1:=Comps1+TmpValue;     //компонент 1
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagetextButton[2]) then Comps1:=Comps1+TmpValue;     //компонент 2
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagevoiceButton[1]) then Comps1:=Comps1+TmpValue;    //компонент 3
    TmpValue:=TmpValue*2;
    if BtnGetChecked(LanguagevoiceButton[2]) 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
  case ActiveLanguage of
   'eng': ChangeLanguage('English');
   'rus': ChangeLanguage('Russian');
  end;
        if not SrepInit('',512,0) then break;
        if not PrecompInit('',128,PCFVer) then break;
        if not FileSearchInit(true) then break;

        #ifdef Data1
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data1}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data2
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data2}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data3
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data3}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data4
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data4}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        #ifdef Data5
        if not ISArcExtract ( 0, 20, ExpandConstant('{src}\{#Data5}'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
        #endif
        
//    далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)
(*
        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;
  end;
  if (CurStep=ssPostInstall) and ISDoneError then begin
    IsDoneHide;
    BtnSetEnabled(hCancelBtn, False);
    ImgApplyChanges(WizardForm.Handle);
    ImgApplyChanges(WizardForm.Handle);
    Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
  end;
end;


Это часть скрипта, в котором я уверен сидит ошибка!

Последний раз редактировалось Imperor, 12-08-2014 в 21:00.


Отправлено: 20:16, 12-08-2014 | #1345


Аватара для Dodakaedr

Ветеран


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

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


Imperor, возьмите ваше сообщение в тег [code] и занесите под спойлер.
читать дальше »
Прогресс бар не показывает, потому что он скрыт. Нужно изменить родителя
Код: Выделить весь код
with WizardForm.ProgressGauge do
  begin
  Parent:=WizardForm;
  SetBounds(ScaleX(108),ScaleY(283),ScaleX(488),ScaleY(15));
  end;
потом скрыть в процедуре HideComponents
Код: Выделить весь код
procedure HideComponents;
begin; 
  WizardForm.ProgressGauge.Hide;
end;
а в процедуре ShowComponents(CurPageID: Integer) показать
Код: Выделить весь код
procedure ShowComponents(CurPageID: Integer);
begin
  case CurPageID of
      wpInstalling: 
      begin
       WizardForm.ProgressGauge.Show;
    end;
  end;
end;
Инфо в общих чертах, все зависит от самого скрипта

-------
Inno Setup 5 Ultra Unicode


Отправлено: 20:42, 12-08-2014 | #1346


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


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

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


Dodakaedr, вы не правильно меня поняли. Прогресс бар отображается, но загрузка в нем не отображается. Сама установка идет как положено.
Прогресс бар Isdone'ий, такие хитрости с ним не прокатят.
Модуль ProgressBar.iss задействует модуль Isdone.iss b всё это под командованием основного скрипта, на который смысла смотреть нету. так как там только прописаны две строки, которые задействуют эти модули.
В ProgressBar лежат ссылки на png файлы прогресс бара, первый отображает его шаблон, второй ход процесса загрузки. Второй почему то не отображается. Я голову ломаю над этим, никак не помогу выяснить причину. Могу скинуть весь скрипт целиком, если есть желание помочь разобраться. Так то скрипт закончен, только вот эта визуальная неувязочка не даёт мне покоя(

Последний раз редактировалось Imperor, 12-08-2014 в 21:09.


Отправлено: 20:55, 12-08-2014 | #1347


Аватара для nik1967

Старожил


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

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


Imperor,
Цитата Nordek:
Сами посудите: Если вам лень что либо читать, то каково тем кто может вам помочь: создавать картинки, искать аналогичные скрипты, подставлять скины, музыку - в общем полностью подстраиваться под ваше чудо-творение.
Поверьте, тем кто вам может помочь - это абсолютно ненужно. Помогать таким людям не будут: Будут просто игнорировать.
Ведь перед выкладыванием чего либо нужно проверить, чтоб не было ошибок. Правильно?
Тогда нужно представлять все файлы.
И ещё раз: вы не читаете.
Это:
Цитата sergey3695:
кидай-те скрипты с файлами. »
написано для всех. Подчеркну если не заметили: с файлами »

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 22:29, 12-08-2014 | #1348


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


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

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


nik1967, нету ошибок, есть только проблема с прогресс баром. Вот весь мой скрипт(с файлами). http://rghost.ru/57434129
Есть отдельно модулем прогресс-бар, думаю там где-то что-то не так прописано.

Если лень оказать услугу за просто так, то просто сразу так и скажите, я могу и заплатить(в пределах разумного конечно) раз уж на то пошло.

Последний раз редактировалось Imperor, 12-08-2014 в 22:48.


Отправлено: 22:39, 12-08-2014 | #1349


SHVtYW4=


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

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


Цитата Imperor:
Если лень оказать услугу за просто так, то просто сразу так и скажите »
Imperor, Лень значит? Всё ясно.
Ненужно давить. (Как это говориться?): "Брать на понт" (Если не ошибаюсь) - тоже ненужно.
Раз на то дело пошло: мистер, вы темой ошиблись.
Нужно учитывать то, что не все пользуются "ISDone", а значит в идеале - с этим мало знакомы (т.е ISDone использовали как есть с меньшими изменениями) или не знакомы (т.е не пользовались).
Так же нужно учесть что у людей может не быть как времени, так и желания.
На сколько известно, автор: Profrager. Довольно позволительно предположить что автор более грамотен в данной сфере.
Проявите терпение. Не хотите ждать, нужно срочно » сами сообразите куда направить вопрос.
Не знаете? Google.
Не получается найти или скажете что "не находит ничего"? Ложь. "Поиск всегда и везде работает - это просто вы не умеете пользоваться".
Как называется архив который вы скачали, не "ISDone0.6final"? Почему его название не использовать в поиске?

Исследовав ссылки в поисковике, пришёл к выводу:
  1. ISDone 0.6 final
    (в данном варианте, перейдите в Обсуждение)
  2. ISDone.dll

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Последний раз редактировалось Nordek, 13-08-2014 в 04:03.


Отправлено: 03:54, 13-08-2014 | #1350



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты 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




 
Переход