Jump to content
Korean Random

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


Recommended Posts

Автоматически игру найти можно в случае её установки в системе. В любом другом случае (писал в предыдущем посте) это невозможно.

Старые версии инсталлятора игры вносили данные в ветке HKLM, сейчас вносит в HKCU. Можно совместить поиск по ключу из двух веток и получение пути:

[Setup]
DefaultDirName={code:GetInstDir}

[~~Code~~]
function GetInstDir(const ResultCode: String): String;
begin
  If not RegKeyExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
  begin
    If RegKeyExists(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
    RegQueryStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation',  ResultCode);
    If ResultCode <> '' then Result:=ResultCode;
  end
  else
    RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation',  ResultCode);
    If ResultCode <> '' then Result:=ResultCode
  else
      Result:=ExpandConstant('C:\Games\World_of_Tanks');
end;

В данном случае идёт поиск в HKLM, если нет такого ключа, то в HKCU, если и там нет, то возвращает значение C:\Games\World_of_Tanks (сюда по умолчанию предлагает установить игру инсталлятор WoT).

 

 

Вот что выдает

Required function or procedure 'GetInstrDir' not found

Link to comment
Short link
Share on other sites

Apmageddon, дальше своей головой думай что и куда вставлять. Одна строка из-за особенностей вставки кода на этом форуме изменена. Какая - додумаешься сам. Во всех моих постах так сделано.

Edited by AtotIK
Link to comment
Short link
Share on other sites

Вот что выдает

Required function or procedure 'GetInstrDir' not found

function WotDir(S:String): String; 
var
  ResultCode: String;
begin
  If not RegKeyExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
  begin
    If RegKeyExists(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then
    RegQueryStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation',  ResultCode);
    If ResultCode <> '' then Result:=ResultCode;
  end
  else
    RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation',  ResultCode);
    If ResultCode <> '' then Result:=ResultCode
  else
      Result:=ExpandConstant('C:\Games\World_of_Tanks');
end; 

  • Downvote 2
Link to comment
Short link
Share on other sites

Вот что выдает

Required function or procedure 'GetInstrDir' not found

[setup]

DefaultDirName={code:GetInstDir}

 

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

Edited by TneRED
  • Upvote 1
  • Downvote 1
Link to comment
Short link
Share on other sites

Добрые люди, подскажите.

Как сделать так, чтобы пункт был неактивен. Чтобы его было видно (но был серый) и его было нельзя выбрать.

Link to comment
Short link
Share on other sites

 

 

Как сделать так, чтобы пункт был неактивен. Чтобы его было видно (но был серый) и его было нельзя выбрать.
Дописать компоненту флаг fixed.
  • Upvote 1
Link to comment
Short link
Share on other sites

Еще маленький вопрос.

Как сделать принудительную установку моего файла. можно даже, чтобы он не отображался в выборе)

 

P.s. Искал поиском в теме, не нашел

Edited by guceds
Link to comment
Short link
Share on other sites

Да не присваивай их к компонентам и всё. Логически подумать никак? :wah:

Так, просто валенок :D Мысль была, но пробовать не стал, решил уточнить. Спасибо за прозрение :)

 

Link to comment
Short link
Share on other sites

Щас наверно очень глупый вопрос задам.... но все же. На каком языке программирования написан данный скрипт? (Мод пак)... просто хочу уже меньше спрашивать. посоветуйте материалы для изучения пожалуйста.

Link to comment
Short link
Share on other sites

@licimer, objectPascal.

Для изучения можете взять встроенную справку и сборник примеров (есть почти всё, что нужно).
Здесь я давал ссылку на расширенный компилятор с полу-русскоязычной справкой и встроенной сборкой примеров.

Link to comment
Short link
Share on other sites

Я не имею ввиду что я не смог установить! Я все варианты перепробвал которые нашел с 1 по 40 страницы ток 3 варианта нашел(От самого автора,с права картинка и тоже самое с коментами) Мне не понравилась не одна из вариантов  просто хочу еще что нибуть другое попробывать, лень листать эту тему ведь тут не 30 страниц:)

Также ищу код на проверку запуска клиента игры тоесть процесса worldoftanks.exe и чек версий клиента

Тебе лень, а нам нет?

Link to comment
Short link
Share on other sites

@licimer, objectPascal.

Для изучения можете взять встроенную справку и сборник примеров (есть почти всё, что нужно).

Здесь я давал ссылку на расширенный компилятор с полу-русскоязычной справкой и встроенной сборкой примеров.

спасибо. изучу

Link to comment
Short link
Share on other sites

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

Загугли форумы inno

Edited by Dark_Knight_MiX
Link to comment
Short link
Share on other sites

Всем привет,народ!
Подскажите пожалуйста,как правильно организовать PMOD в своём мод паке.
Пункт PMOD c выбором компонентов,хочу что бы выбрал к примеру "Информация об вашем респауне на экране загрузки" он автоматом с false на true поменялся,можно ли такое сделать или же есть другие правильные варианты?Очень надеюсь на помощь,мозг подкипает уже.

Link to comment
Short link
Share on other sites

Всем привет,народ!

Подскажите пожалуйста,как правильно организовать PMOD в своём мод паке.

Пункт PMOD c выбором компонентов,хочу что бы выбрал к примеру "Информация об вашем респауне на экране загрузки" он автоматом с false на true поменялся,можно ли такое сделать или же есть другие правильные варианты?Очень надеюсь на помощь,мозг подкипает уже.

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

  • Upvote 1
Link to comment
Short link
Share on other sites

Как установить какой либо файл в res_mods при деинсталляции и после восстановления бэкапа?

 

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
  begin
  if not DirExists(ExpandConstant('{app}\res_mods')) then CreateDir(ExpandConstant('{app}\res_mods'));
  CreateDir(ExpandConstant('{app}\res_mods\{#MyAppVer}'));
  if DirExists(ExpandConstant('{app}\backup')) then
  begin
   if MoveDir(ExpandConstant('{app}\backup\'), ExpandConstant('{app}\res_mods\')) then
    DelDir(ExpandConstant('{app}\backup'), False);
  end;
 end;
end;

Edited by -zav-
Link to comment
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...