加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

macos – 将Shell脚本转换为* .app文件

发布时间:2020-12-16 01:26:28 所属栏目:安全 来源:网络整理
导读:使用Automator.app和Platypus.app,我已经能够捆绑一个我创建的简单 shell脚本,以便在我的MacBook Pro上重启wi-fi.两个结果应用程序都运行正常,但有一个明显的问题我想纠正:应用程序引用程序外部的shell脚本.如何嵌入shell脚本并从应用程序的资源中引用它,以
使用Automator.app和Platypus.app,我已经能够捆绑一个我创建的简单 shell脚本,以便在我的MacBook Pro上重启wi-fi.两个结果应用程序都运行正常,但有一个明显的问题我想纠正:应用程序引用程序外部的shell脚本.如何嵌入shell脚本并从应用程序的资源中引用它,以便即使原始源文件被移动,应用程序也可以运行?
只需提一下,如果您在脚本上获取信息,则可以将其设置为使用终端打开.双击时将运行该脚本.

否则,在.app包中打包脚本是微不足道的. Mac OS X将很乐意运行任何标识为应用程序可执行文件的脚本.

至少,您需要遵循以下结构:

>(姓名).app

>内容

> MacOS

>(姓名)

名为(name)的文件是您的脚本(必须是可执行文件,并且必须有一个shebang行). (name)在.app目录和脚本文件中必须相同:例如,如果您的app目录名为“My Shell Script.app”,那么MacOS目录中的文件必须被称为“My Shell Script”,没有延期.

如果这样不方便,可以使用Info.plist文件指定备用可执行文件名. Info.plist进入Contents目录:

> Wrapper.app

>内容

> Info.plist
> MacOS

> MyScript

如果在属性列表中将MyScript指定为CFBundleExecutable,则此结构(名为Wrapper.app的包装中的MyScript可执行文件)可以正常工作:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>MyScript</string>
</dict>
</plist>

使用Info.plist文件可能更可取,因为这样可以重命名包装器而不会破坏它.

这是一个使用/ bin / sh作为解释器的示例脚本,但你真的可以拥有任何东西(#!/usr/bin/swift,#!/usr/bin/python等).

#!/bin/sh
open -a Calculator

双击应用程序包时,脚本将运行.

您可以在Contents目录中捆绑您需要的任何其他内容.如果您觉得很花哨,可以使用Resources目录和类似的东西重现标准的可执行包布局.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读