0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mac-アプリケーションの配布(署名なしPKG)

Last updated at Posted at 2021-05-13

はじめに...

調査した内容を時系列にまとめた資料なので、その点ご了承ください。

目次

  1. 実行環境
  2. 実現したいこと
  3. 概要
  4. barrierアプリの入手
  5. barrierアプリの変換
  6. barrierアプリをwebサーバへ配置
  7. [参考]スクリプト
  8. barrierアプリ配信用スクリプトの配置
  9. まとめ
  10. 参考資料

1. 実行環境

項目 情報
OS macOS 11.3.1
HW MacBook Air (11-inch, Mid 2013)
MDM環境 microsoft intune

2. 実現したいこと

最終目標

  • GUIの操作なしにmacのセットアップが行える環境を整備したい
    ― ※ただし、ユーザが選択する部分を除く

今回の目標

  • intuneに参加しているmac端末に署名されたpkg以外のアプリを配布したい

3. 概要

intuneでmacOSのアプリを配信するには、署名されたpkgファイルを使う必要がある。しかし、署名されたpkgがない場合には、ライセンス上署名なしに配信する必要がある。

今回は、テストとしてsynergyからフォークした、barrierというアプリを配信する。

また、dmgがマウントできない(デバイス制御されている)環境も考慮し、dmg形式を署名なしpkg形式に変換し、変換したファイルをローカルのwebサーバに配置/配布する。

4. barrierアプリの入手

barrierは、以下githubから入手する。

5. barrierアプリの変換

4.で取得したファイルを署名なしのpkg形式に変換し、最後にzip圧縮しておく。
※dmgからpkgへの変換手順は、Microsoft社の手順を参考

example)

hdiutil attach < app.dmg >
​
pkgbuild --install-location /Applications --component /Volumes/< appname >_/_< appname >_.app _< pkgname_1 >.pkg
productbuild --synthesize --package < pkgname_1 >_.pkg _< distribution >.xml
​productbuild --distribution < distribution >_.xml --package-path _< pkgname_1 >_.pkg _< pkgname_2 >.pkg​

hdiutil detach /Volumes/< appname >
​
cp < pkgname_2 >_.pkg​ _< pkgname >.pkg​
zip < pkgname >_.zip _< pkgname >.pkg 


mkdir ~/barrier
cp ~/Downloads/Barrier-2.3.3-release.dmg ~/barrier
hdiutil attach ~/barrier/Barrier-2.3.3-release.dmg
pkgbuild --install-location /Applications --component /Volumes/Barrier/Barrier.app ~/barrier/barrier_1.pkg
productbuild --synthesize --package ~/barrier/barrier_1.pkg ~/barrier/distribution.xml​
productbuild --distribution ~/barrier/distribution.xml​ --package-path ~/barrier/barrier_1.pkg ~/barrier/barrier_2.pkg 
Cp ~/barrier/barrier_2.pkg ~/barrier/barrier.pkg
zip ~/barrier/barrier.zip ~/barrier/barrier.pkg

6. barrierアプリをwebサーバへ配置

今回はテストのため、localhostにファイルを配置する

7. [参考]スクリプト

参考にスクリプトを添付する。実装した機能としては
・Mac端末からサーバにアクセスできるかチェック
・アプリがインストール済みであるかの判定
・ファイルのダウンロード
・ダウンロードしたファイルのshaによるチェック
・アプリのインストール

スクリプト本体
#!/bin/bash

SHA="4a066d7004417dc7ec65d2bcf428af59c6645740"
SERVER_FQDN="localhost"
SERVER_IP="127.0.0.1"
BARRIER_APP="/Applications/Barrier.app"
DOWNLOAD_PKG_URL="http://${SERVER_FQDN}:8080/barrier.zip"
PKG_FILE=/tmp/barrier.pkg
ZIP_FILE=/tmp/barrier.zip

#
# check location
echo "0000 -- check location"
nslookup ${SERVER_FQDN} | grep ${SERVER_IP} 2>&1
if [ $? -eq 0 ]; then
  echo "location check is success"
else
  echo "location check is not success"
  exit 1
fi

#
# barrier install check
echo "0001 -- barrier install check"
if [ -d "$BARRIER_APP" ]; then
  echo "barrier is installed"
  exit 0
else
  echo "barrier is not installed"
fi

#
# download 
echo "0002 --  download pkg file"
curl -fsSL ${DOWNLOAD_PKG_URL} -o ${ZIP_FILE}

#
# check sha
echo "003 -- check sha1"
SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"

echo "SHA      : ${SHA}"
echo "SHA_CALC : ${SHA_CALC}"

if [ "$SHA" = "$SHA_CALC" ]; then
  echo "download succeeded"
else
  echo "download error re-try"
  curl -fsSL ${DOWNLOAD_PKG_URL} -o ${PKG_FILE}
  SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"
  if [ "$SHA" = "$SHA_CALC" ]; then
    echo "download succeeded(2)"
  else
    echo "download error(2) stop it"
    exit 1
  fi
fi

#
# unzip pkg file
unzip -B ${ZIP_FILE} -d /tmp

#
# install barrier
echo "005 -- install pkg"
sudo installer -pkg ${PKG_FILE} -target /Applications 

if [ $? -eq 0 ]; then
  echo "install succeeded"
  exit 0
else
  echo "install error"
  exit 1
fi

8. barrierアプリ配信用スクリプトの配置

Microsoft Endpoint Manager Admin Centerにログインし、
デバイス > macOS > シェルスクリプトを開き、追加ボタンをクリック

barrier-001.png

今回は、以下のようにポリシーを作成/適用。

barrier-002.png

9. まとめ

  • dmg形式以外のファイルを配布することができた
  • スクリプトについて必要最低限の機能を実装したが、必要に応じて、追加機能が必要と思われる
  • 注意-ファイルのダウンロード元をlocalhostと指定しているため、実行タイミングによっては、エラーになることがあるため、注意が必要

10. 参考資料

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?