Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Всем доброе утро !Парни кто сможет скинуть файлы чтоб при запуске мод пака писало игра запущена, закройте!!!

Share this post


Link to post

Short link
Share on other sites

Всем доброе утро !Парни кто сможет скинуть файлы чтоб при запуске мод пака писало игра запущена, закройте!!!

Код

function NextButtonClick(CurPageID: Integer): Boolean;

var

ver:string;

SomeVar:boolean;

begin

Result := True;

case CurPageID of wpWelcome:

if RunTask('WorldOfTanks.exe', False) then

if MsgBox('Танки запущены. Закрыть?', mbConfirmation, MB_YESNO) = IDYES then

KillTask('WorldOfTanks.exe')

else

Result := False;

end;

end;

Edited by woole

Share this post


Link to post

Short link
Share on other sites

Всем доброе утро !Парни кто сможет скинуть файлы чтоб при запуске мод пака писало игра запущена, закройте!!!

#define ISTask  "ISTask.dll"
[Files]
Source: dll\{#ISTask}; Flags: dontcopy
[Code]
Function KillTask(ExeFileName: ansistring): Integer;
external 'KillTask@files:{#ISTask} stdcall delayload';
Function RunTask(FileName: ansistring; bFullpath: Boolean): Boolean;
external 'RunTask@files:{#ISTask} stdcall delayload';
Function KillTaskRunTask: Boolean;
begin
  if RunTask('WorldOfTanks.exe', false) then
   begin
    if MsgBoxEx(0, 'Игра World of Tanks запущена. Закрыть и продолжить установку?',
     'Необходимо закрыть игру!', MB_YESNO or MB_ICONQUESTION, 0, 0) = idYes then
   begin
    KillTask('WorldOfTanks.exe');
  end
   else
   begin
   KillTask('WorldOfTanks.tmp');
end;
end;
end;

Share this post


Link to post

Short link
Share on other sites

Господа, не подскажите, как получить содержимое текстового файла из сети в переменную?

Share this post


Link to post

Short link
Share on other sites

Господа, не подскажите, как получить содержимое текстового файла из сети в переменную?

In the beginning... загружаешь файл, проверяешь его наличие.

Затем:

Procedure ReadFromDownlFile();
var
 Text: AnsiString;
begin
 ExtractTemporaryFile('text.txt');
 LoadStringFromFile(ExpandConstant('{tmp}\text.txt'), Text);
end;

И делаешь с Text уже всё, что нужно :)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

In the beginning... загружаешь файл, проверяешь его наличие.

Затем:

Procedure ReadFromDownlFile();
var
 Text: AnsiString;
begin
 ExtractTemporaryFile('text.txt');
 LoadStringFromFile(ExpandConstant('{tmp}\text.txt'), Text);
end;
И делаешь с Text уже всё, что нужно :)

 

Спасибо, попробую

 

Кхм, а как скачать файл?) В самом начале

Edited by woole

Share this post


Link to post

Short link
Share on other sites

@woole, idp, itd.
Есть ещё способ загрузки средствами инно, но рациональнее использовать вышеприведённые плагины.

Share this post


Link to post

Short link
Share on other sites

Парни как возле кнопок (далее назад отмена) с левой стороны добавит картинку на которую будет играть музыка при установки?

Share this post


Link to post

Short link
Share on other sites

Парни как возле кнопок (далее назад отмена) с левой стороны добавит картинку на которую будет играть музыка при установки?

Bass + botva2.

Share this post


Link to post

Short link
Share on other sites

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

Держи

[setup]

AppName=Моя программа

AppVersion=1.5

AppPublisher=YURSHAT

DefaultDirName={pf}\Моя программа

 

[Languages]

Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"

 

[CustomMessages]

RU.CompName1=Компонент 1

RU.CompName2=Компонент 2

RU.ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание.

RU.ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью.

RU.CompDesc1=Описание первого компонента

RU.CompDesc2=Описание второго компонента

 

[Files]

Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy

Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy

 

[Types]

Name: full; Description: Full installation; Flags: iscustom

 

[Components]

Name: comp1; Description: "{cm:CompName1}"; Types: full

Name: comp2; Description: "{cm:CompName2}"; Types: full

 

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

WizardForm.SelectComponentsLabel.Hide;

WizardForm.TypesCombo.Hide;

WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(205));

WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;

WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

 

CompDescImgPanel := TPanel.Create(WizardForm);

