Jump to content
Korean Random

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


Recommended Posts

2 часа назад, DraugDM сказал:

ну сейчас у меня каждый мод отдельный в папке по полному пути лежит - mods\1.28.0.0 - и сам мод!

в иносетап добавил \mods\{#Patch}\

2024-08-16_165854.png.ffb3e6c9921a5e61441a6b50784ed228.png

 

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

а вот с конфигами которые лежат рядом с папкой 2024-08-16_161254.png

 

не знаю как быть...


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

Или писать кастомные функции для inno setup.

Мне проще, у меня все моды в архивах и кастомные функции распаковки. Т.е так как привязка к чекбоксам, я могу несколько архивов поочерёдно распаковать в 1 папку. Насколько я знаю без костылей напрямую inno setup не даст это сделать. И у тебя выбор, либо переписывать скрипт, либо делать внешнюю утилиту на батнике. Я бы советовал питон. Что-то такое:
 

import os
"""
Скрипт парсит все папки которые рядом с скриптом.
Входит в каждую и ищет в ней old_version
Если есть совпадение, то заменяет old_version на new_version
"""

# Какую версию на какую заменить
old_version = "1.28.0.0"
new_version = "1.29.0.0"

def rename_directories(base_dir):
    for entry in os.listdir(base_dir):
        entry_path = os.path.join(base_dir, entry)
        if os.path.isdir(entry_path):
            for sub_entry in os.listdir(entry_path):
                sub_entry_path = os.path.join(entry_path, sub_entry)
                if os.path.isdir(sub_entry_path) and old_version in sub_entry:
                    new_name = sub_entry.replace(old_version, new_version)
                    new_path = os.path.join(entry_path, new_name)
                    os.rename(sub_entry_path, new_path)
                    print(f"Папка переименована: {sub_entry_path} -> {new_path}")

# Путь до директории где лежит скрипт.
base_directory = os.path.dirname(os.path.abspath(__file__))
# Можно указать свой путь вот так:
# base_directory = 'свой/путь/до/папки'
rename_directories(base_directory)

 

Link to comment
Short link
Share on other sites

6 минут назад, Qirashi сказал:


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

Или писать кастомные функции для inno setup.

Мне проще, у меня все моды в архивах и кастомные функции распаковки. Т.е так как привязка к чекбоксам, я могу несколько архивов поочерёдно распаковать в 1 папку. Насколько я знаю без костылей напрямую inno setup не даст это сделать. И у тебя выбор, либо переписывать скрипт, либо делать внешнюю утилиту на батнике. Я бы советовал питон. Что-то такое:
 

import os
"""
Скрипт парсит все папки которые рядом с скриптом.
Входит в каждую и ищет в ней old_version
Если есть совпадение, то заменяет old_version на new_version
"""

# Какую версию на какую заменить
old_version = "1.28.0.0"
new_version = "1.29.0.0"

def rename_directories(base_dir):
    for entry in os.listdir(base_dir):
        entry_path = os.path.join(base_dir, entry)
        if os.path.isdir(entry_path):
            for sub_entry in os.listdir(entry_path):
                sub_entry_path = os.path.join(entry_path, sub_entry)
                if os.path.isdir(sub_entry_path) and old_version in sub_entry:
                    new_name = sub_entry.replace(old_version, new_version)
                    new_path = os.path.join(entry_path, new_name)
                    os.rename(sub_entry_path, new_path)
                    print(f"Папка переименована: {sub_entry_path} -> {new_path}")

# Путь до директории где лежит скрипт.
base_directory = os.path.dirname(os.path.abspath(__file__))
# Можно указать свой путь вот так:
# base_directory = 'свой/путь/до/папки'
rename_directories(base_directory)

 

спс! буду пробывать... 

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