sciter 资源打包和加载的步骤

By terrorist at 2022-04-26 • 0人收藏 • 1083人看过

使用 packfolder.exe - 它会将文件夹与您的资源(html、css、脚本)压缩成二进制 blob


一  打包

sciter 的打包器在 \sciter-js-sdk-main\bin\windows\packfolder.exe ,  

命令行格式 

packfolder.exe folder outfile [options]

假设资源文件在 res 目录, 输出文件名字   resources.bin ,那么命令为:

packfolder.exe res resources.bin -binary


二  添加函数


先在 web.sciter.api 补充几个 API 

ptr OpenArchive = "ptr(ptr archiveData,INT archiveDataLength)";
ptr GetArchiveItem = "bool(ptr harc,ustring path, pointer& pdata, INT& pdataLength)"; 
ptr CloseArchive = "bool(ptr harc)";

在 web.sctier 的 ..util.metaProperty 补充几个函数

		openArchive = function(path){
			// 不能用 var 会被回收
			owner.archiveBuffer = ..string.loadBuffer(path) 
			if(owner.archiveBuffer){
				owner.harc = ::Sciter.OpenArchive(owner.archiveBuffer, #owner.archiveBuffer)
			}
		}
		closeArchive = function(){
			if(owner.harc){
				 return ::Sciter.CloseArchive(owner.harc);
			}
		}


在 _defaultNotifyHandler  [ 0x01/*_SC_LOAD_DATA*/ ]  函数 的 var uri = fromUnicode(nmld.uri,,true);  后面加入


			if( ..string.startWith(uri, "this://app/") ){
				var url = ..string.slice(uri,12) 
				var ok, fileData, len = ::Sciter.GetArchiveItem(this.harc, url, null, 0)
					
				if(ok){
				//	var b = ..raw.buffer(len, fileData)
					::Sciter.DataReady(nmld.hwnd, url, fileData, len);
					return 0/*_LOAD_OK*/;
				}
			}

三  使用

把打包后的文件放到工程的资源目录

wb.openArchive("/res/resources.bin")
wb.go("this://app/main.html")


3 个回复 | 最后更新于 2022-04-30
2022-04-26   #1

感谢分享,收藏了 

aardio本来就可以内嵌html资源到exe里,

貌似这种方式可以用来隐藏资源文件,不容易被还原ui代码,内嵌res能用pe工具提取ui资源。

2022-04-26   #2

开发时可以载入没打包的资源

import web.sciter

if(_STUDIO_INVOKED){
	import web.sciter.inspector
}

var wb = web.sciter(mainForm)

if(_STUDIO_INVOKED){
	import web.sciter.debug; 
	wb.attachEventHandler( web.sciter.debug );
	
	
	wb.go("/sciter dev/main.html")
}
else {
	wb.openArchive("/res/resources.bin")
	wb.go("this://app/main.html")
}


另外编辑工程发布前触发 \.build\default.init.aardio 文件,让打包自动化。把资源打包到工程的资源目录,然后同步目录等步骤写进去( 目前 ide 没有开放同步资源目录的接口)

2022-04-30   #3

新版sciter库里增加了扩展

//archive 解包
import web.sciter.archive;

可以直接加载打包文件了.

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...