gou*_*sej 5 java windows-installer wix
我想为 Java 程序创建一个 Microsoft 安装程序文件。我无法使用 Netbeans 或任何 Maven 插件来执行此操作,因为我无法使用 Oracle Java 和/或 JavaFX(主要是出于法律原因)并且两者似乎都使用 Oracle 本机部署 + JavaSE 1.8。
我当前的档案包含:
我不想使用系统的JRE,这就是我提供另一个JRE的原因。该脚本仅使用一些参数调用 JRE。图标文件为 .ico 格式。胖 JAR 是包含所有必需的 Java 类、本机库和资产(包括第三方库)的 JAR。
我想允许最终用户安装、运行和卸载我的程序。我想在开始菜单中提供一个快捷方式来运行它,另一个快捷方式来卸载它。这里好像有说明。我是否必须使用其他任何东西来创建快捷方式来卸载我的程序?
我已经看了 Wix 工具集好几个星期了。我知道我必须编写一个 wxs 文件来与“candle.exe”一起使用,它会创建一个 wixobj 文件,我必须用这个文件运行“light.exe”,然后我才能得到一个 MSI 文件。
我知道如何添加文件,这里有解释,但我不知道如何添加包含 JRE 的整个目录而不一一提及每个文件。如何在wxs文件中完成?
如何选择一些独特的 GUID?
是否已经有一个(更多?)简单的工具可以用来从胖 JAR 制作 MSI 文件?在尝试在 GNU Linux 下使用 Apache POI 以编程方式执行相同操作之前,我更喜欢先了解如何在 Windows 下的命令行中构建这样的文件。
编辑。:这是我的第一个 wxs 文件:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Truly Unusual Experience of Revolution" Language="1033" Version="0.0.0.0" Manufacturer="Julien Gouesse" UpgradeCode="00000000-0000-0000-0000-000000000000">
<!-- Installer's Icon in Add/Remove Programs -->
<Icon Id="icon.ico" SourceFile="tuerLogo.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" />
<!-- Installer's version = 200 because the 64-bit support is required -->
<Package InstallerVersion="200" InstallPrivileges="elevated" InstallScope="perMachine" Compressed="yes" Platform="x64" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<MajorUpgrade AllowDowngrades="yes" IgnoreRemoveFailure="yes" Schedule="afterInstallInitialize" />
<Condition Message="This application is only supported on Windows XP, Windows Vista, Windows Server 2008, or higher.">
<![CDATA[Installed OR (VersionNT >= 501)]]>
</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Truly Unusual Experience of Revolution">
<Component Id="tuer.bat" Guid="00000000-0000-0000-0000-000000000000">
<File Id="tuer.bat" Source="tuer.bat" KeyPath="yes"/>
</Component>
<Component Id="tuer.jar" Guid="00000000-0000-0000-0000-000000000000">
<File Id="tuer.jar" Source="tuer.jar" KeyPath="yes"/>
</Component>
<Component Id="LICENSE.txt" Guid="00000000-0000-0000-0000-000000000000">
<File Id="LICENSE.txt" Source="LICENSE.txt" KeyPath="yes"/>
</Component>
<Component Id="NOTICE.txt" Guid="00000000-0000-0000-0000-000000000000">
<File Id="NOTICE.txt" Source="NOTICE.txt" KeyPath="yes"/>
</Component>
<Component Id="README.txt" Guid="00000000-0000-0000-0000-000000000000">
<File Id="README.txt" Source="README.txt" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Truly Unusual Experience of Revolution"/>
</Directory>
</Directory>
<!-- Shortcut in the Start Menu -->
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="00000000-0000-0000-0000-000000000000">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="Truly Unusual Experience of Revolution"
Description="First person shooter"
Target="[#tuer.bat]"
WorkingDirectory="APPLICATIONROOTDIRECTORY"
Icon="icon.ico" />
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\TrulyUnusualExperienceofRevolution" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<Feature Id="TrulyUnusualExperienceofRevolution" Title="Truly Unusual Experience of Revolution" Level="1">
<ComponentRef Id="tuer.bat" />
<ComponentRef Id="tuer.jar" />
<ComponentRef Id="LICENSE.txt" />
<ComponentRef Id="NOTICE.txt" />
<ComponentRef Id="README.txt" />
<ComponentRef Id="ApplicationShortcut" />
</Feature>
</Product>
</Wix>Run Code Online (Sandbox Code Playgroud)
Edit.2:这是在JRE目录上运行“heat”得到的文件。
注意:我没有回答我自己的问题,但是当我发现使用 NSIS(Nullsoft Scriptable Install System)构建安装程序会容易得多时,我停止了调查,因为已经有一个 Ant 任务和几个 GNU Linux 发行版的一些包(包括Mageia、Fedora 等)使其工作。您可以找到一个名为Java Launcher的脚本来查找您的软件和操作系统中的 JRE(尽管我建议您在您的软件中捆绑一个 OpenJDK JRE,以确保它在更新或缺少操作系统中的一个 JRE),另一个自动安装 JRE 的脚本和基于 Java 的软件的 nsi 脚本的基本示例。
PS:顺便说一下,我现在使用我自己的工具(它在引擎盖下使用 Redline RPM),它有完整的文档记录,开源(在 GPL 下),并且也适用于 RPM、DEB、APP 和 EXE(通过 NSIS),它是称为Java 本机部署工具包。
升级到 Java 14+ 并使用内置jpackage工具(它是 Jave 8/9 中“jpackager”的后代)。像大多数一样,它为您运行它的系统生成包:
它使用 jdeps 和 jlink 构建一个最小的 JRE 以包含在安装程序中,从而无需单独下载 Java。另外,每次下载 JDK 时都是免费的。感谢 Kevin Rushforth 和 JEP343 团队!阅读https://bugs.openjdk.java.net/browse/JDK-8200758的开发日志或执行jpackage --help。请注意,从 Java14 开始,它在技术上仍处于“孵化”阶段,因此某些功能可能会发生变化。
我运行一个名为IsWiX 的开源项目来处理这种情况。您可以观看为 WPF .NET 桌面应用程序创建 MSI 的视频(下面链接)。
对于 Java 应用程序来说,这些概念是相同的。您只需将 JRE 的私有实例与应用程序一起部署,并创建指向 .BAT 文件的快捷方式。您唯一要做的自定义操作是创建一个指向 ICO 文件的 Icon 元素,并在 Shortcut 元素上设置一个属性以指向该图标。在编译的代码世界中,我们不必这样做,因为快捷方式将自动显示目标可执行文件中的默认图标资源。
可以在这里找到有关视频的一些文字:
以及(无声)视频本身:
| 归档时间: |
|
| 查看次数: |
15169 次 |
| 最近记录: |