Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installer #31

Open
mokou opened this issue Oct 9, 2014 · 9 comments
Open

Installer #31

mokou opened this issue Oct 9, 2014 · 9 comments
Milestone

Comments

@mokou
Copy link
Contributor

mokou commented Oct 9, 2014

We need one. I choose NSIS.

@mokou mokou added this to the 2.0 milestone Oct 9, 2014
@lilyremigia
Copy link
Contributor

Configurator and Installer became the same thing, for configure see #8 .

@mokou
Copy link
Contributor Author

mokou commented Jan 5, 2020

I disagree. #8 doesn’t solve this since the GUI still needs to be installed. Distributing a .zip is not a good experience.

@mokou mokou reopened this Jan 5, 2020
@lilyremigia
Copy link
Contributor

Self-extracting zip, better?

@lilyremigia
Copy link
Contributor

And also 99% of times, people get thcrap bundled with a Touhou game.

@ManDude
Copy link

ManDude commented Jan 6, 2020

Those people only use that thcrap for that Touhou game and no other.

@lilyremigia
Copy link
Contributor

Options

Windows

  • Self-extracting zip (this is a .exe file)
  • An MSIX mindless click-click-click installer
  • Our own .exe installer

Furthermore:
Any .exe, .msi, or .msix app could go to Windows Package Manager (winget) that adheres to these policies.
If we package as msix with this it will become and uwp app, then we could distribute to Windows Store, if we adhere to these policies.

MacOS

Somebody who uses MacOS please fill us in, but I have a suspecting feeling we are definitely not going to make it to MacOs's Store. But maybe the Linux methods would work here as well.

Linux

I think the best idea is to create .AppImage, since that basically runs everywhere, and then either provide an auto-updater for it somehow, or also maintain a Flatpack for Debian-based, and on the AUR for Arch-based. (The rest can figure it out themselves.)

@lilyremigia
Copy link
Contributor

Almost all of the installers on Windows except ones that install huge programs are actually self extracting archives. In fact, if you have 7-zip installed in Windows, you can just right click on the installer and it will show you to open in 7-zip. This is because for an executable in the PE file format, there is a specific last byte, after which it is all done and Windows loader will not load it into memory.
This trick was invented my Microsoft to my knowledge, there used to be a program called iexpress baked into Windows since Windows 95 and it existed in Windows 10 too. Not sure if it is in 11 though as I have switched completely to Linux. The iexpress tool allowed you to create these self extracting archives, and it used the CAB archive format. Then most common after that was WinZIP SFX and WinRAR SFX archives and later 7zip SFX. Very rarely, there are Uharc SFX too, made by WinUharc and Uharc CMD projects.
Most archive programs will try to look for the starting signature in input bytestream before throwing an error, where this is usually 2-4 dedicated bytes which will tell the file format and the format version. So all the SFX executable needs to do is to get its own file name (in C/C++ it is the 0th argument in argv array) and pass it to the archiving program. Sometimes instead of an archiving program, these link with the libraries so unarchiving code is also in the same EXE file.
Btw, the same is true with MSI installers too. MSI is just Microsoft's format which say how an installer should look like and behave. InstallShield uses multiple files though, and they are kept in different .DAT or .BIN files. InnoSetup allows both options - if SFX route, it uses LZMA compression. Else .BIN files are used as archives. NSIS, allows the package script author to decide the compression format. Most will use LZMA but other formats are available too.
However, these are for older installers or for installers for third party software. Most used softwares now go for Web Installers, which downloads the real archive in the background and install it over the network. This is also done for telemetry reasons. Installer can send over the user-agent which contains OS version and also system specifications to the server which is used to know the reach and analytics. - Youtube comment by Sri Harsha Chilakapati

@lilyremigia
Copy link
Contributor

MSIX Docs: https://learn.microsoft.com/en-us/windows/msix/packaging-tool/create-an-msix-overview
Alternative: https://github.com/Squirrel/Squirrel.Windows
Our Own: Alternatively, we could reuse the existing thcrap-updater, and make it into a web installer.

@lilyremigia
Copy link
Contributor

lilyremigia commented Sep 17, 2023

Even more alternatively, we could distribute via https://github.com/ScoopInstaller/Scoop
If they're fine with advanced-combat-tracker being in their games bucket, I don't think why thcrap couldn't.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants