Как развернуть проект OSX или IOS Delphi из командной строки?
Я создаю свои приложения Delphi с помощью скрипта, такого как
call "C:Program Files (x86)EmbarcaderoRAD Studio.0binrsvars.bat"
msbuild.exe "C:ProjectsFooBar.dproj"
и теперь я хочу добавить опцию для развертывания приложения в систему OSX (или IOS), модифицирующую такой скрипт, поэтому можно ли развернуть проект OSX или iOS Delphi из командной строки?
3 ответов
чтобы развернуть приложение в удаленном месте, необходимо использовать paclient.exe (клиентское приложение Platform Assistant).
чтобы получить переданные параметры сборки и запустить проект из RAD Studio, а затем проверить Build
вкладка окна сообщений IDE.
проверьте следующее изображение для приложения OSX с помощью профиля под названием Local
отсюда вы можете извлечь все параметры, переданные paclient.exe
- удалить в Хосте предыдущие файлы (существует)
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый -- Clean= " Project7.app,C:\Users\RRUZ\Desktop\Test Deploy_@emb_.tmp"
на _@emb_.tmp
файл-это временный файл, созданный ide, который содержит все файлы для развертывания, в этом случае содержимое выглядит так
Project7.app\Contents\MacOS\Project7.rsm
Project7.app\Contents\Entitlements.plist
Project7.app\Contents\MacOS\libcgunwind.1.0.dylib
Project7.app\Contents\MacOS\Project7
Project7.app\Contents\Resources\Project7.icns
- скопировать Информация.plist (содержит settup info the .app, как значок, используемый и версия) файл на хост
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый --поставить="OSX32\отладки\Project7.информация.файл plist,Project7.приложение\Содержание\,1,Инфо.plist в" местных
- скопировать
libcgunwind.1.0.dylib
файл (библиотека) на хост
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый --поставить="файлы c:\program (для x86)\Embarcadero в\рад студии\11.0\с Redist\osx32\libcgunwind.1.0.dylib нужна,Project7.app\Contents\MacOS\, 1, libcgunwind.1.0.dylib нужна" Местные
- скопируйте пакет на хост
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый -- put= " OSX32\Debug\Project7, Project7.app\Contents\MacOS\, 1, Project7 " Local
- скопируйте файл символов удаленной отладки в Хозяин
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый -- put= " OSX32\Debug\Project7.rsm, Project7.app\Contents\MacOS\, 1, Project7.rsm" Местные
- скопируйте значок проекта на хост
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый -- put="c:\program файлы (x86)\embarcadero\rad studio\11.0\bin\delphi_PROJECTICNS.icns по,Project7.app\Contents\Resources\, 1, Project7.icns по" Местные
- скопировать права.plist файл на хост
c:\program файлы (x86)\embarcadero\RAD studio\11.0\bin\paclient.исполняемый -- put= " OSX32\Debug\Project7.права, проект 7.app\Contents\, 1, права.файл plist" Местные
скрипт
наконец, вы можете положить все это в файл сценария так что
call "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\rsvars.bat"
MSBuild Project7.dproj
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --Clean="Project7.app,C:\Users\RRUZ\Desktop\Test Deploy\files.txt"
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="OSX32\Debug\Project7.info.plist,Project7.app\Contents\,1,Info.plist" Local
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="c:\program files (x86)\embarcadero\rad studio.0\Redist\osx32\libcgunwind.1.0.dylib,Project7.app\Contents\MacOS\,1,libcgunwind.1.0.dylib" Local
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="OSX32\Debug\Project7,Project7.app\Contents\MacOS\,1,Project7" Local
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="OSX32\Debug\Project7.rsm,Project7.app\Contents\MacOS\,1,Project7.rsm" Local
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="c:\program files (x86)\embarcadero\rad studio.0\bin\delphi_PROJECTICNS.icns,Project7.app\Contents\Resources\,1,Project7.icns" Local
"c:\program files (x86)\embarcadero\rad studio.0\bin\paclient.exe" --put="OSX32\Debug\Project7.entitlements,Project7.app\Contents\,1,Entitlements.plist" Local
Примечание: помните, создать файл с именами файлов всех файлов для развертывания, в этом примере сценария называется files.txt
, этот файл используется paclient для очистки previus развернутых файлов.
этот ответ запоздал, но я подумал, что он все еще может быть полезен для других людей. В рамках сценария сборки я также хотел автоматически развернуть проект в OSX, но это невозможно напрямую с помощью MSBuild или Embarcadero paclient.инструмент exe.
Я написал вспомогательный инструмент командной строки Embdeploy для автоматизации задачи. The источник и a скомпилированный двоичный доступны на GitHub.
вот некоторые примеры использование:
embdeploy.exe -deploy myproject.dproj
embdeploy.exe -platform OSX32 -config Release -deploy myproject.dproj
embdeploy.exe -profile <remote profile> -platform OSX32 -deploy myproject.dproj
инструмент Embdeploy анализирует .файл dproj, который является XML, и создает список файлов для копирования для указанной конфигурации, платформы и т. д. Он также определяет платформу по умолчанию, профиль, конфигурацию из проекта, если они не указаны в командной строке. Можно определить параметры развертывания в среде IDE Delphi, а затем использовать средство для автоматического развертывания.
Чтобы очистить папку удаленного проекта и выполнить фактическое развертывание инструмента использует paclient.exe и выполняет его с соответствующими параметрами. Паклиент.exe обнаружен из пути установки Delphi.
есть еще одна проблема, что инструмент решает для меня. Мой проект включает дополнительные связанные двоичные файлы, которые развертываются вместе с приложением, но в этом случае среда IDE Delphi не дает достаточного контроля. Например. он развертывает дополнительные двоичные файлы, но не устанавливает разрешение Execute на OSX, которое должно быть установлено вручную позже. Также невозможно "codesign" эти двоичные файлы, и это необходимо для публикации приложения в Appstore.
чтобы исправить это, я добавил функциональность, чтобы выполнить произвольные команды на удаленной машине после развертывания файла.
Это делается так:
embdeploy.exe -cmd "chmod +x myproject.app/Contents/MacOS/somebinary" myproject.dproj
embdeploy.exe -cmd "codesign .... myproject.app/Contents/MacOS/somebinary" myproject.dproj
это делается снова с paclient.исполняемый. Средство Embarcadero предоставляет возможность развернуть файл сценария, выполнить его, а затем удалить. Я использовал это для выполнения собственных команд, создав временный файл оболочки с помощью команда, ее развертывание и выполнение.
Таким образом, я мог использовать "chmod", "productbuild" и все, что мне нужно.
инструмент немного прост и не оптимизирован в настоящее время, поскольку я написал его для своих непосредственных нужд, но я планирую расширить его еще несколькими функциями. Е. Г. создании zip-архива для OSX пакет приложений в Windows.
прежде всего, это не вопрос о Delphi, это больше связано со сценариями в windows.
Итак, если вы можете получить доступ к OSX в вашей операционной системе, вам, вероятно, нужно только скопировать необходимые файлы непосредственно в папки, где они должны находиться в целевой операционной системе.
для IOS, вероятно, вы не сможете скомпилировать непосредственно в windows. Насколько я помню, вы экспортируете свой код в код, который может быть скомпилирован в Xcode таргетинга IOS (требование Apple).