I'm working on an installer Majesty Gold HD GOG

Hello!

I’ve been using Lutris for about two weeks now, doing some tests and I’m really satisfied with the results (mostly). One of my favorite games has support but only for the Steam installer, so I decided to create my own fork.

It’s still work in progress, but the game installs and you can play normally :slight_smile:

name: Majesty BETA
game_slug: majesty-beta
version: Installer
slug: my-game-installer
runner: wine

script:
  game:
    exe: drive_c/GOG Games/Majesty Gold HD/MajestyHD.exe
    prefix: $GAMEDIR/drive_c/GOG Games/Majesty Gold HD
    arch: win64
    working_dir: $GAMEDIR/drive_c/GOG Games/Majesty Gold HD
    install_gecko: false
    install_mono: false
  files:
  - installer: "N/A:Select the game's setup file"
  installer:
  - task:
      name: winetricks
      prefix: $GAMEDIR
      app: vcrun2008
  - task:
      executable: installer
      name: wineexec
      prefix: $GAMEDIR
      arch: win64

# NOTE I had to install winbind from apt
# NOTE sudo apt install gstreamer1.0-plugins-good:i386

I’ve been going through the docs and I did the best I could, but I still don’t grasp everything. I’ve tried wine ages ago and I know how powerful it can be, but I’m still mostly new to wine/winetricks.

That being said, I have a few issues/questions about the whole process;

Installing dependencies

After the game installed I had the sound effects and audio from the cinematic, but no in-game music. Turned out I was missing 32-bit plugins for GStreamer good.

sudo apt install gstreamer1.0-plugins-good:i386

Those plugins are not mentioned anywhere in the installation instructions for lutris. Maybe this should be added?

wine-mono and wine-gecko being annoying

Despite using:

    install_gecko: false
    install_mono: false

in the installer I’m still being asked to install wine-mono and (twice) wine-gecko during the installation. I quit the installer when all is done. I launch and I’m being again asked about wine-mono and wine-gecko. Why is that?

First run of the game is different than the others

Right after the installation the GOG installer offers to play the game. I run the game and create profile firstrun and exit. I close all windows except for the Lutris main window. Upon launch of the game I have full-screen and don’t have the firstrun profile. Why is that? Is the game treated in a different manner when installing and that state gets discarded when Lutris finishes the installation?

Dependencies on vcredist and directx

The GOG installer will try to install two runtimes at the end of the process:

  • Visual C++ Redist 2008
  • DirectX 9.0c

Looks like I managed satisfy it partially with the vcrun2008 winetrick but when GOG tries to install DirectX 9.0c I’m seeing a ton of those errors in the console:

0066:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId="1.3.6.1.4.1.311.2.1.25"
0066:fixme:wintrust:SOFTPUB_VerifyImageHash Cannot verify hash for pszObjId="1.3.6.1.4.1.311.2.1.25"
0118:fixme:heap:RtlSetHeapInformation 0x790000 0 0x22f970 4 stub
0118:fixme:heap:RtlSetHeapInformation 0x790000 0 0x22f970 4 stub

Is this an issue? What winetrick should I use? There’s a bunch of them related to DirectX 9.0 and I have no idea how to proceed here.

winbind deps

I also installed winbind because of an ntlm error. Sadly, winbind pulls in python2.7 which is EOLed, so if I can get rid of it, I’d love to. I tried to find a winetricks command that would help, but no success.

Other

Other feedback is welcomed, since this is my first installer for Lutris :slight_smile:

Thank you and have an awesome day :slight_smile: :otter:

OS: Ubuntu 18.04 LTS // KDE Neon
Lutris: 0.5.6
wine-staging                                  5.8~bionic
wine-stable                                   5.0.0~bionic

Thanks for taking the time to write about your experience.

That has been my experience as well. The installer scripts are partially documented, but I need a lot more. For example, I haven’t been able to find any documentation for the runners. The documentation that pops up next to the web editor is nice as a quick reference, but it doesn’t go into enough detail sometimes.

I haven’t figured out how to stop that either.

That’s normal for Wine. A lot of functions are not implemented in Wine, and it logs those to help with debugging. If the game works then it’s ok to ignore those, but if it doesn’t work then you can use those logs in a bug report to Wine.

Hello @xordspar0 and sorry for the late reply.

Yes, I feel that while installing Lutris itself isn’t that demanding, writing a good installer is a bit too much. My recommendation would be to prepare more documentation and also use real installers as examples. As in: “in theory this looks like this, and here we see installer for game foo, that uses this runner in that way”.

It seems that wine-mono and wine-gecko have stopped nagging. Looks like I wrote too soon and wine honors my choices in the yaml file.

IMHO the default policy should be not to install this crap, but changing this now would probably break many installers…

Who can I talk to about improving the experience when making installer scripts?

That’s an interesting idea. The installer documentation does have several examples, but maybe your idea could be helpful too. Of course you can already look up examples of real installers on your own, and that’s sometimes the best way to learn. But maybe specific examples, like “Here is an example of modifying the Windows registry, and here is a game that needed to do that and why.”

Discussing here is fine, though there are a lot of people asking for help and only a few people helping. You could also open an issue on Github, or better yet submit a pull request to improve the documentation. Here is the installer documentation: https://github.com/lutris/lutris/blob/master/docs/installers.rst

If working on improving the documentation sounds intimidating, don’t worry. You can probably figure it out in less than an hour even if you’re not familiar with git or .rst files. Plus you’ve already done the hard work of writing an installer. You may as well use that experience to help the next person to write one. :slight_smile:

As for me, I would like to write some documentation on how to use the zdoom runner and more details on how the requires: directive works, but first I have some more learning to do.

Don’t worry, I use markdown daily, so *.rst won’t be a huge stretch. I see that my updates to info for Majesty was approved, so I’m gonna polish that installer next and submit for a review.

1 Like

Installer submitted.