Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Bandicam прекрасно справляется, рекомендую.

EvilAlex, разобрался как файлы копировать инсталлятором?

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

Share this post


Link to post

Short link
Share on other sites

Пока у меня приступ невиданной щедрости могу подкинуть скрипт с копированием маской всех файлов из папки. Пиши в ЛС.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Добрый вечер! У меня такой вопрос  

'Как сделать такой выбор?'

ad97f860d8afe9231d5a72db7af83170.png

Помогите пожалуйста!

Edited by Fenixx

Share this post


Link to post

Short link
Share on other sites

Добрый вечер! У меня такой вопрос  

"Как сделать такой выбор?"

ad97f860d8afe9231d5a72db7af83170.png

Помогите пожалуйста!

Вместо этого:

Flags: checkablealone ;
Ставишь это у всех 4х строк:

Flags: exclusive ;
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Подскажите плиз - отключаю одну или несколько форм. тот же фак - выдается ошибка. как раз на  раздел , который написано не удалять. Как правильно отключить форму что бы небыло ошибок?

 

разобрался - первый раз пользовался Inno и не до конца вкурил ее работу. нехватало процедур и из описаний.

 

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

 

вроде тоже разобрался. хотя все равно не понял механизм :D

 

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

Edited by Red Baron

Share this post


Link to post

Short link
Share on other sites

и не подскажет кто нибудь как сделать что бы при выборе пунктов показывалась справа картинка

 

Не знаю это ли вы имели введу сам плохо разбираюсь в этом, но нашел вот этот скрипт:

[setup]

AppName=My Application

AppVersion=1.5

DefaultDirName={pf}\My Application

[Components]

Name: a; Description: 1; Flags: exclusive disablenouninstallwarning;

Name: b; Description: 2; Flags: exclusive disablenouninstallwarning;

Name: c; Description: 3; Flags: exclusive disablenouninstallwarning;

Name: d; Description: 5; Flags: exclusive disablenouninstallwarning;

[Files]

Source: "compiler:WizModernImage.bmp"; Flags: dontcopy solidbreak

Source: "compiler:WizModernSmallImage.bmp"; Flags: dontcopy solidbreak

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

Source: "compiler:WizModernSmallImage-IS.bmp"; Flags: dontcopy solidbreak

[*Code]

var

  InfoBMP: TBitmapImage;

  I_BMP : Array [0..3] of TBitmap;

function InitializeSetup(): Boolean;

begin

  ExtractTemporaryFile('WizModernImage.bmp');

  ExtractTemporaryFile('WizModernSmallImage.bmp');

  ExtractTemporaryFile('WizModernImage-IS.bmp');

  ExtractTemporaryFile('WizModernSmallImage-IS.bmp');

  Result := True;

end;

procedure ComponentsListItemMouseMove(Sender: TObject; X: Integer; Y: Integer; Index: Integer; Area: TItemArea);

begin

  InfoBMP.Bitmap.FreeImage;

  if ((Index >-1) and (Index<4))then InfoBMP.Bitmap := I_BMP[index];

end;

procedure InitializeWizard();

var

  i : Integer;

begin

  with WizardForm do

  begin

    TypesCombo.Width := ScaleX(217);

    with ComponentsList do

    begin

      Width := ScaleX(217);

      OnItemMouseMove := @ComponentsListItemMouseMove;

    end;

  end;

  InfoBMP := TBitmapImage.Create(WizardForm);

  with InfoBMP do

  begin

    Parent := WizardForm.SelectComponentsPage;

    SetBounds(ScaleX(224), ScaleY(50), ScaleX(193), ScaleY(155));

    Stretch := true;

  end;

  for i := 0 to 3 do

  begin

    I_BMP := TBitmap.Create;

    with I_BMP do

    begin

      case i of

        0 : LoadFromFile(ExpandConstant('{tmp}\WizModernImage.bmp'));

        1 : LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage.bmp'));

        2 : LoadFromFile(ExpandConstant('{tmp}\WizModernImage-IS.bmp'));

        3 : LoadFromFile(ExpandConstant('{tmp}\WizModernSmallImage-IS.bmp'));

      end;

    end;

  end;

end;

   

 

P.s Надеюсь это то.

Edited by aaturlan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Name: resmods/crosshairs; Description: Прицелы;
Name: resmods/crosshairs/Hootorez; Flags: exclusive; Description: Прицел 'ZEBRA' [Hootorez];
Name: resmods/crosshairs/LastPilot; Flags: exclusive; Description: Прицел '' [LastPilot];

 

Flags: exclusive; - можно выбрать только одно

Share this post


Link to post

Short link
Share on other sites

