如何从命令行部署OSX或IOS Delphi项目?

Sal*_*dor 6 delphi delphi-xe4

我正在使用像这样的脚本构建我的Delphi应用程序

call "C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin\rsvars.bat"
msbuild.exe "C:\Projects\Foo\Bar.dproj"
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个选项将应用程序部署到OSX(或IOS)系统修改这样的脚本,那么可以从命令行部署OSX或IOS Delphi项目吗?

RRU*_*RUZ 6

要将应用程序部署到远程位置,必须使用paclient.exe(Platform Assistant客户端应用程序)工具.

为了获取传递的参数,从RAD Studio中构建并运行项目,然后检查BuildIDE的消息窗口的选项卡.

使用名为的配置文件检查OSX应用程序的下一个图像 Local

在此输入图像描述

从这里,您可以提取传递给paclient.exe的所有参数

  • 在主机中删除以前的文件(存在)

c:\ program files(x86)\ embarcadero\rad studio\11.0\bin\paclient.exe --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
Run Code Online (Sandbox Code Playgroud)
  • 将Info.plist(包含.app,如所使用的图标和版本)文件复制到主机

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

  • libcgunwind.1.0.dylib文件(库)复制到主机

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

  • 将Entitlements.plist文件复制到主机

c:\ program files(x86)\ embarcadero\rad studio\11.0\bin\paclient.exe --put ="OSX32\Debug\Project7.entitlements,Project7.app\Contents \,1,Entitlements.plist"Local

最后的剧本

最后,您可以将所有这些放在脚本文件中

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 
Run Code Online (Sandbox Code Playgroud)

注意:请记住创建一个文件,其中包含要部署的所有文件的文件名,在此示例脚本中调用files.txt,此文件由paclient用于清理previus部署的文件.