JPackage更新“PATH”环境变量

2024-02-29

创建安装程序时(例如.msi) with jpackage,有什么办法可以更新PATH环境变量?这对于控制台实用程序非常重要。

没有看到任何关于它的内容jpackage文档 https://docs.oracle.com/en/java/javase/16/docs/specs/man/jpackage.html。也许有一天它会得到支持......但是,与此同时,有什么解决方法吗? (我的意思是,除了要求用户手动更新PATH通过他们自己...)


是否可以?

YES.

Jpackage 提供了进一步自定义使用构建的安装程序包的能力WiX https://wixtoolset.org/.

你必须使用--resource-dir为此,正如中所解释的打包工具用户指南 https://docs.oracle.com/en/java/javase/14/jpackage/override-jpackage-resources.html#GUID-1B718F8B-B68D-4D46-B1DB-003D7729AAB6.

获取默认main.wxs

使用以下命令:

jpackage --input my_app [...] --temp "some/dir"

您将生成以下文件结构:

\some\dir
   \config
      my_app.ico
      my_app.properties
      main.wxs
      MsiInstallerStrings_en.wxl
      MsiInstallerStrings_ja.wxl
      MsiInstallerStrings_zh.wxl
      overrides.wxi
   \images
   \wixobj

复制main.wxs文件到选择的目录中,例如my_resource_dir.

您不需要任何其他东西,因此您可以安全地删除它以及生成的安装包。

更改 main.wxs 以将安装目录附加到路径变量

更改行my_resource_dir/main.wxs:

<Feature Id="DefaultFeature" Title="!(loc.MainFeatureTitle)" Level="1">
  <ComponentGroupRef Id="Shortcuts"/>
  <ComponentGroupRef Id="Files"/>
  <ComponentGroupRef Id="FileAssociations"/>
</Feature>

to:

<Feature Id="DefaultFeature" Title="!(loc.MainFeatureTitle)" Level="1">
  <ComponentGroupRef Id="Shortcuts"/>
  <ComponentGroupRef Id="Files"/>
  <ComponentGroupRef Id="FileAssociations"/>
  <Component Id="pathEnvironmentVariable" Guid="{YOUR_GUID}" KeyPath="yes" Directory="TARGETDIR">
    <Environment Id="MyPathVariable" Name="Path" Value="[INSTALLDIR]" Action="set" System="no" Permanent="no" Part="last" Separator=";" />
  </Component>
</Feature>

确保更换YOUR_GUID与生成的 GUID生成器工具 https://www.guidgen.com/。例如:[...] Guid="{607ea423-79e0-4866-9ed7-62005b88d225}"

创建附加到路径的安装程序:

运行以下命令:

jpackage --input my_app [...] --resource-dir "my_resource_dir" --verbose

在日志输出中,您应该看到类似以下内容的内容:

[...] Using custom main.wxs file [...]

Result

现在构建的安装程序会将您的 INSTALLDIR 添加到安装路径中,并在卸载过程中将其删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPackage更新“PATH”环境变量 的相关文章

