|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Inno Setup. Прочие вопросы |
|
Inno Setup. Прочие вопросы
|
Ветеран Сообщения: 1272 |
Профиль | Отправить PM | Цитировать
Внимание!!! Данная тема не предназначена для обсуждения скриптов! Для этого создана отдельная тема! Скрипты Inno Setup. Помощь и советы Описание
Inno Setup - это бесплатный инсталлятор для программ Windows. Впервые появился в 1997 году, Inno Setup сегодня, конкурирует и даже превосходит многие коммерческие инсталляторы по возможностям и стабильности. Основные достоинства:
Основной бесплатный конкурент - NSIS. Последняя стабильная версия - 6.3.1 [10.06.2024]. История версий. Официальные сборки Inno Setup 6.3.1: Редакторы iss-скриптов:
Дополнительно
Справка
Русификаторы
Распаковщики/декомпиляторы инсталляторов Inno Setup
Параметры командной строки инсталлятора (ссылка) |
|
Отправлено: 00:25, 24-08-2009 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Цитата El Sanchez:
|
|
------- Отправлено: 08:22, 22-08-2012 | #351 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать В шапке не нашел описание командной строки инсталлятора из русской справки, решил это дело исправить.
/SP- Отключает страницу "Эта программа установит... Вы хотите продолжить?" инсталлятора. Выполнится только если DisableStartupPrompt секции [Setup] равна yes. /SILENT, /VERYSILENT Установка в ускоренном или очень ускоренном режиме. При установке в ускоренном режиме окно мастера и фоновое окно мастера не отображаются, отображается только окно прогресса. При очень ускоренной установке окно прогресса тоже не отображается. Остальная установка проходит как обычно - отображаются сообщения об ошибках в ходе установки, страница приветствия (если ее отображение не отменено директивой DisableStartupPrompt или параметром '/SP-' командной строки). Если после установки необходима перезагрузка, команды '/NORESTART' не дано и установка проходит в ускоренном режиме, появится сообщение "Перезагрузить компьютер?". Если режим установки очень ускоренный, система перезагрузится не спрашивая. /SUPPRESSMSGBOXES Instructs Setup to suppress message boxes. Only has an effect when combined with '/SILENT' and '/VERYSILENT'. The default response in situations where there's a choice is:• Yes in a 'Keep newer file?' situation. • No in a 'File exists, confirm overwrite.' situation. • Abort in Abort/Retry situations. • Cancel in Retry/Cancel situations. • Yes (=continue) in a DiskSpaceWarning/DirExists/DirDoesntExist/NoUninstallWarning/ExitSetupMessage/ConfirmUninstall situation. • Yes (=restart) in a FinishedRestartMessage/UninstalledAndNeedsRestart situation.5 message boxes are not suppressible:• The About Setup message box. • The Exit Setup? message box. • The FileNotInDir2 message box displayed when Setup requires a new disk to be inserted and the disk was not found. • Any (error) message box displayed before Setup (или Uninstall) could read the command line parameters. • Any message box displayed by [code ] support function MsgBox./LOG Указывает инсталлятору создать log-файл в папке TEMP для подробного отчета о действиях и событиях в секции [Run], предпринятых в ходе установки. Применяется при отслеживании ошибок. Например, если вы подозреваете, что файл не был удален, хотя должен был, log-файл сообщит, что файл был действительно пропущен и почему. Log-файлу присваивается уникальное имя на базе текущей даты. (Существующие файлы не перезаписываются и не дополняются Информация, содержащаяся в log-файле, техническая и поэтому не может быть понята пользователем. /LOG="filename" Параметр похож на /LOG, но в отличие от него позволяет указать фиксированный путь/имя файла для log-файла. Если файл с указанным именем уже существует, он будет заменен. Если файл не может быть создан, установка прервется и выдаст сообщение об ошибке. /NOCANCEL Не дает пользователю прервать установку, отключая кнопку Отменить и игнорируя клики на кнопке Закрыть. Используется в комбинации с '/SILENT' или '/VERYSILENT'. /NORESTART Указывает инсталлятору не перезагружать компьютер даже если это необходимо. /RESTARTEXITCODE=код выхода Задает инсталлятору код, который он должен возвратить, если необходима перезагрузка. Используется с '/NORESTART'. См. также/LOADINF="filename" Указывает инсталлятору загрузить параметры установки из указанного файла после проверки командной строки. Этот файл может быть подготовлен с помощью '/SAVEINF=' command. Не забудьте ставить кавычки при использовании имен, содержащих пробелы. /SAVEINF="filename" Указывает инсталлятору сохранять параметры установки в указанный файл. Не забудьте ставить кавычки при использовании имен, содержащих пробелы. /LANG=language Задает используемый язык. language задает имя языка, заданного в параметре секции [Languages]. При использовании параметра /LANG появляется диалог Выбор языка установки. /DIR="x:\dirname" Меняет имя папки, заданное по умолчанию, на странице Выбор папки назначения. Должен быть задан полный путь. /GROUP="folder name" Меняет имя папки на странице Выбор папки меню Пуск. Если директива DisableProgramGroupPage секции [Setup] равна yes, этот параметр командной строки игнорируется. /NOICONS Указывает инсталлятору проверять, выбрана ли команда Не создавать значков на странице Выбор папки меню Пуск. /TYPE=type name Overrides the default setup type. If the specified type exists and isn't a custom type, then any /COMPONENTS parameter will be ignored. /COMPONENTS="comma separated list of component names" Меняет выбраные по умолчанию компоненты. В этом случае параметр командной строки указывает инсталлятору менять тип установки на Выборочный. If no custom type is defined, this parameter is ignored. Only the specified components will be selected; the rest will be deselected. If a component name is prefixed with a "*" character, any child components will be selected as well (except for those that include the dontinheritcheck flag). If a component name is prefixed with a "!" character, the component will be deselected. This parameter does not change the state of components that include the fixed flag.
За перевод русской справки спасибо BagIra и bugron. |
Отправлено: 12:00, 22-08-2012 | #352 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Здравствуйте, подскажите а что делать инсталятор расспаковывает только файлы удаления (unins001 и unins001.dat) а сами файлы нет.
|
Отправлено: 10:22, 23-08-2012 | #353 |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:38, 23-08-2012 | #354 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать boss911, скрипт покажу, и ещё вопрос при компиляции выскакивает ошибка типа Default.isl не определяет версию inno setup
|
Отправлено: 10:43, 23-08-2012 | #355 |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать by_gangster
Какая версия компилятора (анси/юникод), официал или рестулс? Поставьте 5.5.1 с официального сайта и проверьте на нем еще раз. |
Отправлено: 11:28, 23-08-2012 | #356 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать boss911, всё сорри моя ошибка насчёт Default.isl а вот проблема с расспаковкой осталась
;by Evgeniy Bytaikis #include "botva2.iss" #include "BASS_Module.iss" [Setup] AppName=Sigerous Mod для COP (fix 19.03) AppVerName=Sigerous Mod v2.2 DefaultDirName={reg:HKLM\SOFTWARE\GSC Game World\STALKER-COP,InstallPath} InfoBeforeFile=embedded\InfoBefore.rtf WizardImageFile=embedded\WizardImage.bmp WizardSmallImageFile=embedded\logo.bmp SetupIconFile=embedded\sgm.ico Compression=lzma2/max OutputDir=. [Registry] Root: HKLM; Subkey: "Software\GSC Game World\STALKER-COP"; ValueName: "SigerousVers"; ValueType: String; ValueData: "2.2"; [Languages] Name: rus; MessagesFile: compiler:Languages\Russian.isl [CustomMessages] rus.ArcCancel=Отменить распаковку 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= сек [Files] Source: *.arc; DestDir: {app}; Flags: dontcopy Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall Source: compiler:InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy Source: BASS_Files\*; DestDir: {tmp}; Flags: dontcopy Source: music.mp3; DestDir: {tmp}; Flags: dontcopy Source: ISSkin.dll; DestDir: {app}; Attribs: hidden system Source: STALKER.cjstyles; DestDir: {app}; Attribs: hidden system Source: splash.png; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression [UninstallDelete] Type: filesandordirs; Name: "{app}\gamedata" Type: files; Name: "{app}\SGM_COP_history.rtf" Type: files; Name: "{app}\SGM_COP_info.rtf" Type: files; Name: "{app}\SGM_what_in_v2.2.txt" [_Code] { RedesignWizardFormBegin } // Не удалять эту строку! // Не изменять эту секцию. Она создана автоматически. var Label2: TLabel; Label1: TLabel; procedure PageNameLabelClick(Sender: TObject); forward; procedure RedesignWizardForm; begin with WizardForm do begin AutoScroll := False; ClientWidth := ScaleX(530); end; with WizardForm.CancelButton do begin Left := ScaleX(393); end; with WizardForm.NextButton do begin Left := ScaleX(293); end; with WizardForm.BackButton do begin Left := ScaleX(205); end; with WizardForm.OuterNotebook do begin Width := ScaleX(529); end; with WizardForm.WelcomeLabel2 do begin Left := ScaleX(200); end; with WizardForm.WelcomeLabel1 do begin Left := ScaleX(200); end; { Label2 } Label2 := TLabel.Create(WizardForm); with Label2 do begin Name := 'Label2'; Parent := WizardForm.SelectDirPage; Caption := 'Если программа автоматически не найдет папку с игрой, то выберите вручную.'; Font.Color := clWhite; Font.Height := -11; Font.Name := 'Tahoma'; Font.Style := []; ParentFont := False; Transparent := False; Left := ScaleX(0); Top := ScaleY(120); Width := ScaleX(411); Height := ScaleY(13); end; with WizardForm.DiskSpaceLabel do begin Caption := 'Требуется как минимум 2.35 ГБ свободного дискового пространства.'; end; with WizardForm.MainPanel do begin Width := ScaleX(529); Color := clGray; end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(32); Width := ScaleX(495); end; { Label1 } Label1 := TLabel.Create(WizardForm); with Label1 do begin Name := 'Label1'; Parent := WizardForm.MainPanel; Caption := 'Информация'; Font.Color := clWindowText; Font.Height := -11; Font.Name := 'Tahoma'; Font.Style := [fsBold]; ParentFont := False; Transparent := False; Left := ScaleX(24); Top := ScaleY(11); Width := ScaleX(74); Height := ScaleY(13); end; with WizardForm.PageDescriptionLabel do begin Left := ScaleX(13); Top := ScaleY(58); Width := ScaleX(11); end; with WizardForm.PageNameLabel do begin Color := clSilver; ParentColor := False; OnClick := @PageNameLabelClick; Width := ScaleX(0); end; { ReservationBegin } // Вы можете добавить ваш код здесь. { ReservationEnd } end; // Не изменять эту секцию. Она создана автоматически. { RedesignWizardFormEnd } // Не удалять эту строку! procedure PageNameLabelClick(Sender: TObject); begin end; const Archives = '{src}\*.arc'; // укажите расположение архивов FreeArc; для внешних файлов строку в [Files] добавлять необязательно totalSize = 2393; // total uncompressed size of archive data in mb, REQUIRED for correct progress displaying PM_REMOVE = 1; CP_ACP = 0; CP_UTF8 = 65001; type #ifdef UNICODE ; если у вас ошибка на этой строке, то установите препроцессор или исправьте скрипт для вашей версии Inno Setup #define A "W" #else #define A "A" ; точка входа в SetWindowText, {#A} меняется на A или W в зависимости от версии #endif #if Ver < 84018176 AnsiString = String; // There is no need for this line in Inno Setup 5.2.4 and below (для 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; 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; LastTimerEvent: DWORD; MouseLabel,SiteLabel: TLabel; // Кликабельная текстовая http-ссылка в левом нижнем углу инсталлера // 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'; /////////////////Splash/////////////// procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload'; /////////////////Splash//////////// /////////////////Скин//////////////////////////////////////////////////// procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall delayload setuponly'; procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall delayload setuponly'; procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly'; procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly'; function InitializeSetup(): Boolean; begin ExtractTemporaryFile('STALKER.cjstyles'); LoadSkin(ExpandConstant('{tmp}\STALKER.cjstyles'), ''); Result:= true end; function InitializeUninstall(): Boolean; begin FileCopy(ExpandConstant('{app}\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), False); FileCopy(ExpandConstant('{app}\STALKER.cjstyles'), ExpandConstant('{tmp}\STALKER.cjstyles'), False); LoadSkinU(ExpandConstant('{tmp}\STALKER.cjstyles'), ''); Result:=True; end; /////////////////Скин/////////////////////////////////////////////////// ///////////////// Кликабельная текстовая http-ссылка в левом нижнем углу инсталлера ///////////////// procedure SiteLabelOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec('open', 'http://vk.com/by_gangster', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); end; procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clRed; end; procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clblue; end; procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clGreen; end; procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SiteLabel.Font.Color:=clblue; end; ///////////////// Кликабельная текстовая http-ссылка в левом нижнем углу инсталлера ///////////////// 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:= Result + $7FFFFFFF + $7FFFFFFF + 2; for Hi:= Hi-1 Downto 0 do Result:= Result + $7FFFFFFF + $7FFFFFFF + 2; End; // OnClick event function for btnCancel procedure btnCancelUnpackingOnClick(Sender: TObject); begin if MsgBox( SetupMessage( msgExitSetupMessage ), mbInformation, MB_YESNO ) = IDYES then CancelCode:= -127; end; // Scans the specified folders for archives and add them to list function FindArcs(dir: string): Extended; var FSR: TFindRec; Begin if FindFirst(ExpandConstant(dir), FSR) then 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(Archives)) + FSR.Name; Arcs[n].Size:= Size64(FSR.SizeHigh, FSR.SizeLow); Result:= Result + Arcs[n].Size; until not FindNext(FSR); finally FindClose(FSR); end; End; // Converts OEM encoded string into ANSI // Преобразует OEM строку в ANSI кодировку function OemToAnsiStr( strSource: AnsiString): AnsiString; var nRet : longint; begin SetLength( Result, Length( strSource ) ); nRet:= OemToChar( strSource, Result ); end; // Converts ANSI encoded string into UTF-8 // Преобразует строку из ANSI в UTF-8 кодировку function AnsiToUtf8( strSource: string ): string; var nRet : integer; WideCharBuf: string; MultiByteBuf: string; begin strSource:= strSource + chr(0); SetLength( WideCharBuf, Length( strSource ) * 2 ); SetLength( MultiByteBuf, Length( strSource ) * 2 ); nRet:= MultiByteToWideChar( CP_ACP, 0, strSource, -1, WideCharBuf, Length(WideCharBuf) ); nRet:= WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, MultiByteBuf, Length(MultiByteBuf), 0, 0); Result:= MultiByteBuf; 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 then {hh:mm:ss format} 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 then {1..60 minutes} 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)='written') and (totalSize>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 totalSize; s := FmtMessage(cm('ExtractedInfo'), [IntToStr(Mb), IntToStr(totalSize)]); 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 totalSize; s:= FmtMessage(cm('AllProgress'), [Format('%.1n', [Abs(percents/10)])]); if Mb > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((totalSize - 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 allSize: 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.Show; WizardForm.ActiveControl:= btnCancelUnpacking; WizardForm.ProgressGauge.Position:= 0; WizardForm.ProgressGauge.Max:= totalSize; // Get the size of all archives allSize:= FindArcs(Archives); // 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 lblExtractFileName.Hide; ExtractFile.Hide; btnCancelUnpacking.Hide; end; procedure CurStepChanged(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; // стандартный способ отката (не нужна CurPageChanged), но архивы распаковываются до извлечения файлов инсталлятора // if CurStep = ssInstall then // if UnPack(Archives) <> 0 then Abort; Procedure CurPageChanged(CurPageID: Integer); Begin if (CurPageID = wpFinished) and (UnPackError <> 0) then begin // Extraction was unsuccessful (распаковщик вернул ошибку) 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 InitializeWizard(); begin RedesignWizardForm; 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; /////Музыка///// ExtractTemporaryFile('BASS.dll'); ExtractTemporaryFile('Music.mp3'); ExtractTemporaryFile('botva2.dll'); ExtractTemporaryFile('MusicButton.png'); BASS_Init(ExpandConstant('{tmp}\Music.mp3')) //Просто запускаем музыку BASS_CreateOnOffButton(ExpandConstant('{tmp}\MusicButton.png'), 478, 320, 50, 38, 4) //Создаем кнопку вкл/выкл //////Конец музыка///// /////Splash//////////// ExtractTemporaryFile('splash.png'); ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.png',1000,3000,1000,0,255,False,$FFFFFF,10); //////Splash/////////// end; // Create a 'Cancel unpacking' button and hide it for now. btnCancelUnpacking:=TButton.create(WizardForm); btnCancelUnpacking.Parent:= WizardForm; btnCancelUnpacking.SetBounds(ScaleX(260), WizardForm.cancelbutton.top, ScaleX(140), WizardForm.cancelbutton.Height); btnCancelUnpacking.OnClick:= @btnCancelUnpackingOnClick; btnCancelUnpacking.Caption:= cm('ArcCancel'); btnCancelUnpacking.Hide; ///////////////// Кликабельная текстовая http-ссылка в левом нижнем углу инсталлера ///////////////// MouseLabel:=TLabel.Create(WizardForm); MouseLabel.Width:=WizardForm.Width; MouseLabel.Height:=WizardForm.Height; MouseLabel.Autosize:=False; MouseLabel.Transparent:=True; MouseLabel.OnMouseMove:=@SiteLabelMouseMove2; MouseLabel.Parent:=WizardForm; SiteLabel:=TLabel.Create(WizardForm); SiteLabel.Left:=10; SiteLabel.Top:=330; SiteLabel.Cursor:=crHand; SiteLabel.Font.Color:=clblue; SiteLabel.Font.Name := 'Tahoma'; SiteLabel.Caption:='Installer by Evgeniy Bytaikis'; SiteLabel.OnClick:=@SiteLabelOnClick; SiteLabel.OnMouseDown:=@SiteLabelMouseDown; SiteLabel.OnMouseUp:=@SiteLabelMouseUp; SiteLabel.OnMouseMove:=@SiteLabelMouseMove; SiteLabel.Parent:=WizardForm; ///////////////// Кликабельная текстовая http-ссылка в левом нижнем углу инсталлера ///////////////// end; //////Музыка/////////скин procedure DeinitializeSetup(); begin BASS_DeInit; gdipShutdown end; /////Конец музыка//////скин [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D003010F107000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E7457696474680312020C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680322020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10A544E6577427574746F6E0C43616E63656C427574746F6E044C6566740389010C4578706C696369744C6566740389010000F10A544E6577427574746F6E0A4E657874427574746F6E044C6566740325010C4578706C696369744C6566740325010000F10A544E6577427574746F6E0A4261636B427574746F6E044C65667403CD000C4578706C696369744C65667403CD000000F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B0557696474680311020D4578706C69636974576964746803110200F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10E544E6577537461746963546578740D57656C636F6D654C6162656C32044C65667403C8000C4578706C696369744C65667403C8000000F10E544E6577537461746963546578740D57656C636F6D654C6162656C31044C65667403C8000C4578706C696369744C65667403C800000000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C6963697457696474680311020E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED0000F2020106544C6162656C064C6162656C32044C656674020003546F700278055769647468039B0106486569676874020D0743617074696F6E1488000000D095D181D0BBD0B820D0BFD180D0BED0B3D180D0B0D0BCD0BCD0B020D0B0D0B2D182D0BED0BCD0B0D182D0B8D187D0B5D181D0BAD0B820D0BDD0B520D0BDD0B0D0B9D0B4D0B5D18220D0BFD0B0D0BFD0BAD18320D18120D0B8D0B3D180D0BED0B92C20D182D0BE20D0B2D18BD0B1D0B5D180D0B8D182D0B520D0B2D180D183D187D0BDD183D18E2E0C466F6E742E43686172736574070F44454641554C545F434841525345540A466F6E742E436F6C6F720707636C57686974650B466F6E742E48656967687402F509466F6E742E4E616D6506065461686F6D610A466F6E742E5374796C650B000A506172656E74466F6E74080B5472616E73706172656E74080000F10E544E6577537461746963546578740E4469736B53706163654C6162656C0743617074696F6E1475000000D0A2D180D0B5D0B1D183D0B5D182D181D18F20D0BAD0B0D0BA20D0BCD0B8D0BDD0B8D0BCD183D0BC20322E333520D093D0912020D181D0B2D0BED0B1D0BED0B4D0BDD0BED0B3D0BE20D0B4D0B8D181D0BAD0BED0B2D0BED0B3D0BE20D0BFD180D0BED181D182D180D0B0D0BDD181D182D0B2D0B02E000000F110544E65774E6F7465626F6F6B50616765095265616479506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650E496E7374616C6C696E67506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED00000000F1065450616E656C094D61696E50616E656C05576964746803110205436F6C6F720706636C477261790D4578706C69636974576964746803110200F10C544269746D6170496D6167651657697A617264536D616C6C4269746D6170496D616765044C656674022005576964746803EF010C4578706C696369744C65667402200D4578706C69636974576964746803EF010000F2020106544C6162656C064C6162656C31044C656674021803546F70020B055769647468024A06486569676874020D0743617074696F6E120A00000018043D0444043E0440043C043004460438044F040C466F6E742E43686172736574070F44454641554C545F434841525345540A466F6E742E436F6C6F72070C636C57696E646F77546578740B466F6E742E48656967687402F509466F6E742E4E616D6506065461686F6D610A466F6E742E5374796C650B066673426F6C64000A506172656E74466F6E74080B5472616E73706172656E74080000F10E544E65775374617469635465787414506167654465736372697074696F6E4C6162656C044C656674020D03546F70023A055769647468020B0C4578706C696369744C656674020D0B4578706C69636974546F70023A0D4578706C696369745769647468020B0000F10E544E6577537461746963546578740D506167654E616D654C6162656C055769647468020005436F6C6F720708636C53696C7665720B506172656E74436F6C6F7208074F6E436C69636B0712506167654E616D654C6162656C436C69636B0D4578706C696369745769647468020000000000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100000000 |
Последний раз редактировалось by_gangster, 23-08-2012 в 13:52. Причина: oshibka Отправлено: 13:52, 23-08-2012 | #357 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 21:49, 23-08-2012 | #358 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Gnom_aka_Lexander, спасибо конечно но у меня не обычный скрипт то есть при компиляции он упаковывает архивы .arc а потом уже инсталятор расспаковывает только файлы в указанную папку, а так он расспаковывает только сам архив
|
Отправлено: 23:11, 23-08-2012 | #359 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Цитата by_gangster:
Цитата by_gangster:
Цитата by_gangster:
|
|||
------- Отправлено: 14:08, 24-08-2012 | #360 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Утилиты - [addon] Inno Setup | CrOsP | Наборы обновлений для Windows XP/2003/Windows 7 | 33 | 11-05-2011 16:03 | |
Inno Setup 5.3.6 | OSZone Software | Новости программного обеспечения | 0 | 15-11-2009 17:30 | |
[архив] Inno Setup .:[все вопросы]:. | Mchik | Автоматическая установка приложений | 1329 | 23-08-2009 20:13 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|