20260527

[7zz]インストール・アップデートヘルパースクリプト bash

[7zz]インストール・アップデートヘルパースクリプト bash

NOTE記事一覧ですnote.com
 7zzUserInstallAppSup.bash

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#ユーザード ~/Library/Application Support にインストールする
004#7zバージョン2501版
005
006###ダウンロードURL
007STR_URL="https://github.com/ip7z/7zip/releases/download/26.01/7z2601-mac.tar.xz"
008STR_URL="https://www.7-zip.org/a/7z2601-mac.tar.xz"
009
010########################################
011###管理者インストールしているか?チェック
012USER_WHOAMI=$(/usr/bin/whoami)
013/bin/echo "実行ユーザーは:${USER_WHOAMI}"
014###実行しているユーザー名
015CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
016/bin/echo "コンソールユーザー:${CONSOLE_USER}"
017###ログイン名ユーザー名※Visual Studio Codeの出力パネルではrootになる設定がある
018LOGIN_NAME=$(/usr/bin/logname)
019/bin/echo "ログイン名:${LOGIN_NAME}"
020###UID
021USER_NAME=$(/usr/bin/id -un)
022/bin/echo "ユーザー名:${USER_NAME}"
023###SUDOUSER
024/bin/echo "SUDO_USER: ${SUDO_USER}"
025########################################
026###ダウンロード起動時に削除する項目
027USER_TEMP_DIR=$(/usr/bin/mktemp -d)
028/bin/echo "起動時に削除されるディレクトリ:" "${USER_TEMP_DIR}"
029############################################################
030############################################################
031###BIN
032/bin/mkdir -p "/Users/${CONSOLE_USER}/Library/Application Support/bin"
033for ((numTimes = 1; numTimes <= 3; numTimes++)); do
034  sleep 1
035  /bin/mkdir -p "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
036  /usr/bin/touch "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
037  /usr/sbin/chown "${CONSOLE_USER}" "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
038  /bin/chmod 700 "/Users/${CONSOLE_USER}/Library/Application Support/bin"
039done
040
041###ファイル名を取得
042DL_FILE_NAME=$(/usr/bin/curl -s -L -I -o /dev/null -w '%{url_effective}' "${STR_URL}" | /usr/bin/rev | /usr/bin/cut -d'/' -f1 | /usr/bin/rev)
043/bin/echo "DL_FILE_NAME:${DL_FILE_NAME}"
044###ダウンロード
045if ! /usr/bin/curl -L -o "${USER_TEMP_DIR}/${DL_FILE_NAME}" "${STR_URL}" --connect-timeout 20; then
046  /bin/echo "ファイルのダウンロードに失敗しました HTTP1.1で再トライします"
047  if ! /usr/bin/curl -L -o "${USER_TEMP_DIR}/${DL_FILE_NAME}" "${STR_URL}" --http1.1 --connect-timeout 20; then
048    /bin/echo "ファイルのダウンロードに失敗しました"
049    exit 1
050  fi
051fi
052##全ユーザー実行可能にしておく
053/bin/chmod 755 "${USER_TEMP_DIR}/${DL_FILE_NAME}"
054/bin/echo "ダウンロードOK"
055/bin/mkdir -p "${USER_TEMP_DIR}/7zip/"
056############################################################
057######### インストール
058/bin/echo "インストール開始:" "${CONSOLE_USER}"
059####解凍
060##  /usr/bin/bsdtar -xzf "${USER_TEMP_DIR}/${DL_FILE_NAME}" -C "${USER_TEMP_DIR}/7zip" --strip-components=1
061/usr/bin/bsdtar -xzf "${USER_TEMP_DIR}/${DL_FILE_NAME}" -C "${USER_TEMP_DIR}/7zip"
062sleep 2
063###旧バージョンをゴミ箱に
064USER_TRASH_DIR=$(/usr/bin/mktemp -d "${HOME}/.Trash/7ZZ.XXXXXXXX")
065/bin/mv "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip" "${USER_TRASH_DIR}"
066###旧バージョンをゴミ箱に
067USER_TRASH_DIR=$(/usr/bin/mktemp -d "${HOME}/.Trash/7ZZ.XXXXXXXX")
068/bin/mv "/Users/${CONSOLE_USER}/Library/Application Support/7zip" "${USER_TRASH_DIR}"
069####移動
070/usr/bin/ditto "${USER_TEMP_DIR}/7zip" "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
071
072###拡張属性Extended Attributes (EA)削除
073/usr/bin/xattr -cr "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
074####終了
075/bin/echo "インストール終了:" "${CONSOLE_USER}"
076###保存先を開く
077/usr/bin/open "/Users/${CONSOLE_USER}/Library/Application Support/bin/7zip"
078exit 0
AppleScriptで生成しました