本帖最后由 lostbalance 于 2016-10-14 21:59 编辑
自从把编的工具箱共享给同事开始,虽然特意编了安装说明,但还是有好多人根本就不看说明,然后被叫过去帮忙安装,次数多了就好蛋疼了,但又不好说什么。于是打算整一个全自动的安装程序,但苦于水平有限,除了autolisp,其他基本上不懂,最终确认是acaddoc.lsp的方式做一个安装程序。
经过几天的努力,终于完成了。关键的几个调用函数,参考自明经,但下载时间太久,原作者信息丢失,深表歉意。
原来的参考程序有几个地方,我做了调整:
1. 原来有个移除搜索目录的函数,被我删除了,因为安装程序装了好几类内容。只能实现搜索目录卸载,感觉没太大意思。
2. 原来的添加启动组有问题,在明经找了一个可以正常用的。
3. 加了几个AutoCAD系统变量的控制。
大致就这些,欢迎试用讨论。
今天发布给同事试用的时候,发现全新安装的AutoCAD无法正常启动插件,查了下,好像是默认的AutoCAD不加载appload.arx的关系,修改了下启动组的函数,将以下代码替换到lsp里就可以。
- ;|= 将程序加入启动组
- @== (AddStartup AppName)
- #== return:
- par: AppName: [str] 完整路径
- sample: (AddStartup "e:\\12.lsp")
- ver: [1.0] by xshrimp @mjtd
- [1.1] by lostbalance
- ====================|;
- (defun AddStartup (AppName / $akey $skey loadctrlnum NumStartup acadpath loader)
- (setq acadpath (vl-filename-directory (findfile "acad.exe"))) ;;获取AutoCAD的安装路径
- (if (= (type appname) 'STR)
- (progn
- (setq
- $skey (strcat "HKEY_CURRENT_USER\" (vlax-product-key) "\\Profiles\" (getvar "CPROFILE") "\\Dialogs\\Appload\\Startup")
- $akey (strcat "HKEY_CURRENT_USER\" (vlax-product-key) "\\Applications\\AcadAppload" )
- )
- ;;加入启动组
- (setq NumStartup (vl-registry-read $skey "NumStartup"))
- (if NumStartup
- (progn
- (vl-registry-write $skey "NumStartup" (itoa (+ 1 (atoi NumStartup))))
- (vl-registry-write $skey (strcat (itoa (+ 1 (atoi NumStartup))) "Startup") AppName )
- )
- (progn
- (vl-registry-write $skey "NumStartup" "1")
- (vl-registry-write $skey "1Startup" AppName )
- )
- )
- ;;读取LoadCtrls的值,将这个值与2作“或”运算,再写回。这样可以保证AutoCAD启动时会加载Appload.arx模块。
- ;;不设置LOADCTRLS的话,加入启动组的程序无法正确加载,需要手动启动启动组确认后才可以
- (setq loadctrlnum (vl-registry-read $akey "LOADCTRLS"))
- (if loadctrlnum
- (vl-registry-write $akey "LOADCTRLS" (Boole 7 loadctrlnum 2))
- (vl-registry-write $akey "LOADCTRLS" 15)
- )
- (setq loader (vl-registry-read $akey "LOADER"))
- (if (not loader)
- (progn
- (vl-registry-write $akey "DESCRIPTION" "AcadAppload Command Module") ;;此条可以不加,注释性内容,不影响正常启动
- (vl-registry-write $akey "LOADER" (strcat acadpath "\\Appload.arx")) ;;全新安装或格式化后的AutoCAD默认不加载appload.arx,需添加
- )
- )
- ; T ;;这个T什么用?
- )
- nil
- )
- )
|