Jump to content
Korean Random

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


Recommended Posts

не находил скрипт на вставку музыки с кнопкой отключения?

Уважаемый, много примеров интересных библиотек и их подключения я нашел в том же Inno Setup 5. Папка Dll Examples. В том числе и предложенная  Kotyarko_O

Edited by ventura69
Link to comment
Short link
Share on other sites

Уважаемый, много примеров интересных библиотек и их подключения я нашел в том же Inno Setup 5. Папка Dll Examples. В том числе и предложенная  Kotyarko_O

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

Link to comment
Short link
Share on other sites

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

Это только твои проблемы, раз ты неумека.

Link to comment
Short link
Share on other sites

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

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

Еще видел здесь на начальных страницах хорошую ссылку на сайт с установщиками готовыми. Оттуда куски кодов можно выдергивать и разбираться с принципом работы.

Edited by ventura69
Link to comment
Short link
Share on other sites

а еще много интересного и нужного, да и на все популярные вопросы уже отвечено  вот на этих сайтах:
http://forum.oszone.net/thread-278998.html
http://forum.ru-board.com/topic.cgi?forum=5&topic=46338#1

 

Но это не отменяет нужности этой темы. Тут как бы узконаправленная тема для инсталяторов модпаков World of Tanks    :)

Edited by -zav-
Link to comment
Short link
Share on other sites

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

 Перед тем, как скинуть тебе пример, я его проверял - всё работало.

Возможно, ты допускаешь ошибки при копипасте.

Link to comment
Short link
Share on other sites

Это только твои проблемы, раз ты неумека.

 

ну я не говорю что я все сильный, и всё умею, я только учусь... или вы хотите помочь? (уважаемый вы какой то злой, чё случилось?)

 Перед тем, как скинуть тебе пример, я его проверял - всё работало.

Возможно, ты допускаешь ошибки при копипасте.

не, он работает, спасибо, я просто не понял как его в ской скрипт вставить, в моём скрипте не работает, где то скрипт не срабатывает хотя ошибок не выдаёт

 

Ругается на procedure InitializeWizard(); удаляю одну из строк, запускается но не работает музыка, даже делал отдельным скриптом через #include "Music.iss"

'Music.iss'

[Music]

 

[Files]

Source: "Bass.dll"; Flags: dontcopy nocompression noencryption

Source: "AudioFile.mp3"; Flags: dontcopy

 

[CustomMessages]

SoundCtrlButtonCaptionSoundOn=Music on

SoundCtrlButtonCaptionSoundOff=Music off

 

const

BASS_SAMPLE_LOOP = 4;

BASS_ACTIVE_STOPPED = 0;

BASS_ACTIVE_PLAYING = 1;

BASS_ACTIVE_STALLED = 2;

BASS_ACTIVE_PAUSED = 3;

BASS_UNICODE = $80000000;

BASS_CONFIG_GVOL_STREAM = 5;

const

#ifndef UNICODE

EncodingFlag = 0;

#else

EncodingFlag = BASS_UNICODE;

#endif

type

HSTREAM = DWORD;

 

function BASS_Init(device: LongInt; freq, flags: DWORD;

win: HWND; clsid: Cardinal): BOOL;

external 'BASS_Init@files:bass.dll stdcall';

function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;

offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;

external 'BASS_StreamCreateFile@files:bass.dll stdcall';

function BASS_Start: BOOL;

external 'BASS_Start@files:bass.dll stdcall';

function BASS_Pause: BOOL;

external 'BASS_Pause@files:bass.dll stdcall';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;

external 'BASS_ChannelPlay@files:bass.dll stdcall';

function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;

external 'BASS_SetConfig@files:bass.dll stdcall';

function BASS_ChannelIsActive(handle: DWORD): DWORD;

external 'BASS_ChannelIsActive@files:bass.dll stdcall';

function BASS_Free: BOOL;

external 'BASS_Free@files:bass.dll stdcall';

 

var

SoundStream: HSTREAM;

SoundCtrlButton: TNewButton;

 

procedure SoundCtrlButtonClick(Sender: TObject);

begin

case BASS_ChannelIsActive(SoundStream) of

