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

Distribute Windows installers for the Godot editor (in addition to ZIP archives) #1432

Open
Calinou opened this issue Aug 30, 2020 · 18 comments

Comments

@Calinou
Copy link
Member

Calinou commented Aug 30, 2020

Reopened from godotengine/godot#8057.

Describe the project you are working on:

The Godot editor 🙂

Describe the problem or limitation you are having in your project:

Newcomers are sometimes confused as to how they can integrate Godot into their Windows system.
By "integrating", I'm referring to Start Menu entries, desktop shortcuts, file type associations, adding Godot to the PATH, and so on.

Describe the feature / enhancement and how it helps to overcome the problem or limitation:

Windows installers will allow for a better out-of-the-box user experience, providing things such as start menu entries, easier installation and uninstall procedures, built-in export templates, registering file associations and more.

Of course, the "portable" ZIP distribution will still be distributed alongside the executable installers.

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:

We can use the open source Inno Setup to create Windows installers. It's possible to run the Inno Setup compiler on Linux using WINE too (but you'll need to use innoextract to extract the Inno Setup installer itself, or create your own ZIP distribution of Inno Setup which you then extract).

The installers will also have to be signed to avoid warnings, just like the official Windows editor binaries.

We can use the .iss setup definition file I wrote for my Godot nightly builds as a base (in addition to modpath.pas to add Godot to the PATH automatically).

If this enhancement will not be used often, can it be worked around with a few lines of script?:

No, as this pertains to the official Godot editor distribution.

Is there a reason why this should be core and not an add-on in the asset library?:

This pertains to the official Godot editor distribution.

@sonic2kk
Copy link

Nice idea overall, but I'd like to comment:

It's possible to run the Inno Setup compiler on Linux using WINE too (but you'll need to use innoextract to extract the Inno Setup installer itself, or create your own ZIP distribution of Inno Setup which you then extract).

This isn't necessary, Godot can be installed through your package manager on Linux and it can be ran natively. Whoever maintains the packages should create a .desktop and application launcher entry, plus if you install Godot through Steam (more on that in a bit) you can create a shortcuts during that installation. Running Godot through WINE or indeed any kind of installer through WINE isn't necessary and could create other problems, since Godot supports Linux natively.

Back to Steam, wouldn't the Steam version of Godot solve this problem? Sure, there might be people who don't want to install from Steam, or who don't have a Steam account, so maybe it should be a separate version of Godot that uses an installer?

Either way, this feature should probably only be for the Windows and potentially macOS release of Godot(?).

@Calinou
Copy link
Member Author

Calinou commented Aug 30, 2020

@sonic2kk It goes without saying that this whole installer thing is only for Windows. Which is why I mentioned it in the issue title 🙂

The Flatpak generally does a good job of providing automatic system integration on Linux.

By "running the installer in WINE", I meant running the Inno Setup installer itself so you can run the Inno Setup compiler using WINE to compile an installer. There's no official ZIP distribution of Inno Setup, something I've been meaning to request for a while now 🙁

Sure, there might be people who don't want to install from Steam, or who don't have a Steam account, so maybe it should be a separate version of Godot that uses an installer?

Yes. Godot is already on Steam, but Steam or other third-party utilities shouldn't be required to have a convenient, well-integrated Godot installation.

@sonic2kk
Copy link

@Calinou My apologies, I seen the issue title but then I seen mention of WINE, so I misunderstood.

Steam or other third-party utilities shouldn't be required to have a convenient, well-integrated Godot installation.

That's very true, there should be a good install process across the board for Godot. I'm not sure about macOS but even without Flatpaks, Godot has a well integrated experience on Linux. If it's less convenient on Windows and this can fix it, I think that's a good idea.

@bruvzg
Copy link
Member

bruvzg commented Aug 30, 2020

adding Godot to the PATH, and so on.