Не знаю это ли вы имели введу сам плохо разбираюсь в этом, но нашел вот этот скрипт:

 

 

P.s Надеюсь это то.

 

Спасибо большое! попробую

Share this post


Link to post

Short link
Share on other sites

Всем привет! У меня произошла такая проблема, когда устанавливаешь моды по выбору в инсталляторе то после установке, моды некоторые не работают, хотя все распределил по папкам и прописал в скрипте. Что делать подскажите пожалуйста.

Share this post


Link to post

Short link
Share on other sites

Проверь куда они устанавливаются...

 

P.S.

Вот еще скрипт добавляющий картинку к компонентам...

При наведении появляется картинка:

post-18561-0-56658100-1387768509_thumb.png

 

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
Compression=none
AppId=TheBestAppId
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableDirPage=yes
DisableReadyPage=yes


[Components]
Name: hl2; Description: Half-Life 2; Flags: disablenouninstallwarning
Name: hl2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: hl2\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: ep1; Description: Half-Life 2 Episode One; Flags: disablenouninstallwarning
Name: ep1\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep1\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: ep2; Description: Half-Life 2 Episode Two; Flags: disablenouninstallwarning
Name: ep2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep2\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: portal; Description: Portal; Flags: disablenouninstallwarning
Name: portal\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: portal\en; Description: English; Flags: disablenouninstallwarning exclusive


[Files]
Source: Wasteland_Scanner_con.bmp; Flags: dontcopy nocompression
Source: Strider_early2.bmp; Flags: dontcopy nocompression
Source: Cremator_poster.bmp; Flags: dontcopy nocompression
Source: Portal.bmp; Flags: dontcopy nocompression