BASS_ACTIVE_PLAYING:

begin

if BASS_Pause then

SoundCtrlButton.Caption :=

ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOn}');

end;

BASS_ACTIVE_PAUSED:

begin

if BASS_Start then

SoundCtrlButton.Caption :=

ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOff}');

end;

end;

 

ExtractTemporaryFile('AudioFile.mp3');

if BASS_Init(-1, 44100, 0, 0, 0) then

begin

SoundStream := BASS_StreamCreateFile(False,

ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0,

EncodingFlag or BASS_SAMPLE_LOOP);

BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);

BASS_ChannelPlay(SoundStream, False);

 

SoundCtrlButton := TNewButton.Create(WizardForm);

SoundCtrlButton.Parent := WizardForm;

SoundCtrlButton.Left := 8;

SoundCtrlButton.Top := WizardForm.ClientHeight -

SoundCtrlButton.Height - 8;

SoundCtrlButton.Width := 155;

SoundCtrlButton.Caption :=

ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOff}');

SoundCtrlButton.OnClick := @SoundCtrlButtonClick;

end;

end;

 

procedure DeinitializeSetup;

begin

BASS_Free;

end;

 

'Основной скрипт'

#define MyAppName "Mod-Pack Bigmusic" ;Название инстоллятора

#define MyInfoVer "2.2" ;Версия инсталлятора

#define MyAppVer "2.2" ;Версия игры

#define Patch "0.9.0" ;версия патча (чтобы не менять после каждого патча числа в скрипте, можно использовать это)

#define MyAppPublisher "Bigmusic" ;Имя компании или человека кто делал

#define MyAppURL "http://forum.worldoftanks.ru/index.php?/topic/1111250-" ;Ссылка для лого

 

#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=no

Uninstallable=yes

 

//====={ Картинки }=====\\

SetupIconFile=Files\wot_ico.ico

WizardImageFile=Files\img1.bmp

WizardSmallImageFile=Files\Small2.bmp

 

//====={ Отключение строниц }=====\\

DisableProgramGroupPage=yes

 

//====={ Лицензия и Фак }=====\\

LicenseFile=licensia.rtf

InfoBeforeFile=faq.rtf

 

//====={ Сжатие сетапа }=====\\

InternalCompressLevel=ultra64

Compression=lzma2/ultra64

SolidCompression=true

 

//--------------- ваши картинки ---------------\\

[Files]

Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption

DestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\img2.bmp"; Flags: dontcopy solidbreak

 

 

[Code]

function MyDirName(S:String): String;

var

InsPath: String;

er: boolean;

myFile:String;

begin

Result:=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 //если ключ существует и там что-то записано

begin

Result := InsPath;

end;

end;

 

 

 

procedure LogoOnClick(Sender: TObject);

var ResCode: Integer;

begin

ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)

end;

var

BitmapImage1: TBitmapImage;

procedure RedesignWizardForm;

var

i: integer;

BtnPanel: TPanel;

BtnImage: TBitmapImage;

begin

ExtractTemporaryFile('logo.bmp')

BtnPanel:=TPanel.Create(WizardForm)

with BtnPanel do begin

Left:=20

Top:=495

Width:=62

Height:=22

Cursor:=crHand

OnClick:=@logoOnClick

Parent:=WizardForm

end;

BtnImage:=TBitmapImage.Create(WizardForm)

with BtnImage do begin

AutoSize:=True;

Enabled:=False;

Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')

Parent:=BtnPanel

end;

{ BitmapImage1 }

BitmapImage1 := TBitmapImage.Create(WizardForm);

with BitmapImage1 do

begin

Parent := WizardForm.SelectDirPage;

Left := ScaleX(0);

Top := ScaleY(115);

Width := ScaleX(620);

Height := ScaleY(260);

ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');

Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));

end;

end;

 

 

 

 

function WindowResize(): Boolean;

var

HeightOffset, WidthOffset: Integer;

begin

HeightOffset:=170;

WidthOffset:=200;

 

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:=697;

WizardForm.WizardBitmapImage.Height:=483;

 

WizardForm.FinishedHeadingLabel.Hide;

WizardForm.FinishedLabel.Hide;

