当前位置: 首页 > news >正文

在mac上安装sh脚本文件

要将 jd-gui.sh 脚本转换为在 macOS ARM 系统上带有自定义图标的可点击运行的程序,你可以通过创建一个应用程序包(.app)来实现。以下是详细步骤:

步骤 1:创建应用程序包目录结构

应用程序包实际上是一个特殊的目录,其结构遵循一定的规范。首先,创建一个新的目录,作为你的应用程序包。目录名应以 .app 结尾,例如 JD-GUI.app

mkdir -p JD-GUI.app/Contents/MacOS

步骤 2:复制脚本到应用程序包

jd-gui.sh 脚本复制到 JD-GUI.app/Contents/MacOS 目录中,并确保脚本具有可执行权限。

cp jd-gui.sh JD-GUI.app/Contents/MacOS/
chmod +x JD-GUI.app/Contents/MacOS/jd-gui.sh

步骤 3:创建应用程序包的 Info.plist 文件

Info.plist 文件是应用程序包的配置文件,它包含了应用程序的各种信息,如名称、版本、图标等。在 JD-GUI.app/Contents 目录下创建 Info.plist 文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CFBundleExecutable</key><string>jd-gui.sh</string><key>CFBundleIconFile</key><string>icon.icns</string><key>CFBundleIdentifier</key><string>com.example.jdgui</string><key>CFBundleInfoDictionaryVersion</key><string>6.0</string><key>CFBundleName</key><string>JD-GUI</string><key>CFBundlePackageType</key><string>APPL</string><key>CFBundleShortVersionString</key><string>1.0</string><key>CFBundleVersion</key><string>1</string>
</dict>
</plist>

步骤 4:准备自定义图标

你需要准备一个 .icns 格式的图标文件。如果你只有其他格式的图标(如 .png),可以使用 macOS 自带的 iconutil 工具将其转换为 .icns 格式。以下是转换步骤:

  1. 创建一个临时目录,用于存放不同尺寸的图标:
mkdir icon.iconset
  1. 将不同尺寸的图标(如 16x16、32x32、128x128 等)复制到 icon.iconset 目录中,并按照以下命名规则命名:
icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
  1. 使用 iconutil 工具将图标集转换为 .icns 文件:
iconutil -c icns icon.iconset -o icon.icns

步骤 5:将图标文件复制到应用程序包

将生成的 icon.icns 文件复制到 JD-GUI.app/Contents/Resources 目录中。

mkdir -p JD-GUI.app/Contents/Resources
cp icon.icns JD-GUI.app/Contents/Resources/

步骤 6:将应用程序包移动到应用程序文件夹

JD-GUI.app 移动到 /Applications 文件夹中,这样你就可以在程序坞中找到它并点击运行。

mv JD-GUI.app /Applications/

现在,你应该可以在程序坞中看到带有自定义图标的 JD-GUI 应用程序,点击它即可运行 jd-gui.sh 脚本。

http://www.xdnf.cn/news/1016317.html

相关文章:

  • C++标准库大全(STL)
  • Spring Boot 集成国内AI,包含文心一言、通义千问和讯飞星火平台实战教程
  • 域名+nginx反向代理实现案例
  • Python学习笔记:错误和异常处理
  • 影像组学5:Radiomics Score的计算
  • 深度学习驱动的验证码识别实战:从原理到高并发工业部署
  • YOLOV11改进之多尺度扩张残差模块(MS-DRM)
  • [特殊字符][特殊字符] Harmony OS Next玩转多层级手势事件:当组件遇上“套娃”,触摸该怎么分家?
  • 北斗导航 | 基于matlab的卫星导航单点定位算法
  • Linux文件权限详解:从入门到精通
  • 每日Prompt:Steve Winter风格插画
  • 2.3 ASPICE的架构与设计
  • 服务器上安装配置vsftpd
  • Java流处理中的常见错误与最佳实践
  • 第八十篇 大数据开发基石:深入解析栈结构及其生活化应用(附全流程图解)
  • Cloud Events:事件驱动架构的未来标准化
  • 访问者模式:解耦数据结构与操作的优雅之道
  • 前端性能优化:打造极致用户体验
  • 洛谷:B3799 [NICA #1] 序列
  • 单片机,主循环和中断资源访问冲突的案例
  • P1197 [JSOI2008] 星球大战
  • AI 应用开发(一):TRAE 下自定义 MCP Server
  • 【压缩中断数目--二级中断查找】
  • PostgreSQL的扩展adminpack
  • 机器翻译指标:BLEU
  • 基于边缘计算的丝杆状态实时监测系统设计?
  • 【通用定时器TIM2 TIM3 TIM4 TIM5】
  • Codeforces Round 1023 (Div. 2) C. Maximum Subarray Sum
  • 2025秋招后端突围:JVM核心面试题与高频考点深度解析
  • 电脑在使用过程中频繁死机怎么办