-zav- 188 #294637 Posted October 10, 2015 можно же просто в шрифт добавить эту иконку, а потом уже подставлять к компоненту (как со значком звука к примеру) Шрифт не пойдет, нужна яркая броская картинка. Да и лёгких путей мы не ищем :) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #294640 Posted October 10, 2015 (edited) Потому как в повседневном использовании будет слишком геморно а пользователь всё равно не оценит/не заметит. Использование не будет геморным.. нужно только немного доработать и оставить этот скрипт как ресурс, отдельно от основного. В самом основном, одной строкой можно будет отмечать компонент, например: SetNew('Прицел'). А оценивание пользователя и не нужно, нужно просто чтобы он обратил внимание на это и всё. А ещё это будет полезно постоянным пользователям, которые знают, что в этой сборке есть и видят список изменений. Им не придётся искать глазами новые компоненты по 4-м компонентЛистам (если конечно нововведённый компонент их заинтересовал). можно же просто в шрифт добавить эту иконку, а потом уже подставлять к компоненту (как со значком звука к примеру) Тоже обдумывал. Пришёл к выводу, что это неудобно и не совсем то, что я хочу. Вообще, это я скинул только начальную наработку, на которую потратил не больше 15-ти минут. В идеи, само изображение должно быть вне компонентЛиста, просто рядом с ним ползать (в пределах высоты самого компонентЛиста, конечно же). Плюс то, что символ шрифта разноцветным не сделаешь, т.к. я рассчитывал на что-то, подобное этому: 'скрин' Да и лёгких путей мы не ищем :) Так точно. UPD: Короче, доработал свою идею. Проверил на средней системе - вроде, не фризит. NEW IDEA.rar Edited October 10, 2015 by Kotyarko_O 1 Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #294697 Posted October 11, 2015 (edited) Есть ли что то на подобии этого только для xml? [Code] procedure PathsStringToFile(Description: String); begin SaveStringToFile(ExpandConstant('{app}\Paths.xml'), Description + #13#10, True); end; procedure Paths; begin PathsStringToFile('<Root>'); PathsStringToFile(' <Paths>'); PathsStringToFile(' <Path>./res_mods/0.9.10</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/shared_content.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/shared_content_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/shared_content_sandbox.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/shared_content_sandbox_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/misc.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/misc_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/gui.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/shaders.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/particles.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/00_tank_tutorial.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/00_tank_tutorial_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/01_karelia.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/01_karelia_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/02_malinovka.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/02_malinovka_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/03_campania.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/04_himmelsdorf.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/05_prohorovka.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/06_ensk.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/06_ensk_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/07_lakeville.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/08_ruinberg.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/100_thepit.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/100_thepit_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/101_dday.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/101_dday_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/103_ruinberg_winter.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/103_ruinberg_winter_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/10_hills.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/111_paris.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/111_paris_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/11_murovanka.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/13_erlenberg.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/13_erlenberg_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/14_siegfried_line.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/14_siegfried_line_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/17_munchen.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/17_munchen_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/18_cliff.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/18_cliff_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/19_monastery.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/22_slough.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/22_slough_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/23_westfeld.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/23_westfeld_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/28_desert.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/29_el_hallouf.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/31_airfield.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/31_airfield_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/33_fjord.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/33_fjord_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/34_redshire.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/35_steppes.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/35_steppes_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/36_fishing_bay.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/36_fishing_bay_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/37_caucasus.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/37_caucasus_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/38_mannerheim_line.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/38_mannerheim_line_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/39_crimea.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/39_crimea_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/44_north_america.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/44_north_america_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/45_north_america.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/45_north_america_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/47_canada_a.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/47_canada_a_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/53_japan.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/53_japan_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/60_asia_miao.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/60_asia_miao_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/63_tundra.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/63_tundra_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/73_asia_korea.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/73_asia_korea_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/83_kharkiv.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/83_kharkiv_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/84_winter.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/84_winter_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/86_himmelsdorf_winter.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/86_himmelsdorf_winter_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/92_stalingrad.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/92_stalingrad_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/95_lost_city.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/95_lost_city_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/96_prohorovka_defense.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/96_prohorovka_defense_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/h02_tmday_2015.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/h02_tmday_2015_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/hangar_NatDay_CN.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/hangar_NatDay_CN_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/hangar_premium_19sept.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/hangar_premium_19sept_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/hangar_premium_v2.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/hangar_premium_v2_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/hangar_v2.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/hangar_v2_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/vehicles_level_01.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_01_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/vehicles_level_02.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_02_hd.pkg</Path>'); PathsStringToFile(' <Path type="sandbox,sd,hd">./res/packages/vehicles_level_03.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_03_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_04.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_04_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_05.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_05_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_06.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_06_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_07.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_07_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_08.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_08_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_09.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_09_hd.pkg</Path>'); PathsStringToFile(' <Path type="sd,hd">./res/packages/vehicles_level_10.pkg</Path>'); PathsStringToFile(' <Path type="hd">./res/packages/vehicles_level_10_hd.pkg</Path>'); PathsStringToFile(' <Path>./res</Path>'); PathsStringToFile(' <Path>./res_bw</Path>'); PathsStringToFile(' </Paths>'); PathsStringToFile('</Root>'); end; Procedure PathsWotCreate(CurStep: TSetupStep); begin If CurStep = ssInstall then begin if not FileExists(ExpandConstant('{app}\Paths.xml')) or FileExists(ExpandConstant('{app}\Paths.xml')) then begin DeleteFile(ExpandConstant('{app}\Paths.xml')); Paths; end; end; end; end; Edited October 11, 2015 by Dark_Knight_MiX Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #294705 Posted October 11, 2015 Есть ли что то на подобии этого только для xml? На кринкелсе возьми модуль XML. Quote Share this post Link to post Short link Share on other sites
-zav- 188 #294707 Posted October 11, 2015 На кринкелсе возьми модуль XML. Именно с таким файлом не получится. В нем во всех строках одинаковый начальный параметр <Path .... И все манипуляции будут происходить только с первой строкой. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #294726 Posted October 11, 2015 Именно с таким файлом не получится. В нем во всех строках одинаковый начальный параметр <Path .... И все манипуляции будут происходить только с первой строкой. ага, поэтому и сделал так На кринкелсе возьми модуль XML. он не подходит, если параметры одинаковые то он сохраняет только последнюю строку Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #294727 Posted October 11, 2015 он не подходит, если параметры одинаковые то он сохраняет только последнюю строку Я увидел, что там XML и написал про модуль для него, подробно я строки не просматривал. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #294728 Posted October 11, 2015 Я увидел, что там XML и написал про модуль для него, подробно я строки не просматривал. вот к примеру #include "XML.iss" [Setup] Appname=MyApp AppVerName=MyApp DefaultDirName={pf}\MyApp OutputDir=. [Code] procedure XMLFileWrite(Desk: String); begin XMLFileWriteValue(ExpandConstant('{#SetupSetting("DefaultDirName")}\Paths.xml'), 'Root\Paths\Path', 'sd,hd', Desk, False); end; procedure InitializeWizard(); begin XMLFileWrite('./res_mods/0.9.10'); XMLFileWrite('./res/packages/vehicles_level_07.pkg'); XMLFileWrite('./res/packages/vehicles_level_08.pkg'); XMLFileWrite('./res/packages/vehicles_level_09.pkg'); XMLFileWrite('./res/packages/vehicles_level_10.pkg'); // сохраняет только эту строку end; Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #294729 Posted October 11, 2015 вот к примеру Я это знаю. Quote Share this post Link to post Short link Share on other sites
asterix93 9 #294783 Posted October 11, 2015 (edited) Помогите пожалуйста как это делается в этот скрипт #define MyAppName "ModPack by Asterix93" ;Название инстоллятора#define MyInfoVer "V 1.0" ;Версия инсталлятора#define MyAppVer "1.0" ;Версия игры#define Patch "0.9.10" ;версия патча (чтобы не менять после каждого патча числа в скрипте, можно использовать это)#define MyAppPublisher "Asterix93" ;Имя компании или человека кто делал#define MyAppURL "#" ;Ссылка для лого#include "Components.iss" ;Компаненты, они же моды#include "Messages.iss" ;Сообщение, надписи на кнопках и т.д.#include "BackUpPage.iss" ;Резерное копирование или удаление res_mods#include "CustomMessages.iss" ;Описание модов//#include "Music.iss" ;Музыка в инсталляторе[setup]AppName={#MyAppName}AppVersion={#MyAppVer}AppPublisher={#MyAppPublisher}//====={ Ссылки }=====\\AppPublisherURL={#MyAppURL}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}//====={ Папка устанвки }=====\\DefaultDirName={code:MyDirName}AppendDefaultDirName=noDirExistsWarning=noCreateUninstallRegKey=yesUninstallable=yesDisableProgramGroupPage=yes//====={ Картинки }=====\\SetupIconFile=Files\WorldOfTanks.icoUninstallDisplayIcon={app}\unins000.exeWizardImageFile=Files\img12.bmpWizardSmallImageFile=Files\Small2.bmp//====={ Отключение строниц }=====\\//DisableProgramGroupPage=yes//====={ Лицензия и Фак }=====\\LicenseFile=licensia.txtInfoBeforeFile=//====={ Сжатие сетапа }=====\\InternalCompressLevel=maxCompression=lzma2/max//--------------- ваши картинки ---------------\\[Files]Source: Files\logo.bmp; Flags: dontcopy noencryption noencryptionDestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\img2.bmp"; Flags: dontcopy solidbreakSource: Skin.cjstyles; DestDir: {app}; Attribs: hidden systemSource: ISSkin.dll; DestDir: {app}; Attribs: hidden systemSource: ISTaskMgr.dll; DestDir: {app}; Attribs: hidden systemDestName: "WizardForm.SelectDirBitmapImage.bmp"; Source:"Files\folder.bmp"; Flags: dontcopy solidbreak procedure LoadSkin(lpszPath: PAnsiChar; lpszIniFileName: PAnsiChar); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload';procedure UnloadSkin; external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload';function InitializeSetup: Boolean;beginif not FileExists(ExpandConstant('{tmp}\isskin.dll')) then ExtractTemporaryFile('isskin.dll');if not FileExists(ExpandConstant('{tmp}\Skin.cjstyles')) then ExtractTemporaryFile('Skin.cjstyles');LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');Result:=True;end;function InitializeUninstall: Boolean;beginFileCopy(ExpandConstant('{app}\uninstall\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), False);FileCopy(ExpandConstant('{app}\uninstall\skin.cjstyles'), ExpandConstant('{tmp}\skin.cjstyles'), False);LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), '');Result:=True;end;function NextButtonClick(CurPageID: Integer): Boolean;beginResult := True;case CurPageID ofwpSelectDir:if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) thenbeginMsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK);Result := False;end;end;end;function MyDirName(S:String): String;varInsPath: String;er: boolean;myFile:String;beginResult:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюдаer := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);if er and (InsPath<>'') then //если ключ существует и там что-то записаноbeginResult := InsPath;end;end;procedure LogoOnClick(Sender: TObject);var ResCode: Integer;beginShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)end;varBitmapImage1: TBitmapImage;procedure RedesignWizardForm;vari: integer;BtnPanel: TPanel;BtnImage: TBitmapImage;beginExtractTemporaryFile('logo.bmp')BtnPanel:=TPanel.Create(WizardForm)with BtnPanel do beginLeft:=220Top:=537Width:=160Height:=40Cursor:=crHandOnClick:=@logoOnClickParent:=WizardFormend;BtnImage:=TBitmapImage.Create(WizardForm)with BtnImage do beginAutoSize:=True;Enabled:=True;Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')Parent:=BtnPanelend;//{ BitmapImage1 }//BitmapImage1 := TBitmapImage.Create(WizardForm);//with BitmapImage1 do//begin//Parent := WizardForm.SelectDirPage;//Left:=0;//ScaleX(0);//Top:=115;//ScaleY(115);//Width:=837;//ScaleX(837);//Height:=320;//ScaleY(320);//ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');//Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));//end;end;function WindowResize(): Boolean;varHeightOffset, WidthOffset: Integer;beginHeightOffset:=170;WidthOffset:=310;WizardForm.Height:=WizardForm.Height + HeightOffset;WizardForm.Width:=WizardForm.Width + WidthOffset;WizardForm.NextButton.Top:=WizardForm.NextButton.Top + HeightOffset;WizardForm.BackButton.Top:=WizardForm.BackButton.Top + HeightOffset;WizardForm.CancelButton.Top:=WizardForm.CancelButton.Top + HeightOffset;WizardForm.NextButton.Left:=WizardForm.NextButton.Left + WidthOffset;WizardForm.BackButton.Left:=WizardForm.BackButton.Left + WidthOffset;WizardForm.CancelButton.Left:=WizardForm.CancelButton.Left + WidthOffset;WizardForm.OuterNotebook.Height:=WizardForm.OuterNotebook.Height + HeightOffset;WizardForm.InnerNotebook.Height:=WizardForm.InnerNotebook.Height + HeightOffset;WizardForm.OuterNotebook.Width:=WizardForm.OuterNotebook.Width + WidthOffset;WizardForm.InnerNotebook.Width:=WizardForm.InnerNotebook.Width + WidthOffset;WizardForm.WizardSmallBitmapImage.Left:= WizardForm.WizardSmallBitmapImage.Left + WidthOffset;WizardForm.Bevel.Top:=WizardForm.Bevel.Top + HeightOffset;WizardForm.BeveledLabel.Top:=WizardForm.BeveledLabel.Top + HeightOffset;WizardForm.Bevel.Width:=WizardForm.Bevel.Width + WidthOffset;WizardForm.Bevel1.Width:=WizardForm.Bevel1.Width + WidthOffset;WizardForm.MainPanel.Width:=WizardForm.MainPanel.Width + WidthOffset;WizardForm.BeveledLabel.Width:=WizardForm.BeveledLabel.Width + WidthOffset;WizardForm.Center;{ /// --- Раскомментировать при желании ---- ///WizardForm.WelcomeLabel1.Hide;WizardForm.WelcomeLabel2.Hide;WizardForm.FinishedLabel.Hide;WizardForm.FinishedHeadingLabel.Hide;WizardForm.WizardBitmapImage.Width:=600;WizardForm.WizardBitmapImage.Height:=400;WizardForm.WizardBitmapImage2.Width:=600;WizardForm.WizardBitmapImage2.Height:=400;WizardForm.PageNameLabel.Hide;WizardForm.PageDescriptionLabel.Hide;WizardForm.WizardSmallBitmapImage.Top:=0;WizardForm.WizardSmallBitmapImage.Left:=0;WizardForm.WizardSmallBitmapImage.Width:=WizardForm.Width;WizardForm.WizardSmallBitmapImage.Height:=58;/// --- Конец ---- ///}WizardForm.WelcomeLabel1.Hide;WizardForm.WelcomeLabel2.Hide;WizardForm.WizardBitmapImage.Width:=837;WizardForm.WizardBitmapImage.Height:=550;WizardForm.FinishedHeadingLabel.Hide;WizardForm.FinishedLabel.Hide;WizardForm.YesRadio.Hide;WizardForm.NoRadio.Hide;WizardForm.WizardBitmapImage2.Width:=837;WizardForm.WizardBitmapImage2.Height:=550;WizardForm.PageNameLabel.Hide;WizardForm.PageDescriptionLabel.Hide;WizardForm.WizardSmallBitmapImage.Top:=0;WizardForm.WizardSmallBitmapImage.Left:=0;WizardForm.WizardSmallBitmapImage.Width:=837;WizardForm.WizardSmallBitmapImage.Height:=58;WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;WizardForm.WelcomeLabel1.Height:=WizardForm.WelcomeLabel1.Height + HeightOffset;WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;WizardForm.WelcomeLabel2.Height:=WizardForm.WelcomeLabel2.Height + HeightOffset;WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;WizardForm.LicenseLabel1.Width:=WizardForm.LicenseLabel1.Width + WidthOffset;WizardForm.LicenseMemo.Height:=WizardForm.LicenseMemo.Height + HeightOffset;WizardForm.LicenseMemo.Width:=WizardForm.LicenseMemo.Width + WidthOffset;WizardForm.LicenseNotAcceptedRadio.Top:=WizardForm.LicenseNotAcceptedRadio.Top + HeightOffset;WizardForm.LicenseAcceptedRadio.Top:=WizardForm.LicenseAcceptedRadio.Top + HeightOffset;WizardForm.InfoBeforeClickLabel.Width:=WizardForm.InfoBeforeClickLabel.Width + WidthOffset;WizardForm.InfoBeforeMemo.Height:=WizardForm.InfoBeforeMemo.Height + HeightOffset;WizardForm.InfoBeforeMemo.Width:=WizardForm.InfoBeforeMemo.Width + WidthOffset;WizardForm.SelectDirLabel.Width:=WizardForm.SelectDirLabel.Width + WidthOffset;WizardForm.SelectDirBrowseLabel.Width:=WizardForm.SelectDirBrowseLabel.Width + WidthOffset;WizardForm.DiskSpaceLabel.Top:=WizardForm.DiskSpaceLabel.Top + HeightOffset;WizardForm.DirBrowseButton.Left:=WizardForm.DirBrowseButton.Left + HeightOffset;WizardForm.DirEdit.Width:=WizardForm.DirEdit.Width + HeightOffset;WizardForm.ComponentsDiskSpaceLabel.Top:=WizardForm.ComponentsDiskSpaceLabel.Top + HeightOffset;WizardForm.SelectComponentsLabel.Width:=WizardForm.SelectComponentsLabel.Width + WidthOffset;WizardForm.ComponentsList.Height:=WizardForm.ComponentsList.Height + HeightOffset;WizardForm.ComponentsList.Width:=WizardForm.ComponentsList.Width + WidthOffset;WizardForm.ReadyLabel.Width:=WizardForm.ReadyLabel.Width + WidthOffset;WizardForm.ReadyMemo.Height:=WizardForm.ReadyMemo.Height + HeightOffset;WizardForm.ReadyMemo.Width:=WizardForm.ReadyMemo.Width + WidthOffset;WizardForm.ProgressGauge.Width:=550;WizardForm.ProgressGauge.Width:=WizardForm.ProgressGauge.Width + HeightOffset;WizardForm.FilenameLabel.Width:=WizardForm.FilenameLabel.Width + HeightOffset;WizardForm.StatusLabel.Width:=WizardForm.StatusLabel.Width + HeightOffset;end;/// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- ///typeTComponentDesc = recordDescription: String;ImageName: String;Index: Integer;end;varCompDescs: array of TComponentDesc;CompDescPanel, CompDescImgPanel: TPanel;CompDescText: array[1..2] of TLabel;CompIndex, LastIndex: Integer;CompDescImg: TBitmapImage;procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);vari: Integer;beginif Index = LastIndex then Exit;CompIndex := -1;for i := 0 to GetArrayLength(CompDescs) -1 dobeginif (CompDescs[i].Index = Index) thenbeginCompIndex := i;Break;end;end;if (CompIndex >= 0) and (Area = iaItem) thenbeginif not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) thenExtractTemporaryFile(CompDescs[CompIndex].ImageName);CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);CompDescImg.Show;CompDescText[2].Caption := CompDescs[CompIndex].Description;CompDescText[2].Enabled := True;end elsebeginCompDescText[2].Caption := CustomMessage('ComponentsInfo');CompDescText[2].Enabled := False;CompDescImg.Hide;end;LastIndex := Index;end;procedure CompListMouseLeave(Sender: TObject);beginCompDescImg.Hide;CompDescText[2].Caption := CustomMessage('ComponentsInfo');CompDescText[2].Enabled := False;LastIndex := -1;end;procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);vari: Integer;begini := GetArrayLength(CompDescs);SetArrayLength(CompDescs, i + 1);CompDescs[i].Description := ADescription;CompDescs[i].ImageName := AImageName;CompDescs[i].Index := AIndex - 1end;procedure InitializeWizard();beginInitializeWizard1(); {из BackUpPage.iss}RedesignWizardForm;WindowResize();beginWizardForm.SelectComponentsLabel.Hide;WizardForm.TypesCombo.Hide;WizardForm.ComponentsList.SetBounds(ScaleX(365), ScaleY(0), ScaleX(360), ScaleY(400));WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;CompDescImgPanel := TPanel.Create(WizardForm);with CompDescImgPanel dobeginParent := WizardForm.SelectComponentsPage;SetBounds(ScaleX(0), ScaleY(0), ScaleX(360), ScaleY(290)); //рамка картинкиBevelInner := bvLowered;end;CompDescText[1] := TLabel.Create(WizardForm);with CompDescText[1] dobeginParent := CompDescImgPanel;SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));AutoSize := False;WordWrap := True;Enabled := False;Caption := CustomMessage('ComponentsImgInfo');end;CompDescImg := TBitmapImage.Create(WizardForm);with CompDescImg dobeginParent := CompDescImgPanel;SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));Stretch := True;Hide;end;CompDescPanel := TPanel.Create(WizardForm);with CompDescPanel dobeginParent := WizardForm.SelectComponentsPage;SetBounds(ScaleX(0), ScaleY(295), ScaleX(360), ScaleY(105)); //Нижния рамкаBevelInner := bvLowered;end;CompDescText[2] := TLabel.Create(WizardForm);with CompDescText[2] dobeginParent := CompDescPanel;SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));AutoSize := False;WordWrap := True;Enabled := False;Caption := CustomMessage('ComponentsInfo');end;//dimensiunile panoului unde se expune licenta\\with WizardForm.LicenseMemo dobeginHeight := ScaleY(340);Width := ScaleX(720);end;//culoarea fonului din panoul cu licentawith WizardForm.LicenseMemo dobegin//Font.Color := clWhite;ParentColor := True;ParentFont := False;end;//pozitia butoanelor de acceptare a licentei\\with WizardForm.LicenseAcceptedRadio dobeginTop := ScaleY(390);Left := ScaleX(400);end;with WizardForm.LicenseNotAcceptedRadio dobeginTop := ScaleY(390);Left := ScaleX(100);end;//butonulwith WizardForm.DirBrowseButton dobeginLeft := ScaleX(620);Top := ScaleY(89);end;//locul unde se va instalawith WizardForm.DirEdit dobeginLeft := ScaleX(153);Top := ScaleY(90);Width := ScaleX(400);end;// Imaginea dosaruluiwith WizardForm.SelectDirBitmapImage dobeginLeft := ScaleX(0);Top := ScaleY(0);Width := ScaleX(150);Height := ScaleY(146);ExtractTemporaryFile('WizardForm.SelectDirBitmapImage.bmp');Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.SelectDirBitmapImage.bmp'));end;//info despre spatiuwith WizardForm.DiskSpaceLabel dobeginLeft := ScaleX(153);Top := ScaleY(120);Font.Height := -12;Width := ScaleX(740);end;with WizardForm.SelectDirLabel dobeginTop := ScaleY(5);AutoSize := True;Font.Height := -15;ParentFont := False;Left := ScaleX(153);Width := ScaleX(740);end;with WizardForm.SelectDirBrowseLabel dobeginTop := ScaleY(50);AutoSize := True;Font.Height := -12;Left := ScaleX(153);Width := ScaleX(570);end;AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp');AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp');AddCompDescription(3, CustomMessage('CompDesc3'), 'CompDescImg3.bmp');AddCompDescription(4, CustomMessage('CompDesc4'), 'CompDescImg4.bmp');AddCompDescription(5, CustomMessage('CompDesc5'), 'CompDescImg5.bmp');AddCompDescription(6, CustomMessage('CompDesc6'), 'CompDescImg6.bmp');AddCompDescription(7, CustomMessage('CompDesc7'), 'CompDescImg7.bmp');AddCompDescription(8, CustomMessage('CompDesc8'), 'CompDescImg8.bmp');AddCompDescription(9, CustomMessage('CompDesc9'), 'CompDescImg9.bmp');AddCompDescription(10, CustomMessage('CompDesc10'), 'CompDescImg10.bmp');AddCompDescription(11, CustomMessage('CompDesc11'), 'CompDescImg11.bmp');AddCompDescription(12, CustomMessage('CompDesc12'), 'CompDescImg12.bmp');AddCompDescription(13, CustomMessage('CompDesc13'), 'CompDescImg13.bmp');AddCompDescription(14, CustomMessage('CompDesc14'), 'CompDescImg14.bmp');AddCompDescription(15, CustomMessage('CompDesc15'), 'CompDescImg15.bmp');AddCompDescription(16, CustomMessage('CompDesc16'), 'CompDescImg16.bmp');AddCompDescription(17, CustomMessage('CompDesc17'), 'CompDescImg17.bmp');AddCompDescription(18, CustomMessage('CompDesc18'), 'CompDescImg18.bmp');AddCompDescription(19, CustomMessage('CompDesc19'), 'CompDescImg19.bmp');AddCompDescription(20, CustomMessage('CompDesc20'), 'CompDescImg20.bmp');AddCompDescription(21, CustomMessage('CompDesc21'), 'CompDescImg21.bmp');AddCompDescription(22, CustomMessage('CompDesc22'), 'CompDescImg22.bmp');AddCompDescription(23, CustomMessage('CompDesc23'), 'CompDescImg23.bmp');AddCompDescription(24, CustomMessage('CompDesc24'), 'CompDescImg24.bmp');AddCompDescription(25, CustomMessage('CompDesc25'), 'CompDescImg25.bmp');AddCompDescription(26, CustomMessage('CompDesc26'), 'CompDescImg26.bmp');AddCompDescription(27, CustomMessage('CompDesc27'), 'CompDescImg27.bmp');AddCompDescription(28, CustomMessage('CompDesc28'), 'CompDescImg28.bmp');AddCompDescription(29, CustomMessage('CompDesc29'), 'CompDescImg29.bmp');AddCompDescription(30, CustomMessage('CompDesc30'), 'CompDescImg30.bmp');AddCompDescription(31, CustomMessage('CompDesc31'), 'CompDescImg31.bmp');AddCompDescription(32, CustomMessage('CompDesc32'), 'CompDescImg32.bmp');AddCompDescription(33, CustomMessage('CompDesc33'), 'CompDescImg33.bmp');AddCompDescription(34, CustomMessage('CompDesc34'), 'CompDescImg34.bmp');AddCompDescription(35, CustomMessage('CompDesc35'), 'CompDescImg35.bmp');AddCompDescription(36, CustomMessage('CompDesc36'), 'CompDescImg36.bmp');AddCompDescription(37, CustomMessage('CompDesc37'), 'CompDescImg37.bmp');AddCompDescription(38, CustomMessage('CompDesc38'), 'CompDescImg38.bmp');AddCompDescription(39, CustomMessage('CompDesc39'), 'CompDescImg39.bmp');AddCompDescription(40, CustomMessage('CompDesc40'), 'CompDescImg40.bmp');AddCompDescription(41, CustomMessage('CompDesc41'), 'CompDescImg41.bmp');AddCompDescription(42, CustomMessage('CompDesc42'), 'CompDescImg42.bmp');AddCompDescription(43, CustomMessage('CompDesc43'), 'CompDescImg43.bmp');AddCompDescription(44, CustomMessage('CompDesc44'), 'CompDescImg44.bmp');AddCompDescription(45, CustomMessage('CompDesc45'), 'CompDescImg45.bmp');end;end; Edited October 25, 2015 by asterix93 Quote Share this post Link to post Short link Share on other sites
akey 35 #294801 Posted October 12, 2015 UPD: Короче, доработал свою идею. Проверил на средней системе - вроде, не фризит. NEW IDEA.rar А возможно сделать следующее.... Например в модпаке появились новинки, или то что обновлено, по принципу чейдж лога, и всё это что обновлено будет, например, в отдельной странице, где можно выбрать нужные компоненты. И в последствии при переходе в основной установщик они уже были выбраны. Для постоянных пользователей того или иного пака думаю актуально. Значок "NEW" это хорошо, но было бы интересно чтобы пользователь сразу на старте видел обновления. К примеру начинка то в основном одна и неизменна и чтоб не шустрить по всему паку в поисках мода из чейджлога, пользователь на начальной странице обновил что ему надо без переустановки всех модификаций. Как Вам идейка? Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #294818 Posted October 12, 2015 (edited) А возможно сделать следующее.... Например в модпаке появились новинки, или то что обновлено, по принципу чейдж лога, и всё это что обновлено будет, например, в отдельной странице, где можно выбрать нужные компоненты. И в последствии при переходе в основной установщик они уже были выбраны. Для постоянных пользователей того или иного пака думаю актуально. Значок "NEW" это хорошо, но было бы интересно чтобы пользователь сразу на старте видел обновления. К примеру начинка то в основном одна и неизменна и чтоб не шустрить по всему паку в поисках мода из чейджлога, пользователь на начальной странице обновил что ему надо без переустановки всех модификаций. Как Вам идейка? Возможно, но при реализации этой идеи можно столкнуться как минимум с 2-мя проблемами: Я почти уверен, что некоторая часть пользователей в этом запутается, даже если написать подробное описание страницы. Ведь не все это читают. А если введены компоненты, имеющие флаг exclusive? Тогда же придётся переносить всех его "братьев" и родителя. В таком-то случае эта отдельная страница может растолстеть в размерах и уже будет не совсем понятно, какой именно компонент был введён. И опять же, его придётся искать глазами, бегая по списку. Edited October 12, 2015 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Vel 0 #295293 Posted October 15, 2015 Помогите прикрутить ограничение на дату_время установки. Т.е. после наступления часа пик невозможно было его установит. типа триала. Внутри архива несколько вариантов скрипта для прикручивания. У меня при установке менувшей даты пишет, что невозможно уже, но при установке будущей даты проходит проверку и открывает следующую страницу, и дальше не идет.кнопки перестают действовdata Прикрепляю вариант не тронутый и вариант редактированый с будущей датой и зависающий на странице Всем привет!Хочу тоже прикрутить ограничение к модпаку!XXX_MUTANT не мог бы ты поделится своим рабочим вариантом? Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #295297 Posted October 15, 2015 Хочу тоже прикрутить ограничение к модпаку! Крути: InstallTimeLimit.rar 1 Quote Share this post Link to post Short link Share on other sites
Vel 0 #295331 Posted October 15, 2015 Крути: InstallTimeLimit.rar Спасибо огромное!Все работает! Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #295367 Posted October 16, 2015 (edited) А как менять приоритет проги в инно? Edited October 16, 2015 by Dark_Knight_MiX Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #295369 Posted October 16, 2015 (edited) А как менять приоритет проги в инно? Так: #define Priority "HIGH_PRIORITY_CLASS" // NORMAL_PRIORITY_CLASS IDLE_PRIORITY_CLASS HIGH_PRIORITY_CLASS REALTIME_PRIORITY_CLASS \\ [Code] Const NORMAL_PRIORITY_CLASS = $00000020; IDLE_PRIORITY_CLASS = $00000040; HIGH_PRIORITY_CLASS = $00000080; REALTIME_PRIORITY_CLASS = $00000100; Function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL; external 'SetPriorityClass@kernel32'; Function GetCurrentProcess(): THandle; external 'GetCurrentProcess@kernel32'; Procedure InitializeWizard(); begin SetPriorityClass(GetCurrentProcess, {#Priority}); end; p.s. мог посмотреть у меня в исходнике, не зря же вылаживал. Edited October 16, 2015 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #295371 Posted October 16, 2015 Так: #define Priority "HIGH_PRIORITY_CLASS" // NORMAL_PRIORITY_CLASS IDLE_PRIORITY_CLASS HIGH_PRIORITY_CLASS REALTIME_PRIORITY_CLASS \\ [Code] Const NORMAL_PRIORITY_CLASS = $00000020; IDLE_PRIORITY_CLASS = $00000040; HIGH_PRIORITY_CLASS = $00000080; REALTIME_PRIORITY_CLASS = $00000100; Function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL; external 'SetPriorityClass@kernel32'; Function GetCurrentProcess(): THandle; external 'GetCurrentProcess@kernel32'; Procedure InitializeWizard(); begin SetPriorityClass(GetCurrentProcess, {#Priority}); end; p.s. мог посмотреть у меня в исходнике, не зря же вылаживал. я имел ввиду менять приоритет другой проги, а это я видел Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #295374 Posted October 16, 2015 я имел ввиду менять приоритет другой проги, а это я видел Тогда так: Priority.rar Quote Share this post Link to post Short link Share on other sites
Yusha 8 #295381 Posted October 16, 2015 (edited) Тогда так: Priority.rar Или я вопрос не понял или типа мы не ищем легких путей? А как менять приоритет проги в инно? Для танков приоритет выше среднего (пример). [Registry] Root: HKCU; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\WorldOfTanks.exe\PerfOptions; ValueType: dword; ValueName: CpuPriorityClass; ValueData: 6 Edited October 16, 2015 by Yusha Quote Share this post Link to post Short link Share on other sites