2

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

在文档中没有看到任何关于它的jpackage内容。也许有一天它会得到支持......但是,与此同时,有什么解决方法吗?(我的意思是,除了要求用户自己手动更新PATH......)

4

1 回答 1

2

可能吗?

是的。

Jpackage 提供了进一步自定义使用WiX构建的安装程序包的能力。

您必须使用--resource-dir它,如Packaging Tool User's Guide中所述。

获取默认 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>

至:

<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 。例如:[...] Guid="{607ea423-79e0-4866-9ed7-62005b88d225}"

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

运行以下命令:

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

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

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

结果

现在构建的安装程序将您的 INSTALLDIR 附加到安装路径并在卸载期间将其删除。

于 2022-02-09T13:16:34.970 回答