最近我完成了一个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脚本配置)
那么你可以帮我解决我在maven插件或其他任何方面缺少的任何配置吗?
感谢。
答案 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文件。