SetupBuilder icon indicating copy to clipboard operation
SetupBuilder copied to clipboard

DMG and non-Java applications

Open ocroquette opened this issue 3 years ago • 3 comments

Hello,

I am using SetupBuild to package a non-Java application. MSI generation on Windows works well, but on macOS, I get the following error:

Build file '/Users/.../build.gradle' line: 147

* What went wrong:

Execution failed for task ':dmg'.

> A main class is required for the application. You have to configure at least the following:
        setupBuilder {
                [..]
                mainClass = 'your.org.main.class'
        }

    org.codehaus.groovy.control.ConfigurationException: A main class is required for the application. You have to configure at least the following:
        at com.inet.gradle.setup.dmg.AbstractOSXApplicationBuilder.prepareApplication(AbstractOSXApplicationBuilder.java:116)
        at com.inet.gradle.setup.dmg.OSXApplicationBuilder.buildApplication(OSXApplicationBuilder.java:89)
        at com.inet.gradle.setup.dmg.DmgBuilder.build(DmgBuilder.java:95)
        at com.inet.gradle.setup.dmg.Dmg.build(Dmg.java:108)
        at com.inet.gradle.setup.abstracts.AbstractTask.action(AbstractTask.java:101)

Is this use case unsupported?

ocroquette avatar Aug 30 '20 06:08 ocroquette

Sounds like you have define a desktopStarter. Can you give more details.

Horcrux7 avatar Aug 30 '20 19:08 Horcrux7

That's correct. I disabled the desktopStarter now, but this leads to another error:

No Services or DesktopStarters have been defined. Will stop now

Here is a minimal script reproducing the issue:

plugins {
    id "de.inetsoftware.setupbuilder" version "3.4.7" // version depends on Gradle version
}
apply plugin: 'de.inetsoftware.setupbuilder'

def isWindows = System.properties['os.name'].toLowerCase().contains('windows')

setupBuilder {
    vendor = 'Vendor'
    application = "Application"
    appIdentifier = "appIdentifier"
    version = '1.0.0'
    destinationDir = "artifacts"
    from("mydir") {
        include '**'
    }
    if(isWindows) {
        desktopStarter {
            location = com.inet.gradle.setup.abstracts.DesktopStarter.Location.StartMenu
            executable = "tool.exe"
        }
    }
}

msi {
    languages = [ "en-US" ]
}

I am trying to generate a DMG file from the content of "mydir".

ocroquette avatar Aug 30 '20 19:08 ocroquette

The setup builder does not currently allow generating DMG applications for non-java applications.

gamma avatar Aug 31 '20 09:08 gamma