140 lines
3.7 KiB
Bash
Executable File
140 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
CUR_PATH=$(
|
|
cd $(dirname "$0");
|
|
pwd
|
|
)
|
|
ROOT_PATH=$(
|
|
cd "${CUR_PATH}/../";
|
|
pwd
|
|
)
|
|
TEMP_PATH="${ROOT_PATH}/tmp"
|
|
PUBLISH_PATH="${ROOT_PATH}/publish"
|
|
|
|
APP_VERSION="8.0.2.1895"
|
|
|
|
DMG_SHA256SUM="f595aac413b19dc4bd35ac6dcdd2c0d3aa94dbf0387f92242aa51409b58607ca"
|
|
|
|
DMG_DOWNLOAD_URL="https://nektony.com/download/app-cleaner-uninstaller/app-cleaner-uninstaller.dmg"
|
|
|
|
DMG_FILE="${TEMP_PATH}/download/app-cleaner-uninstaller_${APP_VERSION}.dmg"
|
|
|
|
PUBLISH_FILE="${PUBLISH_PATH}/app-cleaner-uninstaller_${APP_VERSION}_Crack.dmg"
|
|
|
|
CODESIGN_CERT=-
|
|
|
|
if [ -n "$(security find-identity -v -p codesigning | grep 73B34EBEE504D5CEE35B113A22CEBFD381A21033)" ]; then
|
|
CODESIGN_CERT=73B34EBEE504D5CEE35B113A22CEBFD381A21033
|
|
fi
|
|
|
|
PACK_DIR="${TEMP_PATH}/dmg_files"
|
|
|
|
function sign_cmd() {
|
|
NAME=$(basename $1)
|
|
if [ -f "${ROOT_PATH}/entitlements/${NAME}.entitlements" ]; then
|
|
codesign -f -s "${CODESIGN_CERT}" --timestamp=none --all-architectures --deep \
|
|
--entitlements "${ROOT_PATH}/entitlements/${NAME}.entitlements" \
|
|
"$1"
|
|
else
|
|
codesign -f -s "${CODESIGN_CERT}" --timestamp=none --all-architectures --deep "$1"
|
|
fi
|
|
}
|
|
|
|
function ensure_download_dmg() {
|
|
if [ ! -f "${DMG_FILE}" ]; then
|
|
echo "[*] Download ${DMG_DOWNLOAD_URL}"
|
|
mkdir -p $(dirname "${DMG_FILE}")
|
|
curl -L --progress-bar -o "${DMG_FILE}" "${DMG_DOWNLOAD_URL}"
|
|
fi
|
|
if [ -f "${DMG_FILE}" ]; then
|
|
echo "[*] Check hash for \"${DMG_FILE}\""
|
|
FILE_HASH=$(shasum -a 256 -b "${DMG_FILE}" | awk '{print $1}')
|
|
if [ ${FILE_HASH} != ${DMG_SHA256SUM} ]; then
|
|
echo "[-] ${FILE_HASH} != ${DMG_SHA256SUM}"
|
|
echo "[*] Delete \"${DMG_FILE}\""
|
|
rm -f "${DMG_FILE}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function copy_files() {
|
|
echo "[*] Copy files"
|
|
if [ -d "${PACK_DIR}" ]; then
|
|
rm -rf "${PACK_DIR}" > /dev/null
|
|
fi
|
|
mkdir -p "${PACK_DIR}" > /dev/null
|
|
|
|
MOUNT_DIR=$(hdiutil attach -readonly -noverify -noautofsck -noautoopen "${DMG_FILE}" | grep -E --color=never '/Volumes/' | cut -d'/' -f 4-)
|
|
cp -R -X "/${MOUNT_DIR}/App Cleaner 8.app" "${PACK_DIR}/" > /dev/null
|
|
hdiutil detach "/${MOUNT_DIR}"
|
|
|
|
rm -f "${PACK_DIR}/App Cleaner 8.app/Contents/embedded.provisionprofile" > /dev/null
|
|
chflags -R 0 "${PACK_DIR}" > /dev/null
|
|
xattr -cr "${PACK_DIR}" > /dev/null
|
|
}
|
|
|
|
function apply_crack() {
|
|
echo "[*] Apply patch"
|
|
|
|
SRC="${ROOT_PATH}/crack/App Cleaner 8"
|
|
DST="${PACK_DIR}/App Cleaner 8.app/Contents/MacOS/App Cleaner 8"
|
|
|
|
cp -f "${SRC}" "${DST}" > /dev/null
|
|
chflags -R 0 "${DST}"
|
|
chmod 755 "${DST}"
|
|
}
|
|
|
|
function sign_other() {
|
|
oldIFS=$IFS
|
|
IFS=$'\n'
|
|
for name in $(ls "${PACK_DIR}/App Cleaner 8.app/Contents/Library/LoginItems/")
|
|
do
|
|
if [ -f "${PACK_DIR}/App Cleaner 8.app/Contents/Library/LoginItems/${name}/Contents/embedded.provisionprofile" ]; then
|
|
rm -f "${PACK_DIR}/App Cleaner 8.app/Contents/Library/LoginItems/${name}/Contents/embedded.provisionprofile" > /dev/null
|
|
fi
|
|
sign_cmd "${PACK_DIR}/App Cleaner 8.app/Contents/Library/LoginItems/${name}"
|
|
done
|
|
IFS=oldIFS
|
|
}
|
|
|
|
function sign_app() {
|
|
echo "[*] Sign App"
|
|
sign_other
|
|
if [ -f "${PACK_DIR}/App Cleaner 8.app/Contents/embedded.provisionprofile" ]; then
|
|
rm -f "${PACK_DIR}/App Cleaner 8.app/Contents/embedded.provisionprofile" > /dev/null
|
|
fi
|
|
sign_cmd "${PACK_DIR}/App Cleaner 8.app"
|
|
}
|
|
|
|
function create_dmg() {
|
|
echo "[*] Create dmg ${PUBLISH_FILE}"
|
|
mkdir -p "${PUBLISH_PATH}"
|
|
|
|
if [ -f "${PUBLISH_FILE}" ]; then
|
|
rm -f "${PUBLISH_FILE}" > /dev/null
|
|
fi
|
|
|
|
create-dmg \
|
|
--volname "App Cleaner & Uninstaller" \
|
|
--background "${ROOT_PATH}/assets/bg.png" \
|
|
--window-pos 0 0 \
|
|
--window-size 550 400 \
|
|
--text-size 12 \
|
|
--icon-size 128 \
|
|
--icon "App Cleaner 8.app" 135 230 \
|
|
--app-drop-link 416 230\
|
|
--codesign "${CODESIGN_CERT}" \
|
|
"${PUBLISH_FILE}" \
|
|
"${PACK_DIR}/"
|
|
}
|
|
|
|
function publish_crack_dmg() {
|
|
ensure_download_dmg
|
|
copy_files
|
|
apply_crack
|
|
sign_app
|
|
create_dmg
|
|
}
|
|
|
|
publish_crack_dmg
|