with CompDescImgPanel do

begin

Parent := WizardForm.SelectComponentsPage;

SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120));

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(192), ScaleY(125), ScaleX(225), ScaleY(80));

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

end;

Edited by Kaster62rus

Share this post


Link to post

Short link
Share on other sites

Держи

[setup]

AppName=Моя программа

AppVersion=1.5

AppPublisher=YURSHAT

DefaultDirName={pf}\Моя программа

 

[Languages]

Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"

 

[CustomMessages]

RU.CompName1=Компонент 1

RU.CompName2=Компонент 2

RU.ComponentsInfo=Наведите курсор мыши на компонент, чтобы прочитать его описание.

RU.ComponentsImgInfo=Наведите курсор мыши на компонент, чтобы посмотреть его превью.

RU.CompDesc1=Описание первого компонента

RU.CompDesc2=Описание второго компонента

 

[Files]

Source: "compiler:WizModernImage.bmp"; DestName: "CompDescImg1.bmp"; Flags: dontcopy

Source: "compiler:WizModernImage-IS.bmp"; DestName: "CompDescImg2.bmp"; Flags: dontcopy

 

[Types]

Name: full; Description: Full installation; Flags: iscustom

 

[Components]

Name: comp1; Description: "{cm:CompName1}"; Types: full

Name: comp2; Description: "{cm:CompName2}"; Types: full

 

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

WizardForm.SelectComponentsLabel.Hide;

WizardForm.TypesCombo.Hide;

WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(205));

WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;

WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

 

CompDescImgPanel := TPanel.Create(WizardForm);

with CompDescImgPanel do

begin

Parent := WizardForm.SelectComponentsPage;

SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120));

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(192), ScaleY(125), ScaleX(225), ScaleY(80));

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

end;

Благодарю!

Share this post


Link to post

Short link
Share on other sites

Не получается:

 

#define ISTask  "ISTask.dll"
[Files]
Source: Files\{#ISTask}; Flags: dontcopy
[code]
//////////==== Проверка правилността на папката на играта - търси ехе файла на WoT ====\\
function NextButtonClick1(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Неправилно указана папката на World of Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;
//////////====| До тук са редовете за проверка правилността на папката на играта |====\\

//////====== запущенной игре
function KillTask(ExeFileName: string): Integer;
  external 'KillTask@files:ISTaskU.dll stdcall';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@files:ISTaskU.dll stdcall';

function InitializeSetup1(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then begin
    if MsgBox('ВНИМАНИЕ!' #13 'НЕ рекомендуется устанавливать при запущенной игре.' #13 'Закрыть WorldOfTanks и продолжить установку?', mbError, mb_YesNo) = idYes then begin
      KillTask('WorldOfTanks.exe');
      Result := True;
    end else
      Exit;
    end;
  Result := True;
 end;
////////////=== END запущенной игре

Function InitializeSetup(): Boolean;
begin
 InitializeSetup1();
 InitializeWizard1();
Result := True;
end;
post-21711-0-41117500-1424779419_thumb.png

Share this post


Link to post

Short link
Share on other sites

Не получается:

 

#define ISTask  "ISTask.dll"
[Files]
Source: Files\{#ISTask}; Flags: dontcopy
[code]
//////////==== Проверка правилността на папката на играта - търси ехе файла на WoT ====\\
function NextButtonClick1(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Неправилно указана папката на World of Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;
//////////====| До тук са редовете за проверка правилността на папката на играта |====\\

//////====== запущенной игре
function KillTask(ExeFileName: string): Integer;
  external 'KillTask@files:ISTaskU.dll stdcall';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@files:ISTaskU.dll stdcall';

function InitializeSetup1(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then begin
    if MsgBox('ВНИМАНИЕ!' #13 'НЕ рекомендуется устанавливать при запущенной игре.' #13 'Закрыть WorldOfTanks и продолжить установку?', mbError, mb_YesNo) = idYes then begin
      KillTask('WorldOfTanks.exe');
      Result := True;
    end else
      Exit;
    end;
  Result := True;
 end;
////////////=== END запущенной игре

Function InitializeSetup(): Boolean;
begin
 InitializeSetup1();
 InitializeWizard1();
Result := True;
end;
2015-02-24_135519.png Добавь InitializeSetup

Добавь InitializeSetup

 

 

 

 

А у меня вот в чём проблема , было всё ок 

 

Edited by Pokaritel_VBR

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...