Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Я не правил остальной код, а только пофиксил то, на что была жалоба.

А, понятно. Я просто где-то по теме уже видел пути с Wow6432Node. Решил уже тебе написать, увидят же многие.

Share this post


Link to post

Short link
Share on other sites

Нужно перенести нужный код в отдельную процедуру и вызывать его на этапе ssInstall:

[Files]
Source: "{app}\res\audio\*.*"; DestDir: "{app}\res_mods\{code:GetModsDirINI}\audio"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion external; Check: ModsInstallCheck_1;

[~Code~]
var
  DirPath, FilePath: AnsiString;

function ModsInstallCheck_1(): Boolean;
begin
  Result:=False;
  DirPath:=ExpandConstant('{app}\res_mods\') + GetModsDir + ExpandConstant('\audio');
  If DirExists(DirPath) then
  FilePath:=ExpandConstant('{app}\res_mods\') + GetModsDir + ExpandConstant('\audio\ingame_voice.fev');
  If DirExists(DirPath) and FileExists(FilePath) then
  begin
    Result:=True;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssInstall then
begin
  ModsInstallCheck_1();
end;

Так это не совсем правильно. Тут выполняется функция ModsInstallCheck_1 2 раза. Из секции файлов и из CurStepChanged (второе можно просто убрать).

Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Так это не совсем правильно. Тут выполняется функция ModsInstallCheck_1 2 раза. Из секции файлов и из CurStepChanged.

Ага, в код же не сильно вникал. Можно создать ещё одну булеву функцию с подключением этой и брать уже из неё значение! :heh:

 

Upd. Подправил вроде. Даже нет времени всё это проверить. :hmm:

Edited by AtotIK
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Ещё один вопрос.

Как вместо Abort прикрутить закрытие инсталлятора?

(т.е. если ДА закрывается игра, если НЕТ инсталлятор)

 

Function InitializeSetup1(): 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

    Abort;

end;

Share this post


Link to post

Short link
Share on other sites

 

 

Как вместо Abort прикрутить закрытие инсталлятора?
В InitializeSetup можно использовать Result := False;

Share this post


Link to post

Short link
Share on other sites

В InitializeSetup можно использовать Result := False;

Спасибо, но чёто не понял.

Share this post


Link to post

Short link
Share on other sites

Спасибо, но чёто не понял.

Function InitializeSetup1(): Boolean;
begin
 if RunTask('WorldOfTanks.exe', false) then
 begin
  case MsgBoxEx(0, 'World of Tanks запущена!', 'Необходимо закрыть мгру!', MB_YESNO or MB_ICONQUESTION, 0, 0) of
   IDYES:
   begin
    KillTask('WorldOfTanks.exe');
    Result := True;
   end;
   INDO:
   begin
    Result := False;
   end;
  end;
 end;
end;

Но работа зависит от того, как устроена основная функция InitializeSetup.

Если правильно ею пользоваться - всё будет кул.

 

Универсально будет так:

Function InitializeSetup1(): Boolean;
begin
 ...
end;

Function InitializeSetup2(): Boolean;
begin
 ...
end;

Function InitializeSetup(): Boolean;
begin
 Result := InitializeSetup1() and InitializeSetup2();
end;
Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

если знаешь какую-нибудь программу которая может долго записывать видео и при этом вес видео не превысит пары гигов, скинь название или сыль на прогу, буду благодарен и попробую сделать мануал !

uvscreencamera

Share this post


Link to post

Short link
Share on other sites

@sergey spb, ну так в чём проблема?

С одной функцией же всё логично-понятнее.

Function InitializeSetup1(): Boolean;
begin
 if RunTask('WorldOfTanks.exe', false) then
 begin
  case MsgBoxEx(0, 'World of Tanks запущена!', 'Необходимо закрыть мгру!', MB_YESNO or MB_ICONQUESTION, 0, 0) of
   IDYES:
   begin
    KillTask('WorldOfTanks.exe');
    Result := True;
   end;
   IDNO:
   begin
    Result := False;
   end;
  end;
 end;
end;

Function InitializeSetup(): Boolean;
begin
 Result := InitializeSetup1();
end;

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

@sergey spb, а сам не догадался исправить?

INDO на IDNO поменяй. Исправил пост выше.

Share this post


Link to post

Short link
Share on other sites

@Kotyarko_O,@AtotIK,

Комрады-гуру.

Спасибо за советы и помощь. Попробую всё это дело правильно вщемить в инсталлятор. Все-таки для скриптов необходимо сильно развитое правое полушарие, а у меня на этапе begin уже начинает всё путаться))).

Share this post


Link to post

Short link
Share on other sites

@xasic, не зря же мы тут сидим и наводим всех на путь истинный  :gg:

Edited by Kotyarko_O
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

@sergey spb, а сам не догадался исправить?

INDO на IDNO поменяй. Исправил пост выше.

Спасибо, туплю!

Вроде всё сделал, но ... если ДА - закрываеться WoT

                                        если НЕТ - продолжает работать инсталлятор .

Share this post


Link to post

Short link
Share on other sites

 

 

если НЕТ - продолжает работать инсталлятор
Значит что-то ещё мешает.
Пример, который я дал, не может пропустить.

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