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

时间:2018-08-19 09:22:19

标签: acumatica

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

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

源代码控件合并后,我想自动执行以下步骤:

  1. 重建dll
  2. 从文件夹打开自定义项目
  3. 更新修改后的文件(以便在项目中更新dll)
  4. 发布清理到所有公司。

有可能吗?

如果无法通过ac.exe获得,是否有可能通过.Net代码使用Acumatica SDK或REST API?

非常感谢。

1 个答案:

答案 0 :(得分:1)

有一组特定的Web服务API,可用于上载和发布程序包。这是《定制指南》中管理定制项目->通过代码操作定制项目下的一部分。以下是文档中的相关摘录:

上传软件包

以下代码登录到Acumatica ERP实例,加载C:\ package1.zip文件内容,并在实例的数据库中保存或更新package1定制项目。

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);
}

发布程序包

以下代码登录到Acumatica ERP实例并发布实例数据库中存在的package1,package2和package3自定义项目。

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);
}