Skip to content

Lack of properly automated installation process #25

@Krzyhau

Description

@Krzyhau

Right now, HAT installation is done through simple scripts (batch script for Windows, shell script for Linux). These script have some issues due to lacking functionalities (export to default MONOMODDED_FEZ.exe, or even lack of proper game launching without further tinkering, as it is explained by #22). On top of expanding those scripts, I think it would be best to develop a standalone multi-platform executable for handling the entire installation process, as well as handling all of potential edge cases.

Here's what I'm thinking - the installer will be mainly delivered as a single executable for target platform, optionally including its dependencies if someone wants to have an offline installation. Once it's launched, it does the following:

  1. Attempts to find FEZ installation directory (where FEZ.exe is located). If path could not be located, return an error. In the future, external application could use that error to ask user for specific path. Following paths should be considered, in given order:
    • Path given as a command line parameter
    • Current working directory (launching installer in FEZ directory should point to it)
    • Search in steamapps/common
    • Search in default installation directory for all platforms.
  2. Checks if dependencies (HAT binaries, MonoMod, Mono dependencies for Linux) are available, and if not, downloads them.
  3. Patch game's executable with MonoMod. MONOMODDED_FEZ.exe should be the output of that operation.
  4. Rename MONOMODDED_FEZ.exe to HAT.exe and change its icon.
  5. For Linux, modify launch scripts and create a MonoKickstart copy for HAT launching purposes.

I imagine it could land into a separate repository. Once it's done and functional, scripts from this repository could be removed, and instead replaced with a detailed manual installation process one can follow if they decide not to use automated installer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions