四时宝库

程序员的知识宝库

用freewrap把Tcl/TK打包成exe可执行文件

freewrap可以把Tcl/Tk程序打包成单一可执行文件,便于分发。

freewrap也可以作为临时解释器使用。但是实话实说,因为有各种限制,只适合救急。

支持Windows和Linux系统

项目网址

项目网址(开源):sourceforge.net/projects/freewrap/

下载地址:sourceforge.net/projects/freewrap/files/freewrap/freeWrap 6.75
点击 freewrap675.zip 下载Windows版
国外老牌开源平台,速度慢、有时连不上。下不了换个时间段试试。

介绍及文档:freewrap.dengensys.com
以前是freewrap.sourceforge.net,现在会跳转到上面的新网址


原理简介

freewrap把所有文件添加到压缩包里,做为zvfs虚拟文件系统来用(入门经典这本书里有zvfs内容)。打包后的exe可以直接运行,也可以用压缩软件打开。在压缩包里,可以看到freewrap包含了Tcl运行环境,以及你打包的文件。

它通过压缩包密码来保护知识产权,每次打包都会随机生成密码。查看压缩包内的文件内容时就会要密码。


文件

下载并解压缩后,有docs、win32、win64三个目录,第一个是说明文档,另外两个分别对应32位旧系统和当前主流的64位系统。

在win32、win64目录里,都有两个执行程序:

freewrap.exe —— 内含TK图形界面的打包程序,打包后为图形界面程序

freewrapTCLSH.exe —— 不带图形界面的打包程序,只支持命令行,但是体积小一些


使用方法

把要打包的文件和freewrap.exe / freewrapTCLSH.exe 放在同一目录里,然后进入PowerShell(目录空白处按住Shift后点鼠标右键,有"在此处打开PowerShell窗口")或者CMD命令提示符(需要自己切换到freewrap目录)

敲命令行:

# 单个文件
freewrap.exe 文件名.tcl
freewrapTCLSH.exe 文件名.tcl

# 多个文件
freewrap.exe 程序主文件.tcl 文件1.tcl 文件2.jpg 文件3.png 文件4.dll ...
freewrapTCLSH.exe 程序主文件.tcl 文件1.tcl 文件2.jpg 文件3.png 文件4.dll ...

会在当前目录下,生成exe文件。

权限限制

打包后的文件,相当于"只读"模式。不能修改和删除。如果要写入文件或者配合文件数据库(比如Sqlite),把主程序和其它不用修改的文件一起打包,然后把 打包后的exe 写入文件/数据库 放在同一目录里。


路径规则

前面提到freewrap以压缩包zvfs虚拟文件系统的方式运行,所以打包后的文件也要以虚拟文件系统的路径来调用。

路径规则是:打包时,生成当前freewrap所在位置的同名路径,并用 /zvfs/ 替换盘符
比如,我放在 D:\tools\freewrap\win64 目录里,打包后用压缩软件打开exe文件,就会看到里面有个 tools 目录,而所有的打包文件都位于 tools\freewrap\win64 里:


而原本的 D:\tools\freewrap\win64 路径,对应就变成了 /zvfs/tools/freewrap/win64

使用 " / " 即是为了与Linux兼容,也是为了规避\转义字符,否则就得连写两次 \\


下面通过两个简单的文件,以命令行 freewrapTCLSH.exe 来举例

T1.tcl正常情况下的源码(调用T2.tcl):
source T2.tcl

T2.tcl的源码是(显示一段字符串):
puts "\u8c61\u55bb"

其中,T1.tcl 为主文件,或者说是程序起始文件。

在打包后,为了匹配zvfs系统,需要把T1.tcl改成:

source /zvfs/tools/freewrap/win64/T2.tcl

不要遗漏 zvfs 前面的 /

路径大小写必须完全匹配!

用 freewrapTCLSH.exe 打包后,就可以验证了。


我猜你此刻想说

是,我也觉得改路径很费劲。

所以,为了改路径方便点,把freewrap和要打包的文件统统放在D盘或者C盘下面!

这样,T1只需要改成 source /zvfs/T2.tcl 就行了

打包后的文件,直接位于压缩包里,如图:

更偷懒的方法:不改路径,正常写。只把T1.tcl打包,随后把T1.exe和T2.tcl一起发给别人。


其他问题请查文档,我也就了解到这里。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接