WizardForm.YesRadio.Hide;

WizardForm.NoRadio.Hide;

WizardForm.WizardBitmapImage2.Width:=697;

WizardForm.WizardBitmapImage2.Height:=483;

 

WizardForm.PageNameLabel.Hide;

WizardForm.PageDescriptionLabel.Hide;

WizardForm.WizardSmallBitmapImage.Top:=0;

WizardForm.WizardSmallBitmapImage.Left:=0;

WizardForm.WizardSmallBitmapImage.Width:=697;

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:=WizardForm.ProgressGauge.Width + HeightOffset;

WizardForm.FilenameLabel.Width:=WizardForm.FilenameLabel.Width + HeightOffset;

WizardForm.StatusLabel.Width:=WizardForm.StatusLabel.Width + HeightOffset;

end;

 

/// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- ///

 

type

TComponentDesc = record

Description: String;

ImageName: String;

Index: Integer;

end;

 

var

CompDescs: 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);

var

i: Integer;

begin

if Index = LastIndex then Exit;

CompIndex := -1;

for i := 0 to GetArrayLength(CompDescs) -1 do

begin

if (CompDescs[i].Index = Index) then

begin

CompIndex := i;

Break;

end;

end;

if (CompIndex >= 0) and (Area = iaItem) then

begin

if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then

ExtractTemporaryFile(CompDescs[CompIndex].ImageName);

CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);

CompDescImg.Show;

 

CompDescText[2].Caption := CompDescs[CompIndex].Description;

CompDescText[2].Enabled := True;

end else

begin

CompDescText[2].Caption := CustomMessage('ComponentsInfo');

CompDescText[2].Enabled := False;

CompDescImg.Hide;

end;

LastIndex := Index;

end;

 

procedure CompListMouseLeave(Sender: TObject);

begin

CompDescImg.Hide;

CompDescText[2].Caption := CustomMessage('ComponentsInfo');

CompDescText[2].Enabled := False;

LastIndex := -1;

end;

 

procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);

var

i: Integer;

begin

i := GetArrayLength(CompDescs);

SetArrayLength(CompDescs, i + 1);

CompDescs[i].Description := ADescription;

CompDescs[i].ImageName := AImageName;

CompDescs[i].Index := AIndex - 1

end;

 

procedure InitializeWizard();

begin

InitializeWizard1(); {из BackUpPage.iss, если что}

RedesignWizardForm;

WindowResize();

 

begin

WizardForm.SelectComponentsLabel.Hide;

WizardForm.TypesCombo.Hide;

WizardForm.ComponentsList.SetBounds(ScaleX(260), ScaleY(20), ScaleX(357), ScaleY(333));

WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;

WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

 

CompDescImgPanel := TPanel.Create(WizardForm);

with CompDescImgPanel do

begin

Parent := WizardForm.SelectComponentsPage;

SetBounds(ScaleX(0), ScaleY(20), ScaleX(253), ScaleY(203)); //рамка картинки

BevelInner := bvLowered;

end;

 

CompDescText[1] := TLabel.Create(WizardForm);

with CompDescText[1] do

begin

Parent := 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 do

begin

Parent := CompDescImgPanel;

SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));

Stretch := True;

Hide;

end;

 

CompDescPanel := TPanel.Create(WizardForm);

with CompDescPanel do

begin

Parent := WizardForm.SelectComponentsPage;

SetBounds(ScaleX(0), ScaleY(230), ScaleX(253), ScaleY(123)); //Нижния рамка

BevelInner := bvLowered;

end;

 

CompDescText[2] := TLabel.Create(WizardForm);

with CompDescText[2] do

begin

Parent := CompDescPanel;

SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));

AutoSize := False;

WordWrap := True;

Enabled := False;

Caption := CustomMessage('ComponentsInfo');

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');

end;

end;

 

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

Еще видел здесь на начальных страницах хорошую ссылку на сайт с установщиками готовыми. Оттуда куски кодов можно выдергивать и разбираться с принципом работы.

да где то я напортачил, ну почему вот уже сколько помогли уже мне, и советами и скриптами... и ссылками, если прям всё сам делал я бы ещё месяцев 8 разбирался

