Используйте прослушиватель событий, который прослушивает события Model.beforeSave
, Model.beforeFind
и Model.initialize
и применяет все, что вы хотите сделать. Прочитайте главу о событиях и документации для обратных вызовов таблицы .
use Cake\Event\EventListenerInterface;
use Cake\Event\Event;
class SomeListener implements EventListenerInterface
{
public function implementedEvents()
{
return [
'Model.beforeFind' => 'beforeFind',
];
}
public function beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary)
{
// Your code here
}
}
И присоедините ее к глобальному . Теперь он будет слушать обратные вызовы всех табличных объектов.
Сделать это вручную:
Метод 1:
/Applications/Utilities/
) Cmd + Shift + N
) 2:
, Чтобы сделать вещи как установка фонового изображения могут быть немного замысловатыми (Вы в основном добавляете фоновое изображение к DMG, устанавливаете свойства окон для использования того изображения, с помощью командной строки, Вы перемещаете фоновое изображение от background.png
до .background.png
для создания этого скрытым)
, я рекомендовал бы iDMG, который делает вещи немного менее утомительными.
можно также написать сценарий создания DMGs использование команды hdiutil
. Что-то вроде [1 138]
hdiutil create -srcfolder mydirtodmg mydmg.dmg
Что касается пользовательского лицензионного соглашения, необходимо изучить инструмент, включенный с Инструментами Разработчика "PackageMaker" - это довольно очевидно. Это находится в /Developers/Application/Utilities/
Я сделал немного сценария удара для автоматизации создания образа дисков.
Это создает временный каталог, чтобы хранить все необходимые файлы, затем экспортируют его в новом файле DMG. Временный каталог затем удален. Можно автоматически запустить этот сценарий в конце процесса сборки.
#!/bin/bash
# Create .dmg file for macOS
# Adapt these variables to your needs
APP_VERS="1.0"
DMG_NAME="MyApp_v${APP_VERS}_macos"
OUTPUT_DMG_DIR="path_to_output_dmg_file"
APP_FILE="path_to_my_app/MyApp.app"
OTHER_FILES_TO_INCLUDE="path_to_other_files"
# The directory of the script
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# The temp directory used, within $DIR
WORK_DIR=`mktemp -d "${DIR}/tmp"`
# Check if tmp dir was created
if [[ ! "${WORK_DIR}" || ! -d "${WORK_DIR}" ]]; then
echo "Could not create temp dir"
exit 1
fi
# Function to deletes the temp directory
function cleanup {
rm -rf "${WORK_DIR}"
#echo "Deleted temp working directory ${WORK_DIR}"
}
# Register the cleanup function to be called on the EXIT signal
trap cleanup EXIT
# Copy application on temp dir
cp -R "${APP_FILE}" "${WORK_DIR}"
# Copy other files without hidden files
rsync -a --exclude=".*" "${OTHER_FILES_TO_INCLUDE}" "${WORK_DIR}"
# Create .dmg
hdiutil create -volname "${DMG_NAME}" -srcfolder "${WORK_DIR}" -ov -format UDZO "${OUTPUT_DMG_DIR}/${DMG_NAME}.dmg"
почему бы вам просто не запустить сценарий из вашего проекта xcode. попробуйте что-то вроде этого:
# be sure to check the man page for hdiutil
# it is very powerful and has tons of options...
hdiutil create -megabytes 54 -fs HFS+ -volname awesome_app_install myAwesomeApplication.dmg
hdiutil mount myAwesomeApplication.dmg
cp -r /build/Release/AwesomeApplication.app /Volumes/awesome_app_install/
затем сохраните ваш скрипт как что-то вроде makeDMG.sh и в своей цели
выберите add-> new build phase-> run script build phase
и перетащите свой скрипт на эту фазу сборки.
после того, как вы все это сделаете, затем, когда вы соберете свой проект, скрипт создаст образ диска и скопирует в него сборку релиза ...
конечно, вам следует приправьте ваш скрипт, чтобы придать ему вкус ... эти три строки - всего лишь сырое мясо
ps: ваше пользовательское лицензионное соглашение должно быть встроено в ваш проект создателя пакетов (который вы также можете создать очень красиво)