55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
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");
|
||
}
|
||
|
||
/// <summary>
|
||
/// 释放资源文件至本地文件
|
||
/// </summary>
|
||
/// <param name="resourceName"></param>
|
||
/// <param name="fileFullName"></param>
|
||
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}失败");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|