本帖最后由 nonsmall 于 2013-5-13 11:06 编辑
既然程序的加载路径和启动组的加入都已经实现 我们进一步处理就可以实现程序从本公司服务器上自动copy到个人电脑的自动升级: 大致思路如下: 1 程序第一次加载,可以把当前文件的路径和版本写入注册表,同时把程序加入启动组。 这步如果做安装包使用菜单调用更容易控制。 ;;lyy 支持appload加载、命令行(load "xx")加载和直接拖曳加载 (vl-load-com) (defun set_path (/ ) (while (/= 0 (getvar "cmdactive")) (command)) (princ "\n") (setq str (getvar "lastprompt")) (if (wcmatch (strcase str) "*(LOAD \"*") (setq n1 (vl-string-search "(LOAD \"" str) n2 (vl-string-search "\")" str) str (substr str (+ n1 8) (- n2 n1 7)) ) (setq str (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*" (substr (vl-registry-read "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*" "MRUList") 1 1) ) ) ) str ) 2 判断当前加载符合原注册表数据 可以通过文件最后编辑的时间来判断是否有更新的文件, (setq now_time (vl-file-systime str)) (setq new_time (vl-file-systime "z:\\2.lsp")) 如果是vlx,也可以加入一个TXT文本用于版本的控制。 (vl-get-resource str) ;copy file ;by nonsmall ;(copyfile 源文件 目标文件) (defun copyfile (from to / fso) (Setq fso (Vlax-Get-Or-Create-Object "Scripting.FileSystemObject" )) (Vlax-Invoke-Method fso 'CopyFile from to 1);overwrite (vlax-release-object fso) ) (copyfile "z:\\2.lsp" str) (load str);重新加载一次 |