Mac - 애플리케이션 배포 (서명되지 않은 PKG)
소개...
조사한 내용을 시계열로 정리한 자료이므로, 그 점 양해 바랍니다.
목차
1. 실행 환경
품목
정보
OS
macOS 11.3.1
HW
MacBook Air (11-inch, Mid 2013)
MDM 환경
마이크로소프트 intune
2. 실현하고 싶은 것
최종 목표
- ※ 단, 사용자가 선택한 부분을 제외하고
이번 목표
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
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 앱을 웹 서버에 배포
이번에는 테스트를 위해 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 > 쉘 스크립트를 열고 추가 버튼을 클릭
이번에는 다음과 같이 정책을 작성/적용.
9. 정리
10. 참고 자료
Reference
이 문제에 관하여(Mac - 애플리케이션 배포 (서명되지 않은 PKG)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tatca/items/e8e5af740e6f6e3edeff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)