2024年6月5日发(作者:)

绿色软件打包工具BoxedApp Packer使用说明

编译 王立群

一、概览

BoxedApp Packer是一款打包exe文件、DLL文件、ActiveX和其它文件为一个独立的

可执行文件的打包应用程序。用户可以放置exe文件所依赖的库、ActiveX控件和所有类型

的文件到这个可执行文件中。

BoxedApp Packer解决的主要问题是创建不需要安装的应用程序。而与此同时,用户将

自由地选择所创建应用程序的组件。用户可以使用任何第三方的DLL,任何ActiveX控件,

简单地赋给BoxedApp Packer打包应用程序的这些信息,它将生成一个自主运行的exe文件。

这种方法所打包的可执行文件在磁盘上不创建临时文件,它不修改注册表但确保所有嵌

入的文件仿佛真实存在那样地运行。当ActiveX/COM库在虚拟注册表中被注册时,嵌入的

文件被直接提取到内存。

此外,用户可以通过为这个可执行文件创建插件——指定的DLL进一步地拓展该应用

程序的功能。插件在应用程序启动时被调用。插件提供特定的API——BoxedApp SDK API,

它允许在运行时创建虚拟文件,用虚拟注册表工作,等等。这样,用户就可以创建真正灵活

的应用程序。例如,用户的应用程序,当它启动的时候,能够加载必要的DLL到整个网络

或整个Internet,然后仿佛它们真正在硬盘上一样地使用。

1、 虚拟文件

虚拟文件是仅生存在当前进程的文件。

BoxedApp的核心是在所谓的用户模式下调用操作系统的截取机制。与在内核模式下运

行系统不同,BoxedApp不要求安装驱动程序,就有系统管理员的权限。尤其是BoxedApp

截取有利于使用文件系统的应用程序的所有调用。

BoxedApp引进了虚拟文件的概念。虚拟文件是不实际存在于磁盘上的文件,但是,应

用程序运行时仿佛文件存在于这里。例如,当应用程序通过分配各自的调用打开虚拟文件

“C:”时,BoxedApp获取控制权并检测被打开文件,如果路径指向虚拟文件,

那么代替调用打开函数的原始文件,BoxedApp返回指向虚拟文件的虚拟句柄。

一组虚拟文件构成虚拟文件系统。

虚拟文件在如下情况下被使用:

1)、用户希望隐藏使用的第三方组件时。

2)、用户希望保护个人文件时(动画、视频、图像)。

3)、用户希望保护自己的知识产权等时。

4)、用户不希望浪费磁盘空间的时候。

5)、其它原因。

当用户在BoxedApp Packer中创建虚拟文件时,要指定它的属性。

1)、虚拟文件被创建的路径(完整路径或相对路径)。

2)、文件是否是插件。

3)、在虚拟注册表中,文件是否被注册为ActiveX控件或COM库。

用户也可以使用功能强大的Plugin API创建虚拟文件。

2、 虚拟注册表

BoxedApp Packer提供所谓的“虚拟注册表”,它是一组仅对打包应用程序可视的注册键

和值。

虚拟注册表在下述情况下可用:

1)、用户希望提供某些注册设置给应用程序时。

2)、其他情况。

3、 虚拟路径

虚拟路径可以是一个相对路径(这样的路径是相对于exe文件的目录)。例如:或

者是完整路径:C:。

它可以包含环境变量(例如:如果用户想使用变量%USERPROFILE%,就指定它为

)。例如:

另外,变量也是可用的。

例如:

4、 插件

插件是文件的独特分类,它们是拓展所创建应用程序功能的Dlls。插件可以使用完整功

能的BoxedApp SDK API,即有创建任何虚拟文件的能力和虚拟注册表操作的能力,等等。

5、 使用ActiveX控件

当用户添加新的文件到项目时,可以指定它为ActiveX控件或COM库。当应用程序启

动时,它需要在虚拟注册表中被注册。例如,用户的应种程序需要播放Flash动画,那么用

户可以简单地添加文件,并指定这个文件为虚拟文件,勾选“在虚拟注册表中注

册”复选框(register in virtual registry),这样打包的应用程序就不再依赖客户计算机是否安

装有flash player。

这是为什么呢?原因是当应用程序启动时,它调用注册指定ActiveX控件的函数(它实

际上可能是一个虚拟文件)。同时,每次函数运行,指定的标识(flag)保留,而所有变化

保存在虚拟环境中。换句话说,实际的注册表没有被修改,其他的应用程序代码就像ActiveX

控件被实际安装到系统那样运行。

这里面,尤其重要的是原始exe文件的修改不需要。

6、 嵌入的命令行

如果用户指定嵌入的参数,那么最终的exe文件将仿佛参数被真正传递给程序那样地运

行。也可以指定变量,可以在下一节中读到更多支持的变量。

例如,如果用户要打包文件,添加虚拟文件“”,指定

”作为优先的命令行,打包的文件将显示从

虚拟文件中加载的“”。

7、 变量

BoxedApp Packer支持能够在优先命令行或虚拟路径中指定的变量。

1)、:包含打包exe文件的目录。

2)、:当前目录。

3)、:任何环境变量,例如

4)、:exe的文件名称,例如。

5)、:exe文件的扩展名,例如exe。

6)、:不含扩展名的exe文件名,例如

notepad。

7)、:exe文件的完整路径,例如C:。

8)、:当打包的exe文件启动时指定的命令行,用户可以使

用它添加其它参数,例如/新开关。

9)、:当打包的exe文件启动时,指定的命令行,没有exe路径,

例如"" /C 。用法:

Arg1 Arg2。它相当于: /C Arg1 Arg2。