自动打包、编译、备份、加密lisp源码!
本帖最后由 MUSIC-DIE 于 2023-6-11 17:32 编辑在lisp开发过程中有以下痛点:
1、管理lisp源码的过程中,如果使用vlide编译,每个lisp源码都会单独编译出一个fas文件,而我们需要的只是一个fas文件包含所有功能
2、多个lisp源码文件,有利于我们单独管理每个功能,不至于一个文件报错,所有功能停摆
3、GIT版本管理很方便,学习却有门槛
4、源码被随便反编译
附件在尽可能简单的基础上解决了这部分问题:
1、附件中命令运行后,会将指定文件夹下的文件合并为一个lisp源码文件
2、将此源码文件备份起来,以备错误操作后,可以查看以前的正确源代码
3、备份后自动调用Vlide进行编译,并输出到指定的文件夹
4、集成了海大师(tryhi)的可变长参数功能,如果在代码中指定了可变长的函数,将自动对其进行处理,可在一定程度上加密你的代码
注:代码中使用了论坛中其他人的源码,已不可考,对此表示感谢
此图中圈出了需要自定义的地方
补充方法:
(vl-load-com)
(defun Get-Folder ( NAME / get)
(if (setq get (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "Shell.Application") 'BrowseForFolder 0 NAME 1))
(setq get (vlax-get-property (vlax-get-property get 'self) 'path))
)
(if (vl-file-directory-p get) get)
)
鉴于很多人由于各种问题无法使用本插件
移除了导致问题的方法以及对WMCMP命令进行了更简单化的处理,现在不需要你进行任何修改,只需要保证以下两点就可以正常使用
1、执行WMCMP命令之后让选择保存编译后fas文件地址,此地址不能在磁盘根目录,也就是D:\\TEST可以,D:\\不行
2、所选择的目录下必须有一个名为备份的文件夹 也就是D:\\TEST\\备份此文件夹将存储此次编译的备份
第二步选择的文件夹为源码所在地址
cghdy 发表于 2022-9-22 09:35
有点懵,定义好了PATH和file:dir:s,但MFC无法赋上值,(close MFC)报错提示“streamp nil”,备份文件和 ...
更新版已经移除了这个方法,本意是让cad窗口置前 感谢楼主的分享!
想请教一下需要修改的部份:
①假设我的电脑windows login name是Administrator,那是不是改成
getvar "Administrator")) "Administrator")
②打包完成的文档存放位置:意思就是打包完的文档看是要放在哪里文件夹,对吧!
③合并的目标文档,备份文档:这个我没修改
④源文档和打包完成文档的存放地址关系:这个我没修改
⑤运行後出现错误消息:损坏的参数类型: stringp nil 本帖最后由 cghdy 于 2022-9-22 09:57 编辑
MUSIC-DIE 发表于 2022-9-21 13:58
运行逻辑:给定想要放置编译后fas文件地址也就是path变量
程序会在这个文件地址下生成一个备份文件夹...
有点懵,定义好了PATH和file:dir:s,但MFC无法赋上值,(close MFC)报错提示“streamp nil”,备份文件和文件夹也未生成。
——问题找到了,open函数只能生成文件,不能生成文件夹。
还有一个问题就是(CKQZ (vla-get-Name (*DOC*)))中*DOC*未定义,不要这个函数也能运行,不明白这个函数的具体作用。
哇,这么棒。
感谢分享 :victory::victory::victory: 被免费分享是啥意思呢 感谢分享 p-3-ianlcc 发表于 2022-9-21 13:07
感谢楼主的分享!
想请教一下需要修改的部份:
①假设我的电脑windows login name是Administrator,那是 ...
运行逻辑:给定想要放置编译后fas文件地址也就是path变量
程序会在这个文件地址下生成一个备份文件夹
源文件和打包文件地址关系,是path和你的lisp源码文件地址关系 不会写的话这个file:dir:s就是你的源码文件夹地址 刚好需要这样的程序 好东西,感谢分导! 谢谢分享,学习学习!