【问题标题】:uploading and redownloading executable script上传和重新下载可执行脚本
【发布时间】:2013-11-22 18:55:15
【问题描述】:

我有一个可执行的终端程序(在 MacOS 上使用带有 GHC 的 Haskell 代码构建),当我在 Finder 中双击它时它就会运行。我想把它放在我的网站上,人们可以通过双击从他们的 Finder 下载和运行它。

不知何故,在此交换中,文件丢失了“+x”位,因此当重新下载时,它无法再通过双击运行。我仍然可以运行它,但我必须先执行“chmod +x”。我该怎么做才能使下载的文件默认可执行?我必须将它打包到“.app”文件中吗?现在是“.command”。

【问题讨论】:

    标签: macos executable sh .app


    【解决方案1】:

    无论它是否是应用程序包的一部分,可执行文件本身都必须是……可执行文件。为确保可执行性,您应该将其放入 zip 或 dmg 文件中,这将保留其“可执行”标志。


    如果您想将其制成应用程序包,有一种简单的方法可以做到这一点。如果可执行文件名为 PROGRAMNAME,则只需将其放在名为 PROGRAMNAME.app 的文件夹中。双击应该运行该文件。

    如果您想创建更合适的应用程序包,请使用:

    APP_NAME='My Awesome App.app'
    EXE_NAME='PROGRAMNAME'
    
    mkdir -p "$APP_NAME"/Contents
    defaults write "`pwd`"/"$APP_NAME"/Contents/Info CFBundleExecutable "$EXE_NAME"
    mkdir "$APP_NAME"/Contents/MacOS
    cp "$EXE_NAME" "$APP_NAME"/Contents/MacOS
    chmod a+x "$APP_NAME"/Contents/MacOS/"$EXE_NAME"
    

    应用程序包不会显示终端输出或报告错误,因此如果您需要,您应该将其保留为原始可执行文件。此外,以上述方式制作的简单应用程序将没有 GUI,并且似乎没有响应并在完成运行后退出。

    另外,如果您收到以下消息,可能是因为可执行文件太短(向其中添加更多字符)或由于隔离限制(尝试编辑可执行文件并使用 TextEdit 等应用程序保存以使其受信任)。

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 2015-10-05
      • 2020-08-21
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2010-10-30
      相关资源
      最近更新 更多