odesskin Posted May 14, 2014 Share Posted May 14, 2014 @odesskin, ошибка говорит, что у вас была процедура InitializeWizard. Последние две строки из моего примера скопируйте и вставьте в уже имеющуюся процедуру. А ту, которую вставляли (опять-таки, из моего примера выше) - удалите. Спасибо огромное, разобрался! @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 14, 2014 Share Posted May 14, 2014 Уважаемые, очередной вопрос по шрифту. WizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline]; Это мы его сделали жирным и с подчеркиванием (первая строка в данном примере). А как ему цвет сменить? Пытался прикрутить нечто подобное: WizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline, clMaroon]; но на последнюю константу ругается. Может кто умный чего подсказать? Что я не так делаю? @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted May 14, 2014 Share Posted May 14, 2014 Уважаемые, очередной вопрос по шрифту. WizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline]; Это мы его сделали жирным и с подчеркиванием (первая строка в данном примере). А как ему цвет сменить? Пытался прикрутить нечто подобное: WizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline, clMaroon]; но на последнюю константу ругается. Может кто умный чего подсказать? Что я не так делаю? fsXXX это константы для свойств шрифта FontStyle, а clYYY это константы цвета шрифта, там свойство другое должно быть подозреваю FontColor @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 14, 2014 Share Posted May 14, 2014 fsXXX это константы для свойств шрифта FontStyle, а clYYY это константы цвета шрифта, там свойство другое должно быть подозреваю FontColor WizardForm.ComponentsList.ItemFontColor[0] := [clGrayText]; пишет, что не может идентифицировать FontColor Это я уже пробовал :-) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 14, 2014 Share Posted May 14, 2014 @ventura69, цвет нельзя менять 1 @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 14, 2014 Share Posted May 14, 2014 (edited) @ventura69, цвет нельзя менять Мдэ... Печально. Спасибо. Значит пойдем другим путем, как обещал своей маме величайший махинатор. Edited May 14, 2014 by ventura69 @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 17, 2014 Share Posted May 17, 2014 (edited) Добрый день, уважаемые знатоки Сварганил себе очень ценную програмулю для работы (с вашей помощью). По долгу службы приходится работать с огромным количеством документации, от которой в глазах рябит (модели, чертежи, развертки, изменения, дополнения и пр.). Функции данного инсталятора (установщика): выдрать нужную документацию (при наведении на строку выводится картинка детали) и разложить по нужным папкам для дальнейшей работы с ними. Жизнь облегчилась сразу весьма солидно! Запихал в него порядка 300мБ инфы, на выходе получился шустрый файлик в 6,4 мБ. Знатоки, гляньте, какие комментарии? Где мог накосячить или есть лучшее решение? Прилагаю сам скриптик. Естественно не весь (выдрал сами ресурсы, чтобы не выводилась на экран портянка... ; Скрипт создан через Мастер Inno Setup Script.; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!#define MyAppName "Мультипродукт"#define MyAppVersion "1.5"#define MyAppPublisher "ХХХ"#define MyAppURL "http://www.ХХХ.ru/"[setup]WizardImageFile=Files\fonstola.ru-81854.bmp; Примечание: Значение AppId идентифицирует это приложение.; Не используйте одно и тоже значение в разных установках.; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)AppId={{ХХХХХХ-174F-4677-AB73-3C3980F5299A}AppName={#MyAppName}AppVersion={#MyAppVersion};AppVerName={#MyAppName} {#MyAppVersion}AppPublisher={#MyAppPublisher}AppPublisherURL={#MyAppURL}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}DefaultDirName=c:\Заказ\{#MyAppName}SetupIconFile=Files\wot_ico.ico//====={ Лицензия }=====\\LicenseFile=licensia.txt//===={ Отключение диалога }====\\DirExistsWarning=no//===={ Не создавать запись в меню Установка и удаление программ Панели управления }==== \\CreateUninstallRegKey=no//===={ Не создавать унинстал }====\\Uninstallable=noDefaultGroupName={#MyAppName}DisableProgramGroupPage=yesOutputBaseFilename=Мультипродукт//====={ Отключение последней страницы}====\\DisableFinishedPage=yes;Compression=lzma;SolidCompression=yes//====={ Сжатие сетапа }=====\\InternalCompressLevel=ultra64Compression=lzma2/ultra64SolidCompression=true[Languages]Name: "default"; MessagesFile: "compiler:Default.isl"//====={ Сюда прописываем те файлы и папки которые закинул в Mods }=====\\[Types]Name: custom; Description: Full installation; Flags: iscustom[Components]//Стойка 1\\Name: KMP; Description: Стойка; Types: custom; Flags: fixedName: KMP\DV; Description: 1. Декор верхний; Flags: checkablealone ;// Здесь много - много буковков и позиций........................//Стойка 2\\Name: KMN; Description: Вторая стойка; Types: custom; Flags: fixedName: KMN\DG; Description: 1. Декорпанель гидромодуля; Flags: checkablealone ;// Здесь много - много буковков и позиций........................//Гидромодуль\\Name: KMG; Description: Гидромодуль; Types: custom; Flags: fixedName: KMG\GO; Description: 1. Основание гидромодуля; Flags: checkablealone ;// Здесь много - много буковков и позиций........................//Блок электроники\\Name: KME; Description: Блок электроники; Types: custom; Flags: fixedName: KME\EB; Description: 1. Корпус блока электроники; Flags: checkablealone ;// Здесь много - много буковков и позиций........................[Files];{ ISFormDesignerFilesBegin } // Не удалять эту строку!;// Не изменять эту секцию. Она создана автоматически.DestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\logo.bmp"; Flags: dontcopy solidbreak;// Не изменять эту секцию. Она создана автоматически.;{ ISFormDesignerFilesEnd } // Не удалять эту строку!//Картинки\\Source: c:\Мультипродуктовые\files\01 декор верхний.bmp; Flags: dontcopy noencryption noencryption// Здесь ооооочень много - много буковков и позиций........................//Стойка 1\\Source: "MODS\ 01 декор верхний\*"; DestDir: "{app}\Стойка 1"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\DV;// Здесь много - много буковков и позиций........................//Стойка 2\\Source: "MODS\Декорпанель гидромодуля\*"; DestDir: "{app}\Стойка 2"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMN\DG;// Здесь много - много буковков и позиций........................//Гидромодуль\\Source: "MODS\01.001-02 фундрама без пуклевки\*"; DestDir: "{app}\Гидромодуль"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMG\GO;// Здесь много - много буковков и позиций........................//Блок электроники\\Source: "MODS\03.15 корпус блока электроники\*"; DestDir: "{app}\Блок электроники\Корпус блока электроники"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KME\EB;// Здесь много - много буковков и позиций........................[Run]Filename: "{app}"; Flags: nowait shellexec skipifsilent { RedesignWizardFormBegin } // Не удалять эту строку!// Не изменять эту секцию. Она создана автоматически.varBitmapImage1: TBitmapImage;procedure LogoOnClick(Sender: TObject);var ResCode: Integer;beginShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)end;procedure CompOnMouseLeave(Sender: TObject); forward;procedure RedesignWizardForm;begin{ BitmapImage1 }BitmapImage1 := TBitmapImage.Create(WizardForm);with BitmapImage1 dobeginParent := WizardForm;Left := ScaleX(0);Top := ScaleY(320);Width := ScaleX(233);Height := ScaleY(41);Cursor := crHand;ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));OnClick := @LogoOnClick;end;WizardForm.WizardBitmapImage.Width := ScaleX(497);WizardForm.WizardBitmapImage.Height := ScaleY(312);WizardForm.WelcomeLabel2.Enabled := False;WizardForm.WelcomeLabel2.Height := ScaleY(0);WizardForm.WelcomeLabel1.Enabled := False;WizardForm.WelcomeLabel1Height := ScaleY(0);WizardForm.WizardBitmapImage2.Width := ScaleX(500);WizardForm.RunList.Height := ScaleY(0);WizardForm.NoRadio.Height := ScaleY(0);WizardForm.YesRadio.Height := ScaleY(0);WizardForm.FinishedLabel.Enabled := False;WizardForm.FinishedLabel.Width := ScaleX(0);WizardForm.FinishedLabel.Height := ScaleY(0);WizardForm.FinishedHeadingLabel.Enabled := False;WizardForm.FinishedHeadingLabel.Height := ScaleY(0);{ ReservationBegin }// Вы можете добавить ваш код здесь.{ ReservationEnd }end;// Не изменять эту секцию. Она создана автоматически.{ RedesignWizardFormEnd } // Не удалять эту строку!#ifdef UNICODE#define A "W"#else#define A "A"#endifconstUNDEF_INDEX = -777;ALPHA_BLEND_LEVEL = 255; // max=Byte=255WS_EX_LAYERED = $80000;WS_EX_TRANSPARENT = $20;LWA_COLORKEY = 1;LWA_ALPHA = 2;GWL_EXSTYLE = (-20);varInfoPic: TBitmapImage;LastIndex: Integer;TempPath: String;PicForm: TForm;typeCOLORREF = DWORD;function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall';function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';function SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall';function MyDirName(S:String): String;varInsPath: String;er: boolean;myFile:String;beginWizardForm.WizardBitmapImage.Width := ScaleX(502);WizardForm.WelcomeLabel2.Visible := False;WizardForm.WelcomeLabel1.Visible := False;WizardForm.WizardSmallBitmapImage.Left := ScaleX(0);WizardForm.WizardSmallBitmapImage.Width := ScaleX(502);WizardForm.WizardSmallBitmapImage.Height := ScaleY(70);WizardForm.PageDescriptionLabel.Visible := False;WizardForm.PageNameLabel.Visible := False;WizardForm.WizardBitmapImage2.Width := ScaleX(502);WizardForm.FinishedLabel.Visible := False;WizardForm.FinishedHeadingLabel.Visible := False;end;procedure ShowPicHint(const PicFilePath: String);varpt: TPoint;beginif not GetCursorPos(pt) then Exit;InfoPic.Bitmap.LoadFromFile(PicFilePath);trywith PicForm dobeginSetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);Show;end;finallySetFocus(WizardForm.Handle);end;end;procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);varUndefPic: String;beginif Index = -1 then Exit;if Index = LastIndex then Exit;trycase TNewCheckListBox(Sender).ItemCaption[index] of'1. Декор верхний': UndefPic := '01 декор верхний.bmp';// Здесь снова оооочень много - много буковков и позиций........................elsebeginLastIndex := UNDEF_INDEX;PicForm.Hide;Exit;end;end;if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);ShowPicHint(TempPath + UndefPic);finallyLastIndex := Index;end;end;procedure CompOnMouseLeave(Sender: TObject);beginPicForm.Hide;LastIndex := -1;end;procedure InitInfo();beginWizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;TempPath := AddBackslash(ExpandConstant('{tmp}'));LastIndex := UNDEF_INDEX;PicForm := TForm.Create(WizardForm)with PicForm dobeginBorderStyle := bsNone;FormStyle := fsStayOnTop;InfoPic := TBitmapImage.Create(PicForm)with InfoPic dobeginParent := PicForm;AutoSize := True;end;end;SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);end;procedure InitializeWizard();beginWizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[41] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[71] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[99] := [fsBold, fsUnderline];RedesignWizardForm;InitInfo();end;[iSFormDesigner]WizardForm=FF0A005457495A415244464F524D0030102804000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F202010C544269746D6170496D6167650C4269746D6170496D61676531044C656674020003546F7003400105576964746803E90006486569676874022906437572736F72070B637248616E64506F696E740A4269746D617046696C65060E46696C65735C6C6F676F2E626D70074F6E436C69636B0710436F6D704F6E4D6F7573654C656176650000F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544269746D6170496D6167651157697A6172644269746D6170496D61676505576964746803F101064865696768740338010D4578706C69636974576964746803F1010E4578706C696369744865696768740338010000F10E544E6577537461746963546578740D57656C636F6D654C6162656C3206486569676874020007456E61626C6564080E4578706C6963697448656967687402000000F10E544E6577537461746963546578740D57656C636F6D654C6162656C3106486569676874020007456E61626C6564080E4578706C696369744865696768740200000000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544269746D6170496D6167651257697A6172644269746D6170496D6167653205576964746803F4010D4578706C69636974576964746803F4010000F110544E6577436865636B4C697374426F780752756E4C6973740648656967687402000E4578706C6963697448656967687402000000F10F544E6577526164696F427574746F6E074E6F526164696F0648656967687402000E4578706C6963697448656967687402000000F10F544E6577526164696F427574746F6E08596573526164696F0648656967687402000E4578706C6963697448656967687402000000F10E544E6577537461746963546578740D46696E69736865644C6162656C055769647468020006486569676874020007456E61626C6564080D4578706C69636974576964746802000E4578706C6963697448656967687402000000F10E544E6577537461746963546578741446696E697368656448656164696E674C6162656C06486569676874020007456E61626C6564080E4578706C6963697448656967687402000000000000 Если кому пригодится какой кусок из кода - буду весьма рад!Персональная ОГРОМНЕЙШАЯ благодарность Kotyarko_O и StranikS_Scan за помощь, комментарии и кучу толковых подсказок!!! Edited May 17, 2014 by ventura69 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 17, 2014 Share Posted May 17, 2014 (edited) @ventura69, вот такое: with WizardForm.FinishedHeadingLabel dobeginEnabled := False;Height := ScaleY(0);end; with WizardForm.WizardBitmapImage dobeginWidth := ScaleX(502);end; with WizardForm.WelcomeLabel2 dobeginVisible := False;end; with WizardForm.WelcomeLabel1 dobeginVisible := False;end; with WizardForm.WizardSmallBitmapImage dobeginLeft := ScaleX(0);Width := ScaleX(502);Height := ScaleY(70);end; with WizardForm.PageDescriptionLabel dobeginVisible := False;end; with WizardForm.PageNameLabel dobeginVisible := False;end; with WizardForm.WizardBitmapImage2 dobeginWidth := ScaleX(502);end; with WizardForm.FinishedLabel dobeginVisible := False;end; with WizardForm.FinishedHeadingLabel dobeginVisible := False;end;end; Лучше (а главное - экономнее) будет прописать так: procedure InitializeWizard();beginWizardForm.ComponentsList.ItemFontStyle[0] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[41] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[71] := [fsBold, fsUnderline];WizardForm.ComponentsList.ItemFontStyle[99] := [fsBold, fsUnderline]; // WizardForm.FinishedLabel.Visible:=False; WizardForm.FinishedHeadingLabel.Visible:=False; WizardForm.WizardBitmapImage.Width:=502; WizardForm.WelcomeLabel1.Visible:=False; WizardForm.WelcomeLabel2.Visible:=False; WizardForm.WizardSmallBitmapImage.Width:=502; WizardForm.WizardSmallBitmapImage.Height:=70; WizardForm.WizardSmallBitmapImage.Left:=0; WizardForm.PageDescriptionLabel.Visible:=False; WizardForm.PageNameLabel.Visible:=False; WizardForm.WizardBitmapImage2.Width:=502; WizardForm.FinishedLabel.Visible:=False; WizardForm.FinishedHeadingLabel.Visible:=False; //.. и так далее.. RedesignWizardForm;InitInfo();end; Так можно прописать всё подобное. Действительно меньше места будет занимать. Edited May 17, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Ckaym Posted May 17, 2014 Share Posted May 17, 2014 Парни вот что я наковырял может как можно всё это упростить или сделать лучше. Скачать архив весит 18.9 МБ с рисунками и музыкой. @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 17, 2014 Share Posted May 17, 2014 @Ckaym, сделать музыку отключабельной. @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted May 17, 2014 Share Posted May 17, 2014 сделать лучше MP3 - в топку! OGG Vorbis обеспечивает более лучшее качество звучания, при меньшем весе. bass.dll оправьте вслед за MP3, так как OGG Vorbis можно воспроизводить более лёгкими библиотеками. .bmp лучше заменить .png - на качество не повлияет, но вес снизится значительно. world of tanks песня mp3 скачать бесплатно и без регистрации на Muzofon.com Качай бесплатно любую музыку в формате mp3 и слушай онлайн..MP3 - вы серьёзно? @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 17, 2014 Share Posted May 17, 2014 world of tanks песня mp3 скачать бесплатно и без регистрации на Muzofon.com Качай бесплатно любую музыку в формате mp3 и слушай онлайн..MP3 - вы серьёзно? тоже улыбнуло) @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 17, 2014 Share Posted May 17, 2014 (edited) [member='Ventura6 Так можно прописать всё подобное. Действительно меньше места будет занимать. Угу. Понял. Я не трогал эти строки - их создавал в редакторе форм. Ну и кое что правил, так как по умолчанию лезли лишние окошки и на отключение не хотели реагировать. Пришлось размер делать 0. Плохой я видать ученик: Вы мне уже указывали на это, а я тупанул и не попробовал применить Ваши слова на практике... Спасибо за науку! В понедельник на работе буду править. По Вашему действительно красивее и короче. Может еще подскажете (я пока не разобрался): Run - выполняется в конце инсталлятора, но до закрытия оного. А как запустить процесс вместе (и параллельно) с запуском инсталлятора? К примеру: запустили инстал и пошло проигрывание музыки/открытие текстового файла/запуск приложения, не имеющего расширения .exe и пр. P. S. В предыдущем посте подкорректировал строки в соответствии с Вашим комментарием. Правда, появилось еще несколько вопросов по некоторым другим строкам, но это попробую сам проработать и разобраться Edited May 17, 2014 by ventura69 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 17, 2014 Share Posted May 17, 2014 (edited) Может еще подскажете (я пока не разобрался): Run - выполняется в конце инсталлятора, но до закрытия оного. А как запустить процесс вместе (и параллельно) с запуском инсталлятора? К примеру: запустили инстал и пошло проигрывание музыки/открытие текстового файла/запуск приложения, не имеющего расширения .exe и пр. Здесь нужно сделать кое-что подобное: [Code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID=(*ID*) then begin ..... ..... end; где: (*ID*) - это название страницы, переходя на которую, инсталл будет выполнять какое-то действие. 'Вот список ID всех страниц (по названиям интуитивно понятно, что за что отвечает. На крайняк есть гугл-транслейт)):' wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished А какое именно действие тебе нужно сюда впиндюхать? Edited May 17, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 17, 2014 Share Posted May 17, 2014 А какое именно действие тебе нужно сюда впиндюхать? Если честно: пока не знаю. Просто интересно. Как запускать по окончании установки понял, а как перед началом - не понял. Для общего развития. Или вот: при запуске инсталятора запускать mp3 Вивальди-Времена года (под него думается хорошо). А процесс выбора у меня может тянуться долго... @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 17, 2014 Share Posted May 17, 2014 Как запускать по окончании установки понял, а как перед началом - не понял. [Code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID=wpWelcome then begin ..... ..... end; при запуске инсталятора запускать mp3 Вивальди-Времена года (под него думается хорошо). Тут бросали скрипт, с подключенной библиотекой проигрывания *.mp3. @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 17, 2014 Share Posted May 17, 2014 [Code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID=wpWelcome then begin ..... ..... end; Тут бросали скрипт, с подключенной библиотекой проигрывания *.mp3. Дадада! Именно его сейчас и изучаю. Спасибо! @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 18, 2014 Share Posted May 18, 2014 (edited) Разобрался, как запускается музыка в скрипте из поста от Ckaym. В данном виде, как он выложен, скрипт не работает. Нашел одну ошибку в нем: тип PChar (он не поддерживается прогой) надо заменить на тип PAnsiChar. И тогда он начинает работать. Тут бросали скрипт, с подключенной библиотекой проигрывания *.mp3. Вот такая штука получилась в результате для запуска музыки при старте инсталлятора. Гляньте, уважаемый. Комментарии и корректировки будут? //подключаем ресурсы и библиотеки\\ [Files]Source: "bass.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompressionSource: "innocallback.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompressionSource: "Music.MP3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression //задаем процедуры, переменные и константы\\typeHSTREAM=DWORD;TTimerProc=procedure(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);constIndent=25;varMP3List:TStringList;CurrentMP3:integer;hMP3:HWND;TimerID:LongWord;//создаем функции\\function SetTimer(hWnd:HWND;nIDEvent,uElapse:UINT;lpTimerFunc:LongWord{TFNTimerProc}):UINT; external '[email protected] stdcall delayload';function BASS_ChannelIsActive(Handle:HWND):DWORD; external 'BASS_ChannelIsActive@files:bass.dll stdcall';function BASS_SetConfig(Option,Value:DWORD):DWORD; external 'BASS_SetConfig@files:bass.dll stdcall';function BASS_Init(Device:integer;Freq,Flags:DWORD;Win:HWND;CLSID:integer):boolean; external 'BASS_Init@files:bass.dll stdcall delayload';function BASS_StreamCreateFile(Mem:BOOL;f:PAnsiChar;Offset:DWORD;Length:DWORD;Flags:DWORD):HSTREAM; external 'BASS_StreamCreateFile@files:bass.dll stdcall';function BASS_StreamFree(Handle:HWND):boolean; external 'BASS_StreamFree@files:bass.dll stdcall';function BASS_ChannelPlay(Handle:HWND;Restart:boolean):boolean; external 'BASS_ChannelPlay@files:bass.dll stdcall';function BASS_Start: Boolean; external 'BASS_Start@files:bass.dll stdcall';function BASS_Stop: Boolean; external 'BASS_Stop@files:bass.dll stdcall';function BASS_Free: Boolean; external 'BASS_Free@files:bass.dll stdcall delayload';function WrapTimerProc(CallBack:TTimerProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall'; //ну, и сам код запуска музыки\\procedure TimerTick(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);beginif BASS_ChannelIsActive(hMP3)=0 then beginBASS_Stop;BASS_StreamFree(hMP3);hMP3:=BASS_StreamCreateFile(False,PAnsiChar(MP3List.Strings[CurrentMP3]),0,0,0);BASS_Start;if hMP3<>0 thenif BASS_ChannelPlay(hMP3,True) then beginCurrentMP3:=CurrentMP3+1;if CurrentMP3>MP3List.Count-1 then CurrentMP3:=0;end;end;end;function InitializeSetup:boolean;beginExtractTemporaryFile('Music.MP3');MP3List:=TStringList.Create;MP3List.Add(ExpandConstant('{tmp}')+'\Music.MP3');CurrentMP3:=0;Result:=True;end;procedure InitializeWizard;beginTimerID:=SetTimer(0,0,500,WrapTimerProc(@TimerTick,5));BASS_Init(-1,44100,0,0,0);BASS_SetConfig(5,100);BASS_SetConfig(6,100);end;procedure DeinitializeSetup;beginBASS_Stop;BASS_Free;MP3List.Free;end; Edited May 18, 2014 by ventura69 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 18, 2014 Share Posted May 18, 2014 Вот такая штука получилась в результате для запуска музыки при старте инсталлятора. Гляньте, уважаемый. Комментарии и корректировки будут? Внешне всё норм) @ Quote Link to comment Short link Share on other sites More sharing options...
ventura69 Posted May 18, 2014 Share Posted May 18, 2014 Внешне всё норм) Да оно еще и работает, только у меня уже отпала охота засовывать mp3 в установщик: слишком он пухнет от него. Понял принцип, разобрался что к чему, оно и ладно - мне и этого хватит @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.