随机推荐

  • “在负可变长度后行中使用 \G 来限制后行回溯多远”的示例

    在很棒的正则表达式模块的 pypi 页面中 https pypi python org pypi regex https pypi python org pypi regex 据说 G 可以 在负可变长度后向中使用 以限制后向回溯的距离 非
  • 如何在有或没有 Pig 的情况下使用 Cassandra 的 Map Reduce?

    有人可以解释 MapReduce 如何与 Cassandra 6 配合使用吗 我已经阅读了字数统计示例 但我不太明白 Cassandra 端与 客户端 端发生的情况 https svn apache org repos asf cassan
  • 创建已包含 Nuget 包参考的 Visual Studio 项目模板?

    我想创建一个 Visual Studio 2010 项目模板 它本质上是一个 ASP net 3 5 Webforms 应用程序 但是 我想自动添加 NuGet 包引用 如果需要 我可以将实际的 nupkg 与模板捆绑在一起 但我想知道是否
  • WordPress:“post_name”的 WP_Query 搜索条件

    我正在使用 WP Query 非常标准 一切都很好 但是 我需要进行一项特定的修改 如果用户在 URL 中输入特定的帖子名称 则搜索将仅返回与该 post name 值匹配的帖子 请参阅下面的代码 其中包含有关特定行不起作用的注释
  • MySQL:启用加载数据本地INFILE

    我在 Ubuntu 12 LTS 上运行 Mysql 5 5 我应该如何在 my cnf 中启用 LOAD DATA LOCAL INFILE 我已经尝试在配置中的各个位置添加 local infile 但我仍然收到 此 MySQL 版本不
  • Windows 窗体:进度栏无响应

    我有一个小应用程序来转换多种文件格式 其中一个主窗口窗体包含几个文本框 按钮等 我有另一个 文档 类 它处理所有实际的转换工作 我的窗体基本上迭代所有文件 并调用适当的 Document 方法来转换文件 然而 当这种情况发生时 表单会停止响
  • 从类访问私有模块变量

    我正在尝试理解 python 作用域规则 为此 我尝试从同一模块中的类访问 非常私有 变量 bar bar bar underscore bar double underscore def foo print bar print bar p
  • Google 地图 - 自动完成和方向 API - 触发下拉列表的 onchange() ?

    我有谷歌地图和两个输入 它们都使用自动完成功能 如下所示 first input autocomplete var input1 document getElementById start var autocomplete1 new goo
  • 给定单词相似度推断句子相似度

    假设我对两个句子中的每对单词都有一个单词相似度得分 那么根据这些分数确定整体句子相似度的好方法是什么 单词分数是使用表示每个单词的向量的余弦相似度来计算的 现在我有了单独的单词分数 将单独的单词分数相加并除以两个句子的总字数来获得两个句子的
  • android 片段在方向改变时创建了两次

    我遇到了这个奇怪的问题 我的列表片段被创建了两次 一次是在父活动上调用 super oncreate 时 一次是在同一父活动上调用 setContentView 时 这是一个简单的应用程序 我使用不同的纵向和横向布局 这是主要活动 priv
  • 崩溃的 HDFS 客户端 - 如何关闭剩余的打开文件?

    我的 Hadoop 应用程序遇到一些问题 每当我的客户端在未关闭文件的情况下退出 例如由于崩溃 时 Hadoop 中就会有打开的文件从未关闭 当我尝试重新启动客户端时 重新打开这些文件以附加数据时会失败 请参阅下面的异常消息 有没有一种好方
  • jsFiddle 中的 AJAX

    如何模拟 jQuery get http api jquery com jQuery get 在 jsFiddle 中加载来自不同域的数据 This won t work in jsFiddle get http www google co
  • 如何在 Git 中记录 Web 项目的发布历史记录?

    我正在开发一个经常合并和发布到生产环境的网络项目 我希望存储库包含曾经推送到生产服务器上的所有内容的完整记录 主要是这样我可以分析三周前的错误日志条目 准确了解当时生产中的代码 我无法使用release这样做是因为在 Git 中 没有特定分
  • Spring MVC 可以用来在 Swing 应用程序中实现 MVC 模式吗?

    我想知道是否Spring MVC可以用来实现MVC模式Java Swing应用 我做了一些研究 发现 Spring MVC 可用于 Web 开发 Spring MVC 有什么方法可以与 Swing 应用程序一起使用吗 并不真地 正如你所说
  • 学说 DQL 正确加入?

    是否可以进行 RIGHT OUTER JOIN原则 2 DQL http www doctrine project org docs orm 2 0 en reference dql doctrine query language html
  • 使用 PHP 在 MongoDB 中插入数据

    我在php 5 6 using WAMP想要使用 PHP 将文档插入 MongoDB 我是这样做的
  • 安装 RVM(Ruby Version Manager)的关键问题

    我正在尝试在我的 CentOS 6 6 机器上安装 Ruby Version Manager RVM 我按照主页上的说明进行操作https rvm io rvm install https rvm io rvm install 当我运行此命
  • 如何从 dart 中的字符串中仅删除符号

    我想从字符串中删除所有特殊符号 并且字符串中只有单词 我尝试了这个 但它只给出相同的输出 main String s Hello world i am foo print s replaceAll new RegExp W 输出 Hello
  • 如何在 ASP.NET vNext 中处理调试/发布配置转换

    在 ASP NET 的早期版本中 我们很多人都使用过Web Debug config Web Release config文件转换看起来像这样 网页配置
  • JPackage更新“PATH”环境变量

    创建安装程序时 例如 msi with jpackage 有什么办法可以更新PATH环境变量 这对于控制台实用程序非常重要 没有看到任何关于它的内容jpackage文档 https docs oracle com en java javas