install4j生成的外部启动器.desktop文件对非脚本目标运行失效问题
可行解决方案如下:
- 方案1:替换默认开始菜单生成逻辑,使用自定义.desktop模板
你可以提前编写符合要求的.desktop模板文件,Exec行直接写启动器路径,无需套shell调用也不用加%U参数,示例模板内容:
在install4j中删除原有的「创建开始菜单条目」动作,新增「安装文件」动作将模板文件释放到目标路径(系统级路径为[Desktop Entry] Type=Application Name=MyApp Exec=${INSTALL_PATH}/myRcpLauncher Icon=${INSTALL_PATH}/.install4j/i4j_extf_6_1r3k7uj_1suwpj6.png Categories=Science;/usr/share/applications、用户级路径为~/.local/share/applications),再通过「替换文件中的占位符」动作,把模板里的${INSTALL_PATH}替换为install4j内置的安装目录变量${installer:installationDirectory}即可。 - 方案2:添加后置动作修改自动生成的.desktop文件
保留原有「创建开始菜单条目」动作,新增一个「修改文本文件」的后置动作,设置正则匹配规则:匹配^Exec=/bin/sh "([^"]+)" %U$,替换为Exec=$1,目标文件路径指向install4j生成的.desktop文件即可,该方案无需调整原有菜单配置逻辑。 - 方案3:修正外部启动器的导入类型
你遇到的套/bin/sh调用的问题,大概率是你在install4j中导入Tycho生成的原生启动器时,错误标记为了「Shell脚本」类型,你可以在启动器配置中将其类型修改为「原生可执行文件」,install4j生成.desktop文件时就会自动省略shell包裹层,也可通过启动器的关联配置关闭%U参数的自动添加。
内容的提问来源于stack exchange,提问作者Javier Martín
相关产品推荐
相关产品推荐

