Перейти к содержимому
Korean Random
EvilAlex

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

Рекомендуемые сообщения

EvilAlex   

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
AtotIK   

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Fenixx   

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

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

ad97f860d8afe9231d5a72db7af83170.png

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

Изменено пользователем Fenixx

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
EvilAlex   

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

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

ad97f860d8afe9231d5a72db7af83170.png

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

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

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

Flags: exclusive ;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

 

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

Изменено пользователем Red Baron

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
aaturlan   

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

 

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

[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 Надеюсь это то.

Изменено пользователем aaturlan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Fenixx   

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
EvilAlex   

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

 

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;
Изменено пользователем EvilAlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем oleg951709

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Fenixx   

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
EvilAlex   

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

 

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

Изменено пользователем EvilAlex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

olegoleg9517091 скайп 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
EvilAlex   

olegoleg9517091 скайп

Пишет "Нет результатов" !

xxevilalexxx

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

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

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

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


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

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

AppendDefaultDirName = no

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


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
EvilAlex   

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

Как было у 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

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

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

 

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


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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×