How deploy a OSX or IOS Delphi project from the Command line?
delphi, delphi-xe4
Solution
To deploy your application to a remote location , you must use the paclient.exe (Platform Assistant Client Application) tool.
In order to get the passed parameters Build and Run you project from RAD Studio and then check the `Build` tab of the message windows of the IDE.
Check the next image for a OSX Application using a profile called `Local`
From here you can extract all the parameters passed to the paclient.exe
- Delete in the host the previous files (is exists)
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --Clean="Project7.app,C:\Users\RRUZ\Desktop\Test Deploy_@emb_.tmp"
the `_@emb_.tmp` file is a temp file created by the ide that contains all the files to deploy in this case the content is like so
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
- Copy the Info.plist (contains settup info the the .app like the icon used and the version) file to the Host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="OSX32\Debug\Project7.info.plist,Project7.app\Contents\,1,Info.plist" Local
- Copy the `libcgunwind.1.0.dylib` file (library) to the host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="c:\program files (x86)\embarcadero\rad studio\11.0\Redist\osx32\libcgunwind.1.0.dylib,Project7.app\Contents\MacOS\,1,libcgunwind.1.0.dylib" Local
- Copy the bundler to the host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="OSX32\Debug\Project7,Project7.app\Contents\MacOS\,1,Project7" Local
- Copy the Remote debug symbols file to the Host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="OSX32\Debug\Project7.rsm,Project7.app\Contents\MacOS\,1,Project7.rsm" Local
- Copy the project icon to the Host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="c:\program files (x86)\embarcadero\rad studio\11.0\bin\delphi_PROJECTICNS.icns,Project7.app\Contents\Resources\,1,Project7.icns" Local
- Copy the Entitlements.plist file to the Host
c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe --put="OSX32\Debug\Project7.entitlements,Project7.app\Contents\,1,Entitlements.plist" Local
Final script
Finally you can put all this in a script file like so
call "C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin\rsvars.bat"
MSBuild Project7.dproj
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --Clean="Project7.app,C:\Users\RRUZ\Desktop\Test Deploy\files.txt"
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="OSX32\Debug\Project7.info.plist,Project7.app\Contents\,1,Info.plist" Local
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="c:\program files (x86)\embarcadero\rad studio\11.0\Redist\osx32\libcgunwind.1.0.dylib,Project7.app\Contents\MacOS\,1,libcgunwind.1.0.dylib" Local
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="OSX32\Debug\Project7,Project7.app\Contents\MacOS\,1,Project7" Local
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="OSX32\Debug\Project7.rsm,Project7.app\Contents\MacOS\,1,Project7.rsm" Local
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="c:\program files (x86)\embarcadero\rad studio\11.0\bin\delphi_PROJECTICNS.icns,Project7.app\Contents\Resources\,1,Project7.icns" Local
"c:\program files (x86)\embarcadero\rad studio\11.0\bin\paclient.exe" --put="OSX32\Debug\Project7.entitlements,Project7.app\Contents\,1,Entitlements.plist" Local
Note : Remember create a file with the file names of all the files to deploy , in this sample script is called `files.txt`, this file is use by the paclient to cleanup previus deployed files.
Problem
I'm building my Delphi Apps using a script like ``` call "C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin\rsvars.bat" msbuild.exe "C:\Projects\Foo\Bar.dproj" ``` And now I want add an option to deploy the application to an OSX (or IOS) system modifing such script, so is possible deploy a OSX or IOS Delphi project from the Command line?