明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10460|回复: 36

[风之影][解析]二次开发安装程序

    [复制链接]
发表于 2011-10-15 11:16 | 显示全部楼层 |阅读模式
本帖最后由 cabinsummer 于 2011-10-15 14:25 编辑

  我于9月20日在明经发表帖子二次开发安装程序 http://bbs.mjtd.com/thread-89457-1-1.html,引来多方争议。
  近期重新为公司进行二次开发,苦于不熟悉的同事太多,需要一一为他们配置,烦不胜烦!所以才想到此招,减轻自己的工作量,也希望他们能亲自动手、丰衣足食。我把这个方法公布在明经之后,遭到飞诗等人攻击,认为我这个是病毒或者流氓软件一类的东西。
  下面对我所说的安装程序进行分析。
  AutoCAD的启动顺序
文件使用者
acad2000.lspAutoCAD
acad.rxUser
acad.lspUser
acad2000doc.lspAutoCAD
acetutil.fasExpress Tools
acaddoc.lspUser
mymenu.mncUser
mymenu.mnlUser
acad.mncAutoCAD
acad.mnlAutoCAD
acetmain.mncExpress Tools
acetmain.mnlExpress Tools
s::startupUser

  Autodesk公司自己也说可以在s::startup下完成程序的安装。
  我开发的程序就是依据这个原理而来。将安装程序写到acaddoc.lsp中,这个文件里内容见前面链接。此文件连同安装包及一个名为setup.dwg的文件一起放到公司服务器的某个地方,然后通知大家。多加一个setup.dwg是为了方便某些年纪大的同事,他们确实连acaddoc.lsp都不会加载,告诉他们双击setup.dwg即可完成安装。二次开发的功能由新加载的mnl实现,并不由安装程序acaddoc.lsp实现。由于只打开一次setup.dwg,基于lsp只作用于当前文件的原理,载有安装部分的acaddoc.lsp只运行一次,作用于setup.dwg文件,setup.dwg在安装后自动关闭,所以acaddoc.lsp对其它图形文件不产生任何影响,因此不会出现飞诗说的3Q大战。谁也不会是神经病,天天点击那个setup.dwg吧?我相信大家都是正常人,那个文件打开一次就够了。
  除此之外,我在二次开发程序中写入升级的部分。以后我只要将新程序上传至公司服务器,其他同事即可直接更新,使用新功能。更新功能原理就是一个从服务器上下载程序,编译菜单的函数,可以手动启动也可加载至AutoCAD的自启动程序里。在服务器安装目录内设置一个version.inf文件,通过读取注册表中的版本信息进行比较决定是否下载更新。
  而我自己则开发一个上传至服务器的函数,每次有新功能了就一键解决。
  值得注意的是:安装程序并不复制自身,只作用于setup.dwg,这一点和病毒有明显区别,病毒复制自身并作用于所有文件,但不排除某些开发者的恶意改动。倒是很像某些网站的挂马程序,让用户点击后木马(那个自动更新就类似这个功能)潜入,伺机上传下载其它信息,在安装包内加载电脑恶意自启动脚本则危害更大。
  本人在明经上发帖的源码都是经过实践检验过的,给我周围的同事带来方便。也许环境所处不同,互联网上的某些人不习惯。往往有不少缺乏实践的人坐而论道,对他人指摘文字。我不是旷世高手,也不靠编程吃饭。仅仅是将自己在工作中的一些经验分享给大家,公布源码是为了让大家一起学习。我发现一个现象,大部分编译过后的程序发到网上,拍砖者甚少,顶多不好用就扔一边。反倒是公布源码者容易起争议。

评分

参与人数 5明经币 +5 金钱 +60 收起 理由
用户3766035971 + 5 很给力!
革天明 + 1 赞一个!
自贡黄明儒 + 1 + 10 很给力!
caoyin + 2 + 15 赞一个!
highflybir + 1 + 30 对CAD启动原理的讲解比较深刻。

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-10-15 14:10 | 显示全部楼层
highflybird 发表于 2011-10-15 14:04
正是,就是连setup.dwg它都不让你关闭。我没理解错误。
你这个安装方法有很多可取的地方,但是唯一让我觉得 ...

