sciter 资源打包和加载的步骤

By terrorist at 21 天前 • 0人收藏 • 491人看过

使用 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 个回复 | 最后更新于 16 天前
21 天前   #1

感谢分享,收藏了 

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

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

21 天前   #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 没有开放同步资源目录的接口)

16 天前   #3

新版sciter库里增加了扩展

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

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

登录后方可回帖

登 录
信息栏
公告:
私人站, 专注分享, 可在分享中适当提问, 但谢绝纯提问, 否则不再提醒一律删帖, 谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...