fvarrui / JavaPackager

:package: Gradle/Maven plugin to package Java applications as native Windows, MacOS, or Linux executables and create installers for them.
GNU General Public License v3.0
1.07k stars 134 forks source link

Specify where to place additionalResources #435

Open dagkodingentur opened 1 month ago

dagkodingentur commented 1 month ago

I'm submitting a…

Short description of the issue/suggestion:

I would love if I could specify target directory for additionalResources when creating an installer.

  additionalResources += [
                from: file('game.cfg'),
                into: System.getProperty("user.home") + "/.SaveGame/game.cfg"
        ]

What is the expected behavior?

This would place the file game.cfg in the users home directory under .SaveGame/game.cfg

What is the current behavior?

additionalResources = [ from: file('game.cfg') ] The resource is copied as expected, but it is placed in the working directory instead of the user's home directory

What is the motivation / use case for changing the behavior?

If the application tries to access a file in 'Program Files', which is the default install location on Windows, administrator privileges is required to read the file. This means that the user has to right click the .exe file and choose 'Run as administrator' if you have an application that tries to read this game.cfg file residing in the install directory, which is undesirable.

I realise that I can specify 'administratorRequired=true' but this is undesirable for obvious reasons.

Please tell us about your environment:

fvarrui commented 1 month ago

Hi @dagkodingentur! I think that it can be managed by your app at startup time. You just have to include your game.cfg as a resource in your app; then, when your app starts, checks if $home/.SaveGame/game.cfg exists. If it doesn't, just creates .SaveGame folder and copies your default config file game.cfg from resource into the brand new folder. This is how I use to do it. I hope it helps!

fvarrui commented 3 days ago

Hi @dagkodingentur! Can we close this issue?