代码之家  ›  专栏  ›  技术社区  ›  Joseph Caruana

发布自定义项目的命令行界面(或其他自动化)

  •  0
  • Joseph Caruana  · 技术社区  · 6 年前

    我知道Acumatica有一个可以通过ac.exe访问的CLI,但是当我检查文档时,这似乎只支持“部署一个新的应用程序实例” 执行数据库和应用程序维护。

    有人知道它是否也可以用于自动化定制项目的发布吗?

    在源代码管理合并之后,我希望自动执行以下步骤:

    1. 从文件夹打开自定义项目
    2. 更新已修改的文件(以便在项目中更新dll)
    3. 向所有公司发布并清除。

    有可能吗?

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gabriel    6 年前

    有一组特定的web服务api可用于上载和发布包。这作为定制指南的一部分记录在 管理自定义项目->从代码中操作自定义项目 . 以下是文档中的相关摘录:

    正在上载包

    var webserviceurl = "http://localhost/AcumaticaInstance/api/ServiceGate.asmx";
    var username = "admin";
    var password = "123";
    var packageName = "package1";
    var packageContents = File.ReadAllBytes("C:\package1.zip");
    var replaceIfPackageExists = true;
    
    var client = new ServiceGate.ServiceGate
    {
      Url = webserviceurl,
      CookieContainer = new CookieContainer(),
      Timeout = (int) TimeSpan.FromMinutes(5).TotalMilliseconds
    };
    
    var loginResult = client.Login(username, password);
    
    if (loginResult.Code == ErrorCode.OK)
    {
      client.UploadPackage(packageName, packageContents, replaceIfPackageExists);
    }
    

    发布包

    var webserviceurl = "http://localhost/AcumaticaInstance/api/ServiceGate.asmx";
    var username = "admin";
    var password = "123";
    var packageNames = new []{"package1", "package2", "package3"};
    var mergeWithExistingPackages = true;
    
    var client = new ServiceGate.ServiceGate
    {
      Url = webserviceurl,
      CookieContainer = new CookieContainer(),
      Timeout = (int) TimeSpan.FromMinutes(5).TotalMilliseconds
    };
    
    var loginResult = client.Login(username, password);
    
    if (loginResult.Code == ErrorCode.OK)
    {
      client.PublishPackages(packageNames, mergeWithExistingPackages);
    }