Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

можно же просто в шрифт добавить эту иконку, а потом уже подставлять к компоненту (как со значком звука к примеру)

Шрифт не пойдет, нужна яркая броская картинка. Да и лёгких путей мы не ищем  :)

Share this post


Link to post

Short link
Share on other sites
Потому как в повседневном использовании будет слишком геморно а пользователь всё равно не оценит/не заметит.

Использование не будет геморным.. нужно только немного доработать и оставить этот скрипт как ресурс, отдельно от основного. В самом основном, одной строкой можно будет отмечать компонент, например: SetNew('Прицел').

А оценивание пользователя и не нужно, нужно просто чтобы он обратил внимание на это и всё. А ещё это будет полезно постоянным пользователям, которые знают, что в этой сборке есть и видят список изменений. Им не придётся искать глазами новые компоненты по 4-м компонентЛистам (если конечно нововведённый компонент их заинтересовал).

 

можно же просто в шрифт добавить эту иконку, а потом уже подставлять к компоненту (как со значком звука к примеру)

Тоже обдумывал. Пришёл к выводу, что это неудобно и не совсем то, что я хочу.

Вообще, это я скинул только начальную наработку, на которую потратил не больше 15-ти минут. В идеи, само изображение должно быть вне компонентЛиста, просто рядом с ним ползать (в пределах высоты самого компонентЛиста, конечно же). Плюс то, что символ шрифта разноцветным не сделаешь, т.к. я рассчитывал на что-то, подобное этому:

'скрин'

sl31_001.png

 

Да и лёгких путей мы не ищем :)

Так точно.

 

UPD:

Короче, доработал свою идею. Проверил на средней системе - вроде, не фризит.

NEW IDEA.rar

Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Есть ли что то на подобии этого только для 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 by Dark_Knight_MiX

Share this post


Link to post

Short link
Share on other sites

Есть ли что то на подобии этого только для xml?

На кринкелсе возьми модуль XML.

Share this post


Link to post

Short link
Share on other sites

На кринкелсе возьми модуль XML.

Именно с таким файлом не получится.  В нем во всех строках одинаковый начальный параметр <Path ....

И все манипуляции будут происходить только с первой строкой.

Share this post


Link to post

Short link
Share on other sites

Именно с таким файлом не получится.  В нем во всех строках одинаковый начальный параметр <Path ....

И все манипуляции будут происходить только с первой строкой.

ага, поэтому и сделал так 

На кринкелсе возьми модуль XML.

он не подходит, если параметры одинаковые то он сохраняет только последнюю строку

Share this post


Link to post

Short link
Share on other sites

 

 

он не подходит, если параметры одинаковые то он сохраняет только последнюю строку
Я увидел, что там XML и написал про модуль для него, подробно я строки не просматривал.

Share this post


Link to post

Short link
Share on other sites

Я увидел, что там 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;

Share this post


Link to post

Short link
Share on other sites

Помогите пожалуйста как это делается

в этот скрипт

 

 

#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=no
DirExistsWarning=no
CreateUninstallRegKey=yes
Uninstallable=yes
DisableProgramGroupPage=yes

//====={ Картинки }=====\\
SetupIconFile=Files\WorldOfTanks.ico
UninstallDisplayIcon={app}\unins000.exe
WizardImageFile=Files\img12.bmp
WizardSmallImageFile=Files\Small2.bmp
//====={ Отключение строниц }=====\\
//DisableProgramGroupPage=yes

//====={ Лицензия и Фак }=====\\
LicenseFile=licensia.txt
InfoBeforeFile=

//====={ Сжатие сетапа }=====\\
InternalCompressLevel=max
Compression=lzma2/max

//--------------- ваши картинки ---------------\\
[Files]
Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption
DestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\img2.bmp"; Flags: dontcopy solidbreak
Source: Skin.cjstyles; DestDir: {app}; Attribs: hidden system
Source: ISSkin.dll; DestDir: {app}; Attribs: hidden system
Source: ISTaskMgr.dll; DestDir: {app}; Attribs: hidden system
DestName: "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;

 

post-33758-0-34205000-1444596587_thumb.jpg

Edited by asterix93

Share this post


Link to post

Short link
Share on other sites

UPD:

Короче, доработал свою идею. Проверил на средней системе - вроде, не фризит.

attachicon.gifNEW IDEA.rar

А возможно сделать следующее....

Например в модпаке появились новинки, или то что обновлено, по принципу чейдж лога, и всё это что обновлено будет, например, в отдельной странице, где можно выбрать нужные компоненты. И в последствии при переходе в основной установщик они уже были выбраны. Для постоянных пользователей того или иного пака думаю актуально.

Значок "NEW" это хорошо, но было бы интересно чтобы пользователь сразу на старте видел обновления. К примеру начинка то в основном одна и неизменна и чтоб не шустрить по всему паку в поисках мода из чейджлога, пользователь на начальной странице обновил что ему надо без переустановки всех модификаций.  Как Вам идейка?

Share this post


Link to post

Short link
Share on other sites

А возможно сделать следующее....

Например в модпаке появились новинки, или то что обновлено, по принципу чейдж лога, и всё это что обновлено будет, например, в отдельной странице, где можно выбрать нужные компоненты. И в последствии при переходе в основной установщик они уже были выбраны. Для постоянных пользователей того или иного пака думаю актуально.

Значок "NEW" это хорошо, но было бы интересно чтобы пользователь сразу на старте видел обновления. К примеру начинка то в основном одна и неизменна и чтоб не шустрить по всему паку в поисках мода из чейджлога, пользователь на начальной странице обновил что ему надо без переустановки всех модификаций.  Как Вам идейка?

Возможно, но при реализации этой идеи можно столкнуться как минимум с 2-мя проблемами:

  1. Я почти уверен, что некоторая часть пользователей в этом запутается, даже если написать подробное описание страницы. Ведь не все это читают.
  2. А если введены компоненты, имеющие флаг exclusive? Тогда же придётся переносить всех его "братьев" и родителя. В таком-то случае эта отдельная страница может растолстеть в размерах и уже будет не совсем понятно, какой именно компонент был введён. И опять же, его придётся искать глазами, бегая по списку.
Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Помогите прикрутить ограничение на дату_время установки. Т.е. после наступления часа пик невозможно было его установит. типа триала. Внутри архива несколько вариантов скрипта для прикручивания. У меня при установке менувшей даты пишет, что невозможно уже, но при установке будущей даты проходит проверку и открывает следующую страницу, и дальше не идет.кнопки перестают действовdata

Прикрепляю вариант не тронутый и вариант редактированый с будущей датой и зависающий на странице

Всем привет!Хочу тоже прикрутить ограничение к модпаку!XXX_MUTANT не мог бы ты поделится своим рабочим вариантом?

Share this post


Link to post

Short link
Share on other sites

А как менять приоритет проги в инно?

Edited by Dark_Knight_MiX

Share this post


Link to post

Short link
Share on other sites

А как менять приоритет проги в инно?

Так:

#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 by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Так:

#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. мог посмотреть у меня в исходнике, не зря же вылаживал.
я имел ввиду менять приоритет другой проги, а это я видел

Share this post


Link to post

Short link
Share on other sites

Тогда так: attachicon.gifPriority.rar

Или я вопрос не понял или типа мы не ищем легких путей?

А как менять приоритет проги в инно?

Для танков приоритет выше среднего (пример).

[Registry]
Root: HKCU; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\WorldOfTanks.exe\PerfOptions; ValueType: dword; ValueName: CpuPriorityClass; ValueData: 6
Edited by Yusha

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...