Maven:使用Inno Setup脚本构建javaFX应用程序的本机安装程序

时间:2015-03-26 07:46:09

标签: java maven javafx inno-setup

最近我完成了一个JavaFX项目,现在我想为windows创建本机安装程序。我使用exec-maven-plugin创建了一个安装程序,它运行正常,并使用默认的inno安装脚本设置生成exe文件。

我创建了一个名为[project-name] .iss的inno安装脚本,并将其放在app\src\main\deploy\package\windows\[project-name].iss中。

我的maven插件代码看起来像

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>package-jar</id>
            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>
                    ${env.JAVA_HOME}/bin/javapackager
                </executable>
                <arguments>
                    <argument>-createjar</argument>
                    <argument>-appclass</argument>
                    <argument>${app.main.class}</argument>
                    <argument>-srcdir</argument>
                    <argument>
                        ${project.build.directory}/classes
                    </argument>
                    <argument>-outdir</argument>
                    <argument>./target</argument>
                    <argument>-outfile</argument>
                    <argument>
                        ${project.artifactId}-app
                    </argument>
                    <argument>-v</argument>
                </arguments>
            </configuration>
        </execution>
        <execution>
            <id>package-jar2</id>
            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>
                    ${env.JAVA_HOME}/bin/javapackager
                </executable>

                <arguments>
                    <argument>-deploy</argument>
                    <argument>-native</argument>
                    <argument>installer</argument>
                    <argument>-appclass</argument>
                    <argument>${app.main.class}</argument>
                    <argument>-srcfiles</argument>
                    <argument>
                        ${project.build.directory}/${artifactId}-app.jar
                    </argument>
                    <argument>-outdir</argument>
                    <argument>./target</argument>
                    <argument>-outfile</argument>
                    <argument>
                        ${project.artifactId}-app
                    </argument>
                    <argument>-v</argument>
                </arguments>
            </configuration>
        </execution>

    </executions>
</plugin>

[project-name] .iss文件看起来像

[Setup]
AppName=Project Name
AppId=ProjectName
AppVersion=0.1.0
AppPublisher=Project Name
AppPublisherURL=http://www.todo.com/
AppSupportURL=http://www.todo.com/
AppUpdatesURL=http://www.todo.com/
MinVersion=5.1
DefaultDirName={pf}\Project Name
DefaultGroupName=Project Name
AllowNoIcons=yes
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes
SetupIconFile=icon.ico
AllowCancelDuringInstall=false

但是在maven包之后,我得到的可执行文件没有上面的inno安装脚本中的任何属性。(我还在app\src\main\deploy\package\windows\icon.ico中放置了icon.ico文件)

打包app时的输出日志(默认情况下不使用[project-name] .iss脚本配置) enter image description here

那么你可以帮我解决我在maven插件或其他任何方面缺少的任何配置吗?

感谢。

2 个答案:

答案 0 :(得分:1)

(即使这是一个老问题,其他一些人可能会搜索此内容)

您需要处理正确的文件名,使用的appName负责javapackager搜索的文件名。

由于您没有提供一些-name - 参数,appName是从提供的主类(appclass - 参数)收集的,甚至打印在该命令日志中,{{ 1}}被使用。所以你需要添加这个:

Main.ico

这意味着<argument>-name</argument> <argument>${project.artifactId}</argument> - 文件的文件名必须低于.ico - 文件夹下的${project.artifactId}.ico

答案 1 :(得分:-1)

您可以尝试JavaPackager Maven Plugin。它不依赖于def f(): pass ''' maybe the function is over ''' pass # oh wait, it's not f() 工具。

您的POM只需包含以下内容:

javapackager

,该插件将使用捆绑和自定义的JRE为您的应用生成安装程序。它会为您完成所有工作,因此您不必担心任何ISS文件。