Jump to content
Korean Random
EvilAlex

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

Recommended Posts

а че заходить то, на эти вопросы не один раз давались ответы, просто нужно почитать тему :)

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

а че заходить то, на эти вопросы не один раз давались ответы, просто нужно почитать тему :)

да тут пока все темы перечитаешь забудешь зачем пришел))

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

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

[setup]

AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Components]
Name: KMP; Description: MODPACK ;



type
TComponentDesc = record
Description: String;
ImageName: String;
Index: Integer;
end;

var
ComponentsPage: TWizardPage;
ComponentsList: TNewCheckListBox;
CompDescs: array of TComponentDesc;
CompDescPanel, CompDescImgPanel: TPanel;
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;
end else
begin
CompDescImg.Hide;
end;
LastIndex := Index;
end;

procedure CompListMouseLeave(Sender: TObject);
begin
CompDescImg.Hide;
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 RedesignWizardForm;
begin
ComponentsPage := CreateCustomPage(wpWelcome, SetupMessage(msgWizardSelectComponents), SetupMessage(msgSelectComponentsDesc));

ComponentsList := TNewCheckListBox.Create(WizardForm);
with ComponentsList do
begin
Parent := ComponentsPage.Surface;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(205));
OnItemMouseMove := @ShowCompDescription;

AddCheckBox('МСМТМИТМТМ', '', 0, False, True, False, True, nil);

AddRadioButton('Battle Assistant', '', 1, False, True, nil);
end;

CompDescImgPanel := TPanel.Create(WizardForm);
with CompDescImgPanel do
begin
Parent := ComponentsPage.Surface;
SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120)); //=========размер рамки картинки
BevelInner := bvLowered;
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;

AddCompDescription(2, ('CompDesc1'), 'CompDescImg1.bmp');
end;

function IsComponent(CompIndex: Integer): Boolean;
var
i: Integer;
begin
Result := False;
for i := 0 to ComponentsList.ItemCount - 1 do
begin
if CompIndex <= (ComponentsList.ItemCount - 1) then
Result := ComponentsList.Checked[CompIndex];
end;
end;


procedure InitializeWizard();
begin
RedesignWizardForm;

end;
Edited by sergy2010

Share this post


Link to post

Short link
Share on other sites

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

[setup]

AppName=My Program

AppVerName=My Program v.1.2

DefaultDirName={pf}\My Program

 

[Components]

Name: KMP; Description: MODPACK ;

 

 

type

TComponentDesc = record

Description: String;

ImageName: String;

Index: Integer;

end;

 

var

ComponentsPage: TWizardPage;

ComponentsList: TNewCheckListBox;

CompDescs: array of TComponentDesc;

CompDescPanel, CompDescImgPanel: TPanel;

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;

end else

begin

CompDescImg.Hide;

end;

LastIndex := Index;

end;

 

procedure CompListMouseLeave(Sender: TObject);

begin

CompDescImg.Hide;

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 RedesignWizardForm;

begin

ComponentsPage := CreateCustomPage(wpWelcome, SetupMessage(msgWizardSelectComponents), SetupMessage(msgSelectComponentsDesc));

 

ComponentsList := TNewCheckListBox.Create(WizardForm);

with ComponentsList do

begin

Parent := ComponentsPage.Surface;

SetBounds(ScaleX(0), ScaleY(0), ScaleX(184), ScaleY(205));

OnItemMouseMove := @ShowCompDescription;

 

AddCheckBox('МСМТМИТМТМ', '', 0, False, True, False, True, nil);

 

AddRadioButton('Battle Assistant', '', 1, False, True, nil);

end;

 

CompDescImgPanel := TPanel.Create(WizardForm);

with CompDescImgPanel do

begin

Parent := ComponentsPage.Surface;

SetBounds(ScaleX(192), ScaleY(0), ScaleX(225), ScaleY(120)); //=========размер рамки картинки

BevelInner := bvLowered;

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;

 

AddCompDescription(2, ('CompDesc1'), 'CompDescImg1.bmp');

end;

 

function IsComponent(CompIndex: Integer): Boolean;

var

i: Integer;

begin

Result := False;

for i := 0 to ComponentsList.ItemCount - 1 do

begin

if CompIndex <= (ComponentsList.ItemCount - 1) then

Result := ComponentsList.Checked[CompIndex];

end;

end;

 

 

procedure InitializeWizard();

begin

RedesignWizardForm;

 

end;

wpWelcome на wpSelectComponents замени

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

я тоже надеюсь пока только катал на гк и в рандом незаходил 


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

Share this post


Link to post

Short link
Share on other sites

я тоже надеюсь пока только катал на гк и в рандом незаходил 

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

Вот пожалуйста, хотя все это есть в этой теме, но ленивым помогу.....

'Скрипт автоопределения папки с игрой'

; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!
#define Patch               "0.9.16"
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={code:WotDirNameRU}
[Code]
function WotDirNameRU(Path: String): String; // ключ для основного клиента  {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1
begin
 if RegKeyExists(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path);
  Result := Path
 end else
  Result := ExpandConstant('C:\Games\World_of_Tanks');
end;
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
function WotDirNameCT(Path: String): String; // ключ для тестового клиента {1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1
begin
 if RegKeyExists(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', Path);
  Result := Path
 end else
  if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1') then
 begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', Path);
  Result := Path
 end else
 if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', Path);
  Result := Path
 end else
  Result := ExpandConstant('C:\Games\World_of_Tanks_CT');
end;


Edited by Nowik1971
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

всё равно не находит папку с игрой в скрипте не чего не изменял прописал как на скриншоте

Edited by sergy2010

Share this post


Link to post

Short link
Share on other sites

всё равно не находит папку с игрой в скрипте не чего не изменял прописал как на скриншоте

Если в примере работает, то проверяй на своей стороне.... ты мой пример просто скомпиль и проверь и все будет работать... если все работает на примере, то ищи ошибку у себя....

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

скомпилер не фига не ищет C:\Program Files (x86)\My Application

У себя в скрипте поменяй DefaultDirName=C:\Games\World_of_Tanks на DefaultDirName={code:WotDirNameRU} и все будет работать блин...

Share this post


Link to post

Short link
Share on other sites

да давно я поменял ,у меня танки на диске D а он мне всё суёт диск С


может просто ключи не подходят под мою версию винды и всё в таком роде 

Share this post


Link to post

Short link
Share on other sites

да давно я поменял ,у меня танки на диске D а он мне всё суёт диск С

может просто ключи не подходят под мою версию винды и всё в таком роде 

Ищет по реестру установленную программу и если ставил на С, а потом просто перенес на D то не знаю найдет или нет....

Share this post


Link to post

Short link
Share on other sites

всё равно он мне даёт путь C:\Games\World_of_Tanks а у меня танки на диске D


Ищет по реестру установленную программу и если ставил на С, а потом просто перенес на D то не знаю найдет или нет 

скорей всего так и есть я скачивал на диск С а потом перетащил на диск D

Share this post


Link to post

Short link
Share on other sites

всё равно он мне даёт путь C:\Games\World_of_Tanks а у меня танки на диске D

скорей всего так и есть я скачивал на диск С а потом перетащил на диск D

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

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

да ща скачаю танки на другой диск и проверю


хотя твоя сборка сразу мой путь находит

Share this post


Link to post

Short link
Share on other sites

... модератор удали этот пост.. пожалуйста....

 

 

Edited by Nowik1971
  • Upvote 1
  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

походу всё получилось даже с не доскачеными танками нашёл путь туда куда нужно

Edited by sergy2010

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