Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs

Install Java program to Program Files or Itch's default

A topic by philfrei created Nov 30, 2018 Views: 121 Replies: 4
Viewing posts 1 to 4

I am new to itch.io and have my first "game" ready to release (it is a musical toy/instrument). It is coded in Java, and I have a self-contained, customized JRE that runs the program. This version requires a Windows 64-bit OS. 

I may not have this right, but it seems to me that I have two options. One is to package the application (I've used  Inno Setup 5 for this) so that it behaves like a "native PC" program. The install defaults to "Program Files" (but allows the user to specify elsewhere) and handles creating an entry in the Start Menu and an optional desktop icon. Since it is just a single file, 

The other option is perhaps to just upload the file system (includes about 5 subfolders, with both the code and the customized jre) created by the Java packaging tool, using Butler, and allow the itch.io app to handle the installation. But I an unclear on what happens in this case. Will my application be given a subfolder in itch's APPDATA folder? Will there be a Start Menu item created? (It looks like specifying the executable is done in the manifest.) 

I realize I don't fully understand the difference between people using the itch.io app to download vs. their browsing and doing it themselves, in terms of what I need to provide for the two options. 

Thank you for any assistance provided! There is a lot of information to take in here for someone who is new to this.


 

Admin

Hi!

The best way to release a game for the app is to make it self-contained, like you said.

InnoSetup is supported, but not discouraged, see https://itch.io/docs/itch/integrating/compatibility-policy.html

Apps are installed in whatever install location is specified by the user - by default, in `%APPDATA%/itch/apps`, but they can specify another drive, etc.

As for shortcuts, the feature is planned: https://github.com/itchio/itch/issues/864

When folks download directly from the website, they just get a .zip file with your self-contained game inside. We're going to be pushing the app more in the future, we already recommend it in support whenever folks can't figure out how to extract a .zip!

Don't forget to upload with https://itch.io/docs/butler/ for many benefits listed on that page.

Hope this addresses your concerns!

Admin moved this topic to Questions, Ideas & Feedback
(+1)

I'd like to chime in on this as a bit of a tech-saavy enduser experience.

I explicitly use the itchio desktop app specifically to keep things 'like Steam' where everything is installed within a specific directory OUTSIDE of Program Files and there are no extra shortcuts or other crap (like registry editing) being necessary for installation/execution of the game itself.

I absolutely despise those inno setup and other 'setup' programs because they often make forced unchangeable default presumptions about a user's computer without properly informing/disclosing what is going to be installed/changed during the process.  Uninstall issues have also been an issue with certain games that utilize this method of installation.

Please just use Butler and make your game 100% self-contained without needing 'installation' through a setup program or whatever.

Also please remember that installation to Program Files is a BAD idea unless you are Microsoft, AMD, Nvidia, or another hardware manufacturer installing drivers.  You'd think with Windows XP being deprecated for ~2 decades now that game devs would've caught up with the times and how restrictive the Program Files directory permissions are by (security) design.  Many users install to a separate hard drive for games while others may use a separate partition.  Furthermore, there are built-in system variables for a REASON.  Instead of hard-coding a path like C:\Program Files (x86) or whatever, you may want to use %PROGRAMFILES% or %PROGRAMFILES(X86)% instead.  There's a handy list here: https://archive.fo/90HNY

(+1)

Thanks for the input! I wish there was more discussion on this subject to read and learn from.

What I have right now makes use of InnoSetup5 and Program Files for Windows installation. I did set it up so that the user could select an alternate directory, and choose whether to have a desktop icon or not. I also tested the uninstall. I went ahead with this instead of using Butler because its a single file, a familiar user experience (for Windows users), and I wanted to get something up and I still have a LOT of questions about Butler, despite reading the manuals/tutorials. I figured that I could always come back and make use of it after other issues were settled. (This is the plan.)

I'm currently working on getting a smooth process that allows PC, Mac and Linux installation. With Oracle starting to require license payments for use of its Java in 2019, I had to spend much of the holiday switching over to OpenJDK, which introduced additional complications in that the GUI system (JavaFX) has been split off and has to be managed congruently. Today marked reaching the point where I am once again able to package a custom JRE to run the code (making the program self-contained). Also, today, I was able to solve the same on a Ubuntu/Linux emulator I just installed.

But packaging steps remain. And for my next program, for example, the user can load, edit and save files, so I will need to create a File association. I know of no way to do that without getting into the Microsoft Registry for the Windows installation. I certainly don't think it is a good business decision to leave the file association steps to the User. Many are just not sophisticated enough to do this, even with a good tutorial provided. Do you know of another way, besides dealing with the Registry via Inno Setup?

Meanwhile, do you have specific recommendations for where to install on Win64, Mac, Linux?

This next week I plan work though the process for Mac (setting up environment and working out the steps for the compilation of the program and the custom JRE to be included), and then will continue on to try and solve the final packaging steps. If Butler can handle it, I'd be very pleased to make use of it.

Maybe the thing is to ask where and if it is okay to go ahead and ask lots of questions. I don't want to be a pest, and I understand that a lot of the Java issues are about Java and not Butler. I don't know how common it is for programmers here to market apps made with Java, but it sure would be nice to have some examples. People who write manuals sometimes don't realize how ambiguous instructions are to those new to the process and examples go a long way to helping a reader figure out exactly what various terms and word phrases and usages mean.

(1 edit) (+1)

TLDR is at the end if you just want a quick summary.

There's quite a lot to sort through!  I'll do my best here to answer your inquiries.  I've responded to your thread so you're welcome to keep using this thread to poke me (or any other users) with questions.  I hope it can even become a useful reference for others later on.  :)

