using Microsoft.AspNetCore.Builder;
using System;
using System.IO;
using System.Reflection;
namespace JingGong.Abp.Print.GoDEX
{
public static class PrintExtension
{
public static void AddGoDEX(this IApplicationBuilder applicationBuilder)
{
//注:docker运行时需添加环境变量:#ENV LD_LIBRARY_PATH=/app/libx64:$LD_LIBRARY_PATH
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libezio.so.1.1.0", "libx64/libezio.so.1.1.0");
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libttf_x64.so", "libx64/libttf_x64.so");
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libusb-1.0.so.0.3.0", "libx64/libusb-1.0.so.0");
//临时解决环境变量未生效问题
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libezio.so.1.1.0", "libezio.so.1.1.0");
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libttf_x64.so", "libttf_x64.so");
ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libusb-1.0.so.0.3.0", "libusb-1.0.so.0");
}
///
/// 释放资源文件至本地文件
///
///
///
internal static void ExtractResourceToFile(string resourceName, string fileFullName)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream == null)
return;
try
{
var dir = Path.GetDirectoryName(fileFullName);
if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir))
Directory.CreateDirectory(dir);
using (FileStream fileStream = new FileStream(fileFullName, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
}
catch
{
Console.WriteLine($"写入{fileFullName}失败");
}
}
}
}
}