godking.resHtml + godking.filePackage 库,单个资源文件封装一个可以内存浏览的网页

光庆 4月前 941

只需在资源文件中添加一个打包好的文件(可明文、可加密),浏览器访问时,再由aardio解包返回正确的文件内容即可。

这样在exe文件中,res资源非常干净,不用带一堆网页文件了。

godking.resHtml 、 godking.filePackage 库请自行下载。 

工程文件已打包,请下载附件测试。



下面是浏览器组件访问资源文件显示网页的代码:

Code AardioLine:32复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
    • import win.ui;
    • /*DSG{{*/
    • var winform = win.form(text="aardio form";right=559;bottom=583)
    • winform.add(
    • custom={cls="custom";text="自定义控件";left=8;top=40;right=552;bottom=576;bgcolor=12639424;border=1;z=1};
    • static={cls="static";text="加密网页";left=8;top=8;right=104;bottom=32;font=LOGFONT(h=-16);transparent=1;z=2}
    • )
    • /*}}*/
    • //导入相关库
    • import sevenZip.lzma;
    • import godking.resHtml;
    • import web.view;
    • //浏览加密网页
    • var resHtml = godking.resHtml( /*资源目录*/,"Aardio资源网.html"/*首页文件名*/,`
    • function(html){
    • import godking.filePackage;
    • var file = ..io.splitpath(html).file;
    • var data = godking.filePackage.getDataFromBuffer(..string.load("\res\htmldata"),file);
    • if #data {
    • import sevenZip.lzma;
    • return sevenZip.lzma.unCompress(data);
    • }
    • }
    • `/*内容获取函数代码*/,/*资源解密函数代码*/);
    • var wb = web.view(winform.custom);
    • wb.go(resHtml.url);
    • //显示窗口
    • winform.show();
    • win.loopMessage();


    下面是我将 加密的网页文件,全部打包生成一个文件的代码:

    Code AardioLine:14复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    • import godking.filePackage;
    • var a = godking.filePackage();
    • import fsys
    • fsys.enum( "D:\aardio\project\aardio工程\res\aardio资源网加密\Aardio资源网_files\", "*.*",
    • function(dir,filename,fullpath,findData){
    • if(filename){
    • a.addFile(filename,..string.load(fullpath));
    • }
    • }
    • ,/*如果此参数为false则忽略子目录*/
    • );
    • a.addFile("Aardio资源网.html",..string.load("D:\aardio\project\aardio工程\res\aardio资源网加密\Aardio资源网.html"));
    • //你也可以给addFile的第二个参数,直接提供一个加密的文件数据,然后在resHtml中就可以直接解密使用了。
    • a.saveToFile("C:\Users\Administrator\Desktop\htmldata");


    上传的附件:
    最新回复 (3)
    • breezee 4月前
      0 2
      光庆大大牛牛牛!
    • jyb21 2月前
      0 3
      这个htmldata资源文件是用什么方法打包的呢,原始资源文件可以是包含多个网页文件以及多个子目录,包括一些css和js以及图片文件字体文件吗?我用sevenZip.lzma.compress将每个文件处理后,再用godking.filePackage库添加文件,添加目录库进行打包,用上面的方法进行读取显示调用失败。
    • 光庆 2月前
      0 4
      jyb21 这个htmldata资源文件是用什么方法打包的呢,原始资源文件可以是包含多个网页文件以及多个子目录,包括一些css和js以及图片文件字体文件吗?我用sevenZip.lzma.compress将每个文 ...
      先用godking.filePackage库解析出文件,再用sevenzip解压数据,再返回给网页调用
    返回