【问题标题】:Mac Installer to Check for Mono,Auto Download and install if not installedMac 安装程序检查 Mono,如果未安装,则自动下载并安装
【发布时间】:2016-03-15 02:12:08
【问题描述】:

我有一个依赖于 Mono Framwork 的应用程序。我正在尝试创建一个 shell 脚本,该脚本将以最少的交互在用户 Mac 上下载和安装 Mono Framework。我找不到与此相关的任何资源。我将成为的工具使用的是这个http://s.sudre.free.fr/Software/Packages/about.html

这个工具有一个插入安装前和安装后脚本的选项,所以我需要检查是否安装了 Mono,否则需要下载和安装。

我可以用它来检查单声道

#!/bin/sh

#get the bundle's MacOS directory full path
DIR=$(cd "$(dirname "$0")"; pwd)

#change these values to match your app
EXE_PATH="$DIR\appname.exe"
PROCESS_NAME=appname
APPNAME="AppName"

#set up environment
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib"
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"

#mono version check
REQUIRED_MAJOR=2
REQUIRED_MINOR=4

VERSION_TITLE="Cannot launch $APPNAME"
VERSION_MSG="$APPNAME requires the Mono Framework version $REQUIRED_MAJOR.$REQUIRED_MINOR or later."
DOWNLOAD_URL="http://www.go-mono.com/mono-downloads/download.html"

MONO_VERSION="$(mono --version | grep 'Mono JIT compiler version ' |  cut -f5 -d\ )"
MONO_VERSION_MAJOR="$(echo $MONO_VERSION | cut -f1 -d.)"
MONO_VERSION_MINOR="$(echo $MONO_VERSION | cut -f2 -d.)"
if [ -z "$MONO_VERSION" ] \
    || [ $MONO_VERSION_MAJOR -lt $REQUIRED_MAJOR ] \
    || [ $MONO_VERSION_MAJOR -eq $REQUIRED_MAJOR -a $MONO_VERSION_MINOR -lt $REQUIRED_MINOR ] 
then
    osascript \
    -e "set question to display dialog \"$VERSION_MSG\" with title \"$VERSION_TITLE\" buttons {\"Cancel\", \"Download...\"} default button 2" \
    -e "if button returned of question is equal to \"Download...\" then open location \"$DOWNLOAD_URL\""
    echo "$VERSION_TITLE"
    echo "$VERSION_MSG"
    exit 1
fi

#get an exec command that will work on the current OS version
OSX_VERSION=$(uname -r | cut -f1 -d.)
if [ $OSX_VERSION -lt 9 ]; then  # If OSX version is 10.4
    MONO_EXEC="exec mono"
else
    MONO_EXEC="exec -a \"$PROCESS_NAME\" mono"
fi

#create log file directory if it doesn't exist
LOG_FILE="$HOME/Library/Logs/$APPNAME/$APPNAME.log"
mkdir -p "`dirname \"$LOG_FILE\"`"

#run app using mono
$MONO_EXEC $MONO_OPTIONS "$EXE_PATH" $* 2>&1 1> "$LOG_FILE"

但是如何下载和安装。

【问题讨论】:

    标签: macos shell mono package installation


    【解决方案1】:

    通过 CLI 下载/安装:

    最新的 Mono 版本示例:

    MDK_PKG_ID="com.xamarin.mono-MDK.pkg"
    MDK_PKG="mdk-latest.pkg"
    MDK_URL="http://download.mono-project.com/archive/${MDK_PKG}"
    curl -O ${MDK_URL}
    sudo installer -pkg ${MDK_PKG} -target /
    

    具体的 Mono 版本示例:

    MDK_PKG_ID="com.xamarin.mono-MDK.pkg"
    MDK_PKG = "MonoFramework-MDK-4.2.1.macos10.xamarin.x86.pkg"
    MDK_URL = "http://download.mono-project.com/archive/4.2.1//macos-10-x86/#{MDK_PKG}"
    curl -O ${MDK_URL}
    sudo installer -pkg ${MDK_PKG} -target /
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2014-01-15
    • 1970-01-01
    • 2015-10-21
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多