Специальное распространение для Windows iTunes работает так же, как и для Mac iTunes. Я настроил свои проекты Xcode в соответствии с инструкциями Apple для специального распространения, а затем добавил свой собственный Makefile для создания дистрибутива. Фрагмент файла Makefile:
AdHoc AppStore :
rm -rf iphone/build/$@-${DEVICE_SDK}/${APP_NAME}.app
cd iphone ; xcodebuild -target ${APP_NAME} \
-configuration $@ -sdk ${DEVICE_SDK}${SDK_VERSION}
for f in embedded.mobileprovision CodeResources _CodeSignature/CodeResources ; do \
[ -f iphone/build/$@-${DEVICE_SDK}/${APP_NAME}.app/$$f ] || \
{ echo BITCH MOAN COMPLAIN : missing $$f ; exit 1 ; } \
done
mkdir -p ${DISTRO_ROOT}/$@
[ -f ${DISTRO_ROOT}/$@/$@.mobileprovision ] || \
cp ${PROVISION_DIR}/$@.mobileprovision ${DISTRO_ROOT}/$@/$@.mobileprovision
cd iphone/build/$@-${DEVICE_SDK} ; \
rm -f ${DISTRO_ROOT}/$@/${APP_NAME}.app.zip ; \
zip -r -y ${DISTRO_ROOT}/$@/${APP_NAME}.app.zip ${APP_NAME}.app
cd ${DISTRO_ROOT}/$@ ; rm -rf ${APP_NAME}.app ; unzip ${APP_NAME}.app.zip ; \
codesign -vvvvv ${APP_NAME}.app && rm -rf ${APP_NAME}.app || \
{ rm -rf ${APP_NAME}.app ; exit 1 ; }
cd iphone/build/$@-${DEVICE_SDK} ; \
rm -rf Payload ; mkdir Payload ; \
ln -s ../${APP_NAME}.app Payload/ ; \
zip -r ${DISTRO_ROOT}/$@/${APP_NAME}.ipa Payload
Моя структура проекта: ./Makefile и ./iphone/MyProject.xcodeproj с исходниками в ожидаемом месте ./iphone/Classes/*.[hm]. Объяснения переменной makefile:
APP_NAME=whatever_your_app_is_named
DEVICE_SDK=iphoneos
DISTRO_ROOT=/some/path/you/like
PROVISION_DIR=~/Library/MobileDevice/Provisioning_Profiles
SDK_VERSION=3.1.2
Я добавил связанные Provisioning_Profiles к "Provisioning Profiles" для упрощения ввода. Я также жестко связал соответствующий профиль обеспечения в этом каталоге с AppStore.mobileprovision или AdHoc.mobileprovision для упрощения обновления.
Сами шаги просты: очистить пространство для сборки, собрать приложение, убедиться, что биты для подписи кода на месте, подготовить место для установки для дистрибутива, получить соответствующий файл с мобильным обеспечением, заархивировать приложение, проверьте подпись и заархивируйте в виде файла .ipa. (Строго говоря, zip-файл нужен только для AppStore и .ipa для AdHoc, но я собрал их вместе для своего истерического изюма.: -)
Затем я отправляю файл .ipa и файл мобильного доступа на частный веб-сайт. Мои бета-тестеры опускают .ipa вниз и перетаскивают его в iTunes. Только если я добавляю или удаляю устройство, мобильное обеспечение меняется, что вынуждает бета-тестеров открывать и перетаскивать последний файл мобильного обеспечения.
Это сработало очень хорошо для меня и моих бета-тестеров на iClear (обновление в обзоре).