[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

const
    UNDEF_INDEX = -777;
    ALPHA_BLEND_LEVEL = 128; // max=Byte=255

    WS_EX_LAYERED = $80000;
    WS_EX_TRANSPARENT = $20;
    LWA_COLORKEY = 1;
    LWA_ALPHA = 2;
    GWL_EXSTYLE = (-20);


var
    InfoPic: TBitmapImage;
    LastIndex: Integer;
    TempPath: String;
    PicForm: TForm;


type
    COLORREF = DWORD;


function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall';


procedure ShowPicHint(const PicFilePath: String);
var
    pt: TPoint;
begin
    if not GetCursorPos(pt) then Exit;
    InfoPic.Bitmap.LoadFromFile(PicFilePath);
    try
        with PicForm do
        begin
            SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
            Show;
        end;
    finally
        SetFocus(WizardForm.Handle);
    end;
end;


procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
    UndefPic: String;
begin
    if Index = -1 then Exit;
    if Index = LastIndex then Exit;
    try
        case TNewCheckListBox(Sender).ItemCaption[Index] of
            'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp';
            'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp';
            'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp';
            'Portal': UndefPic := 'Portal.bmp';
        else
            begin
                LastIndex := UNDEF_INDEX;
                PicForm.Hide;
                Exit;
            end;
        end;
        if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
        ShowPicHint(TempPath + UndefPic);
    finally
        LastIndex := Index;
    end;
end;


procedure CompOnMouseLeave(Sender: TObject);
begin
    PicForm.Hide;
    LastIndex := -1;
end;


procedure InitInfo();
begin
    WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
    WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
    TempPath := AddBackslash(ExpandConstant('{tmp}'));
    LastIndex := UNDEF_INDEX;
    PicForm := TForm.Create(WizardForm)
    with PicForm do
    begin
        BorderStyle := bsNone;
        FormStyle := fsStayOnTop;
        InfoPic := TBitmapImage.Create(PicForm)
        with InfoPic do
        begin
            Parent := PicForm;
            AutoSize := True;
        end;
    end;
    SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
    SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
end;


procedure InitializeWizard();
begin
    InitInfo();
end;
Edited by EvilAlex
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Всем привет, хочу создать свои моды с галочками по их выбору можно какой нибудь скрипт где нужно только заменить имя и т.д, я пробовал этой программой все почти получилось картинки на свои заменил но вот когда проверяю или сохраняю программу идет только далее далее и готово а выбора модов нету(( прошу EvilAlex помоги мне объясни только буду очень благодарен и другие тоже а если можно то вообще видео гайд замути по созданию мод пака

Edited by oleg951709
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Всем привет, хочу создать свои моды с галочками по их выбору можно какой нибудь скрипт где нужно только заменить имя и т.д, я пробовал этой программой все почти получилось картинки на свои заменил но вот когда проверяю или сохраняю программу идет только далее далее и готово а выбора модов нету(( прошу EvilAlex помоги мне объясни только буду очень благодарен и другие тоже а если можно то вообще видео гайд замути по созданию мод пака

А ты разкоментил? строку

#include "Components.iss"                                           ;Êîìïàíåíòû, îíè æå ìîäû
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

А ты разкоментил? строку

#include "Components.iss"                                           ;Êîìïàíåíòû, îíè æå ìîäû

а что изменить что бы устанавливало в танки сразу а то оно устанавливает в танки но создает еще отдельную папку wot а в ней еще и res mods?

Share this post


Link to post

Short link
Share on other sites

Скинь вариант твоего кода. гляну, но первое что приходит в голову. путь неправильно прописан в скрипте ...

 

oleg951709 можно как-то связаться с тобой помимо форума?

Edited by EvilAlex

Share this post


Link to post

Short link
Share on other sites

Скинь вариант твоего кода. гляну, но первое что приходит в голову. путь неправильно прописан в скрипте ...

 

oleg951709 можно как-то связаться с тобой помимо форума?

olegoleg9517091 скайп 

Share this post


Link to post

Short link
Share on other sites

 

 

а что изменить что бы устанавливало в танки сразу а то оно устанавливает в танки но создает еще отдельную папку wot а в ней еще и res mods?

Поддерживаю. Подскажите плиз. Прописано DefaultDirName=C:\Games\World_of_Tanks\

ничего больше добавлять не стал, делать как у автора поиск по реестру тоже не стал, то есть все по дефолту.

При установке если путь не изменять то ставится норм, но если выбрать другую папку то к ней дописывается World_of_Tanks\

Раз ничего не дописывал и все дефолтное то походу это стандартная фишка Inno? как от нее избавиться?


Нашел - ппц перерыл в интернете всего и различные описание и кучу факов и инструкций. но случайно наткнулся.

надо добавить

AppendDefaultDirName = no

тогда не будет добавлять папку.


aaturlan, EvilAlex   спасибо за скрипты, отлично работают. Жаль у меня не хватает умения их использовать так как мне бы хотелось. хотя уже сам не понимаю как лучше. Сначала хотел что бы по щелчку на компонент, теперь думаю это будет не очень удобно. В общем пока эксперементирую :) Как говорится то что мы не знаем попробуем получить методом тыка :)

Share this post


Link to post

Short link
Share on other sites

Основной косяк в том что невнимательно создаете папки...

Как было у oleg951709, он добавил два прицела, в папку прицел:

прицел\джимбо

прицел\делюкс

а в коде было прописано:

исходник: прицел; установить: путь до папки (app)

исходник: прицел\джимбо; установить: путь до папки (app)

исходник: прицел\делюкс; установить: путь до папки (app)

примерно так.

Дак вот косяк в том что инстолятор читает первую строку и копирует содержимое папки "прицел" в клиент по указоному пути.

Чтобы это избежать, убирайте строки с теми папками где есть еще несколько разных модов, и указывайте от папки мода...

Надеюсь понятно объяснил!

 

Пример:

Неправильно!

Source: "MODS\PRICEL\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P;
Source: "MODS\PRICEL\Jimbo\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P\J;
Source: "MODS\PRICEL\Deluxe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P\D;
Правильно!

Source: "MODS\PRICEL\Jimbo\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P\J;
Source: "MODS\PRICEL\Deluxe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P\D;
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

Основной косяк в том что невнимательно создаете папки...

это само собой. но я так понял он говорил именно о том что в строке где указывается папка автоматом добавляется {app} без диска.

отключается только тем что я привел выше.

вообще нашел много хороших описаний функций и прочего - но на русском языке они все не полные. порой находится в скриптах и вот как в этом случае что то неописаное.

 

Кстати что меня больше всего бесит в Inno - то что нет связи между редактором форм и кодом. что то меняешь в форме в код многое в код не вставляется. А меняешь в коде в форму не вставляется уж 100%. получается редактор форм только для создания инсталляций через мастера.


К чему я поныл про редактор форм - вот вожусь с картинками - вариант от EvilAlex работает очень удобно но мне не нравится что картинка ползает за мышкой и закрывает поля - я альфу сделал 255 что бы было виднее. отдаляю картинку в бок - но пользователь может ведь навестись и на край строки и тогда картинка уплывает далеко. Как привязать ее координаты к какой форме не знаю. Если знаете подскажите пожалуйста.

 

в варианте от aaturlan идет привязка к форме, сжимается выбор компонентов и рядом картинка. у меня названия компонентов длинные и я расширил форму. Теперь методом тыка пробую расширить список и перенести картинку.

 

Вот что бывает когда незнание идет к желаемому :)

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.

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