This can also solve the issue with console window (#1341, godotengine/godot#41332) in the same way Visual Studio's devenv do, distribute GUI only main executable and separate console wrapper executable with the same name and .com extension that is capturing console output from the main app.

@PranavSK
Copy link

I feel that the simply compressed zip for the editor is actually an advantage of the Godot editor. It is simple and also emphasises on the portability and small size of the engine. The installers really make sense only when the files are a lot or if there is a more complicated process involved. For those that need to get updates etc. we already have tools like 'scoop' and 'chocolatey' that can handle that. Also, windows seem to be interested in moving towards a package manager approach especially for open source tools.

@Zireael07
Copy link

@PranavSK I imagine the installer would be an option in addition to just the zip?

@Calinou Calinou changed the title Distribute Windows installers for the Godot editor Distribute Windows installers for the Godot editor (in addition to ZIP archives) Aug 30, 2020
@aaronfranke
Copy link
Member

aaronfranke commented Aug 31, 2020

If this is done, it should be done for all platforms. For example, a .deb on Linux would be nice (or a repo). See also #1310 EDIT: Flatpak would probably be better though.

Also, we should consider giving more attention to the Steam and Itch versions of Godot, since they auto-update.

Calinou added a commit to Calinou/godot that referenced this issue Oct 19, 2020
This partially addresses
godotengine/godot-proposals#1432.

To fully address the proposal above, official Windows installers will
have to be compiled and distributed.
akien-mga pushed a commit to akien-mga/godot that referenced this issue Nov 17, 2020
This partially addresses
godotengine/godot-proposals#1432.

To fully address the proposal above, official Windows installers will
have to be compiled and distributed.

(cherry picked from commit 8baa303)
GryphonClaw pushed a commit to GryphonClaw/godot that referenced this issue Nov 19, 2020
This partially addresses
godotengine/godot-proposals#1432.

To fully address the proposal above, official Windows installers will
have to be compiled and distributed.
HEAVYPOLY pushed a commit to HEAVYPOLY/godot that referenced this issue Dec 14, 2020
This partially addresses
godotengine/godot-proposals#1432.

To fully address the proposal above, official Windows installers will
have to be compiled and distributed.

(cherry picked from commit 8baa303)
@cloa513
Copy link

cloa513 commented Oct 27, 2021

Why not just a useful Readme File to the Godot Winzip,
Important READ THIS IF NEW TO GODOT before running the first time in Windows (10).

Godot is a standalone programme so it doesn't install rather you run it every time from the exe file in this Winzip, It will gather games from its local folder
It is best to save Godot##.exe into its own folder in an easy location such as the desktop otherwise create a shortcut to add your desktop. ## is whatever version and type of Godot file you have.

If you wish to associate *.godot with GODOT, then you have to right click a *.godot file and select properties and then General and choose run this programme with.
Then other apps at the bottom and then find where your Godot##.exe is then select it and click apply for properties. Then select always run this associated programme

To add GODOT to your start Menu

Use the Windows key + R keyboard shortcut to open the Run command.
Type the following path and click OK:

%AppData%\Microsoft\Windows\Start Menu\Programs

Using the Windows key + Right arrow keyboard shortcut snap the window to the right.
Browse to the location of the app, where the .exe file is located.
Using the Windows key + Left arrow keyboard shortcut snap the window with the application files to the left.
Right-click, hold, drag and drop the .exe file that launch the apps to the Programs folder on the right.
Select Create shortcuts here from the context menu.

Right-click the shortcut, select Rename, and name the shortcut exactly how you want it to appear in the All apps list.

Repeat the steps for all the apps you want to add to the list.

Restart your computer to apply the changes in the Start menu.
Once you've completed the steps, simply open the Start menu and the list will now show the new app shortcut.

You can also use these instructions to create shortcuts for apps that create folders with a bunch of links (e.g., Apple's iTunes and 7-Zip). This way you can click the letter at the top of the group to use the index to quickly jump to the app without having to drill-down through the folder to open it.

https://www.windowscentral.com/add-app-shortcuts-start-menu-manually-windows-10

@Calinou
Copy link
Member Author

Calinou commented Mar 31, 2022

Some update following godotengine/godot#42863 merge:

You can now build your own installer using godot.iss (with Inno Setup). However, no official installers are provided yet. The Inno Setup compiler is difficult1 to run on headless Linux platforms, which is where official Godot releases are built. Using NSIS instead would be easier since has a native Linux port, but I find NSIS much more dense to get into.

Therefore, there's still no ETA for providing official Windows installers for now.

Footnotes

  1. It can be done with WINE and Xvfb. Xvfb is only required to run the Inno Setup compiler installer, which you can bypass if you create your own ZIP distribution of the installed files (since there is no official ZIP archive containing the Inno Setup compiler binaries).

@zrfisaac
Copy link

Some update following godotengine/godot#42863 merge:

You can now build your own installer using godot.iss (with Inno Setup). However, no official installers are provided yet. The Inno Setup compiler is difficult1 to run on headless Linux platforms, which is where official Godot releases are built. Using NSIS instead would be easier since has a native Linux port, but I find NSIS much more dense to get into.

Therefore, there's still no ETA for providing official Windows installers for now.

Footnotes

  1. It can be done with WINE and Xvfb. Xvfb is only required to run the Inno Setup compiler installer, which you can bypass if you create your own ZIP distribution of the installed files (since there is no official ZIP archive containing the Inno Setup compiler binaries). leftwards_arrow_with_hook

Hi @Calinou , I have a little experience with NSIS, I’d like to know where in the project I create a pull request. I saw that was a script in
godot.iss, I post along side ? godot.nsi ?

@Calinou
Copy link
Member Author

Calinou commented Aug 14, 2022

Hi @Calinou , I have a little experience with NSIS, I’d like to know where in the project I create a pull request. I saw that was a script in
godot.iss, I post along side ? godot.nsi ?

If you plan on opening a pull request, please place the godot.nsi file besides godot.iss. That said, actually distributing official installer binaries will require https://github.com/godotengine/build-containers to be modified to generate NSIS installers.

@ThomasRunting
Copy link

Has there been any movement on this?

I would like to deploy this to my student labs and with out a installer it make it quite difficult via SCCM or Intune.

@Calinou
Copy link
Member Author

Calinou commented Jul 26, 2023

Has there been any movement on this?

This is on standby until we figure out how much it is actually needed, since it complexifies distribution quite a bit and there isn't much demand for it. When I had Windows nightly builds on my website in both EXE installer and ZIP forms, the ZIP represented 85% of downloads while the EXE installer was the remaining 15% (despite the EXE option being listed first on the page).

That said, nothing prevents you from building your own installer using this Inno Setup file. You do not need to compile Godot to do so, as you can point it to an existing godot.exe placed in misc/dist/windows/ – you only need to install the Inno Setup compiler.

@ThomasRunting
Copy link

Well i should be able to get this set up in CI on my gitlab.
But the install to the users local appdata is going to cause some pain as we have our student accounts locked down.

@foxydevloper
Copy link

foxydevloper commented Sep 16, 2023

🙏 on behalf of most windows users having to deal with a .exe file instead of a shortcut in your start menu is such a terrible user experience, I swear godot had a setup wizard at one point and now it feels like a pain to have to find where I put the godot executable on my hard drive whenever I simply want to launch it, a install wizard would be so great for adoption and easier usage of godot on windows. The alternative is using scoop or choco to manage godot's install but these are pretty niche tools that most people don't know about

@aaronfranke
Copy link
Member

@foxydevloper You can also install Godot via Steam, which will give you a shortcut and automatic updates.

@sugarshock
Copy link

sugarshock commented Mar 31, 2024

Unfortunately there is still no way to conviniently auto-update Godot on Windows. Dowloading/updating via winget is technically possible, it still only places the unzipped package into the default directory.
It is still necessary to manually update/create a desktop or start menu entry, since the executable's name contains the Godot version number.

I urge you to take another look at either this issue or #1523 to make this more user-friendly experience.
Having the Downloads directory filled with unpacked Godot versions can't be the solution. I get the idea of portable apps, but it comes with a lot of manual housekeeping and the Mono version isn't even properly portable, since it comes with a list of auxilliary files.

@kriswilk
Copy link

Let me begin by saying that as a matter of principle, I love that Godot Engine is a single executable file. I wish more software were so well-contained. THAT SAID, I also think that offering a conventional installer is extremely important.

Average users EXPECT installers. They are so used to them that not having one likely causes friction:

  • Where should I store this file? In my downloads folder? Somewhere else?
  • Why can't I find Godot in my Start Menu? Wait, I need to make my own entry?
  • Why can't I find Godot in my Add/Remove Programs list?

These may seem like ridiculous, contrived questions. But I guarantee that they consume the mental energy of many users. An installer puts the software in a consistent location, makes it accessible in a consistent way, and allows it to be removed reliably. These are very basic things that average users EXPECT from any application.

Godot's flex of simplicity actually forces users to break their usual routine. Worse, it breaks many automated routines in the form of deployment tools/strategies:

  • WinGet's Godot manifest is pretty weak (See Windows distribution on WinGet #1523) because it must treat the software as a portable/CLI app. Clearly WinGet needs to improve its handling of portable GUI apps. But if Godot had a conventional installer, WinGet would have already handled it perfectly from day one.
  • As @ThomasRunting mentioned, deploying Godot using automated tools like SCCM or Intune is thwarted by the lack of a standard installer.

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