手动关闭也不影响安装。天正不会连手动关闭也不允许吧?
回复 支持 0 反对 1

使用道具 举报

发表于 2011-10-15 12:47 | 显示全部楼层
支持一下,东西的通用性很难一致,所以符合自己的需求就可以了,不用在意谁是谁非。
正所谓众口难调。
发表于 2011-10-15 12:58 | 显示全部楼层
我相信大家也不是故意来拍砖,每种方法都有知己的特点,比如你这个方法,很多傻瓜杀毒软件回会出病毒提示,但懂的人就无所谓,不懂的人有开始叫起来了,还有每个人的习惯也不同,有的可能嫌这样麻烦,用vbs或lisp写个安装程序安装,或者用秋枫的安装程序,有很多选择,总之,适合自己的就是好的。楼主,也不用太在意
发表于 2011-10-15 13:10 | 显示全部楼层
本帖最后由 highflybird 于 2011-10-15 13:14 编辑

其实fsxm有个意见(与病毒无关)我认为是对的。 不建议把安装程序写到acaddoc.lsp中,因为有很多程序也要用这个譬如天正。因为改写这个程序或者用这个程序来启动cad,很可能导致其他程序不能运行。

点评

在某些情况下重载会一起一些问题。  发表于 2011-10-15 14:41
highflybird理解错误,我这个acaddoc.lsp不是autocad自带的,它们两者的作用时间和作用域是不一样的,同名文件重载应该可以理解吧?  发表于 2011-10-15 13:47
我不怎么懂,但我觉得highflybird是非一般的高手,所以我宁愿相信他  发表于 2011-10-15 13:21
 楼主| 发表于 2011-10-15 13:25 | 显示全部楼层
highflybird 发表于 2011-10-15 13:10
其实fsxm有个意见(与病毒无关)我认为是对的。 不建议把安装程序写到acaddoc.lsp中,因为有很多程序也要用 ...

我这个方法只启动acaddoc.lsp一次,仅仅作用于setup.dwg,安装完毕后setup.dwg自动关闭。由于lsp的特点,加载的函数仅仅作用于当前文件,所以不会出现导致其它程序不能运行的情况。即使天正用另一个acaddoc.lsp,由于setup.dwg已经关闭,安装程序acaddoc.lsp对已打开的图形文件不起作用,安装后新图形仍然调用的是以前的acaddoc.lsp。我正是试验过,所以才拿来供大家参考。
 楼主| 发表于 2011-10-15 13:31 | 显示全部楼层
看来明经上有不少人的水平已经超过Autodesk公司的研发人员了,在此感到钦佩!
发表于 2011-10-15 13:58 | 显示全部楼层
cabinsummer 发表于 2011-10-15 13:25
我这个方法只启动acaddoc.lsp一次,仅仅作用于setup.dwg,安装完毕后setup.dwg自动关闭。由于lsp的特点, ...

不是所有的程序都让你自动关闭的。
譬如你打开了天正,然后你双击setup.dwg,它 就不会自动关闭。
 楼主| 发表于 2011-10-15 14:02 | 显示全部楼层
highflybird 发表于 2011-10-15 13:58
不是所有的程序都让你自动关闭的。
譬如你打开了天正,然后你双击setup.dwg,它 就不会自动关闭。

关闭的是setup.dwg这个文件,而不是CAD
发表于 2011-10-15 14:04 | 显示全部楼层
本帖最后由 highflybird 于 2011-10-15 14:07 编辑
cabinsummer 发表于 2011-10-15 14:02
关闭的是setup.dwg这个文件,而不是CAD
正是,就是连setup.dwg它都不让你关闭。我没理解错误。
你这个安装方法有很多可取的地方,但是唯一让我觉得有问题的就是这个acaddoc.lsp.你需要经过严格的测试。

点评

说实话,我只能拿我自己公司的测试,不可能测试所有情况。如果说对其它开发者有冲突,我觉得最可能的办法就是加上这样一个函数,功能是搜索其它acaddoc.lsp,然后打包备份,安装完毕后再还原,最后关闭setup.dwg  发表于 2011-10-15 14:19
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 08:17 , Processed in 1.219273 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表