а еще много интересного и нужного, да и на все популярные вопросы уже отвечено  вот на этих сайтах:

http://forum.oszone.net/thread-278998.html

http://forum.ru-board.com/topic.cgi?forum=5&topic=46338#1

 

Но это не отменяет нужности этой темы. Тут как бы узконаправленная тема для инсталяторов модпаков World of Tanks    :)

Я там не кого не знаю :) вас не брошу, куда я без вас, а за ссылки спасибо

Edited by liked
Link to comment
Short link
Share on other sites

 

 

Ругается на procedure InitializeWizard();
"Duplicate identifier INITIALIZEWIZARD" ?

Необходимо объединить две процедуры..

Подобным образом:

 procedure InitializeWizard1();
begin
....
end;

 procedure InitializeWizard();
begin
....
InitializeWizard1();
end;
Link to comment
Short link
Share on other sites

Необходимо объединить две процедуры.. Подобным образом:

Или вот так, как я реализовал сохранение/восстановление файла активации XVM

 

// Переименование папки перед инсталяцией
procedure CurStepChanged1(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then                        
begin
RenameFile(ExpandConstant('{app}\res_mods\xvm\db\'),ExpandConstant('{app}\data'));
end;
end;
// Переименование папки после инсталяции
procedure CurStepChanged3(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then                        
begin
RenameFile(ExpandConstant('{app}\data\'),ExpandConstant('{app}\res_mods\xvm\db\'));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
 CurStepChanged1(CurStep);
 CurStepChanged2(CurStep);
 CurStepChanged3(CurStep);
end; 

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

По этому и задаем вопросы тут. Так что уважаемые гуру, относитесь к нам снисходительно...

И  ребята, давайте жить дружно!

 

....и да, чтоб не возникали вопросы,   CurStepChanged2(CurStep);   не лишний, он относится к блоку бэкапа всей папки ресмодс, просто тут не стал показывать...

Edited by -zav-
Link to comment
Short link
Share on other sites

-zav-, хех, а я в общей сложности потратил примерно час. Это с учётом последующего добавления блока поиска и сравнения размера файла.

Link to comment
Short link
Share on other sites

Вот это да сколько помощи, Спасибо шас попробую

 

Всё получилось СПАСИБО  :ok:  :ho:  :ok:

 

интересно чё ещё можно прикольного реализовать

Edited by liked
Link to comment
Short link
Share on other sites

Или вот так

Так я привёл пример по этому же принципу)

 

Это с учётом последующего добавления блока поиска и сравнения размера файла.

Для токена статистики в XVM? а зачем его размеры сравнивать?

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Kotyarko_O, бывало так, что он создавался, но содержимое его было минимальным, отсутствовали многие данные. Статистика при этом не была включена. ТАк что приходилось сравнивать размер и, если он был достаточно большим, копировать файл.

Link to comment
Short link
Share on other sites

Уважаемые, вот такая штука получилась. Ну нет у меня чувства прекрасного... :-( Нужна ваша помощь. Покритикуете? Здоровая критика и предложения без очень глобальных переделок очень даже приветствуются! :-)

Рабочий фон:

post-11632-0-46826300-1401292889_thumb.jpg

При наведении мыши на компонент:

post-11632-0-91833400-1401293239_thumb.jpg

Link to comment
Short link
Share on other sites

Ну нет у меня чувства прекрасного... :-(

А получилось очень даже не плохо :)

 

'Как по мне, этот кусочек палки лишний'

post-16412-0-47680900-1401293667_thumb.jpg

 

UPD: Так же, надпись: "Выберите компоненты, которые вы хотите установить; снимите флажки с компонентов и бла-бла-бла" можно укоротить до: "Выберите компоненты, которые хотите установить.". Тогда освободится немного места над окошком с компонентами, и ему модно будет увеличить высоту - будет удобнее выбирать)

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

А получилось очень даже не плохо :)

 

'Как по мне, этот кусочек палки лишний'

Согласен. Сам об этом думал. Значит... отчекрыжим палочку по самые... :-)

P.S. А танчик этот сами с приятелем отливали... Не удержался и втулил его :-)

Edited by ventura69
Link to comment
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...