File type associations typically only become a thing if the user needs to double-click on that file type to open it inside the associated program.  For text/image/HTML files this is useful to have but for itchio games I don't really feel it is necessary.  If your save files are plain text files, why not just allow the user to open them in a text editor of their choice if they so choose?  If you want to obfusticate the contents to mitigate cheating then that's up to you.  For single-player games, I wouldn't really bother with any of that.  Single player cheaters hurt nobody and want to enjoy the game in their own way.  Let em do that :)

So for the question of file type associations, they are not necessary for your game unless you want to permit players to double click on the save file and open it automatically within the game itself.  Not certain how yoru game functions so this may not even work even with file type associations.  I'd recommend file type associations be an OPTION in the installer that the user selects and confirms instead of something automatically done.  Many users don't care about file type associations and just want to play a game without registry edits (especially if they are a limited user and unable to approve any program that makes registry edits due to security settings).  Itchio developer guidelines already suggest making games that do NOT require admin rights to install/play.  They are good guidelines to follow.

The default Windows file dialog already permits specifying specific file extensions to look for.  Just have the save files as a specific extension and then look for that extension when saving/loading the save game files.  I'm not surprised with the Java mess as many people could see that crap coming from hundreds of kilometers away.  The overwhelming success of the Android mobile market has effectively resurrected Java as a programming language in decently-high demand now.

If you package only for Windows then you're going to exclude entire portions of the market that can already play your game.  Butler handles all of that without all the installer-specific bits.  I'm not well-versed in Apple Products (neither iOS nor MacOS) because of how restrictive and closed the platform is on that end so I cannot offer any tips/advice in that regard.  Maybe a Mac person can chime in and help things out :)

For Windows, I would do like many other programs and install to a more user-friendly directory like %USERPROFILE% or %LOCALAPPDATA%.  The issue with %PROGRAMFILES% and %PROGRAMFILES(X86)% is how restrictive they are done by design due to how Microsoft did security for the OS.  If installing in the user-friendly directories there are already default 'everything' permissions and no real need to fiddle with permissions or worry about write permissions for game updates and such.

TLDR:

Just use butler and get a nice cross-platform fully-supported platinum experience via itchio desktop application.  Otherwise, you're going to want to change the default install directory to a user-friendly directory outside of %PROGRAMFILES% but let the end-user choose the directory & whether they want shortcuts & if they want file type associations to be done by the installer.  Would love if the 'installer' was just an extraction & copying process like what the PortableApps 'installers' do for their various programs.  No registry, no residuals.  Just the files needed to run and function properly.

For other platforms it varies and it is far more in-depth than what I care to go into in this already-lengthy post.  Linux-based operating systems that are Ubuntu & Ubuntu-derived (Linux Mint) typically use 'Launchpad' to add a custom game repository where the game is installed & updated automagically.  The signup & approval & registration for this process is far too lengthy here.  You're better off just using butler.