такой ещё вариант: я запаковывал файлы отчётов (PDF) в архив и отсылал клиенту в пакетной обработке.
использовал как архиватор Info-ZIP, он свободно распространяется и для частного и для бизнес-использования.
для запуска использовал System.Diagnostics.Process, потому что задолбался переписывать методы из WinApi толком в WinApiServer (AX 2009)
в классе это выглядело так:
X++:
void packPDF()
{
str zipExePath = "\"C:\\Program Files\\Info-ZIP\\zip.exe\"";
str parameters;
str quote = "\"";
System.Diagnostics.Process processZIP;
str enquote(str _parm)
{
_parm = quote + _parm + quote;
return _parm;
}
;
parameters = "";
parameters += "-j "; // do not create folder node
parameters += "-9 "; // mid level of packing
parameters += "-m "; // move to archive (delete after packing)
parameters += enquote(zipFile) + " "; // new zip file name
parameters += enquote(folderPath + "*.pdf"); // all pdf files please
new InteropPermission(InteropKind::ClrInterop).assert();
processZIP = System.Diagnostics.Process::Start(zipExePath, parameters);
processZIP.WaitForExit();
CodeAccessPermission::revertAssert();
}
после WaitForExit() у процесса можно и спросить, с каким кодом он там завершился, насколько я помню, давно делал.