cabinsummer 发表于 2011-10-15 11:16:31

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

本帖最后由 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,这一点和病毒有明显区别,病毒复制自身并作用于所有文件,但不排除某些开发者的恶意改动。倒是很像某些网站的挂马程序,让用户点击后木马(那个自动更新就类似这个功能)潜入,伺机上传下载其它信息,在安装包内加载电脑恶意自启动脚本则危害更大。
  本人在明经上发帖的源码都是经过实践检验过的,给我周围的同事带来方便。也许环境所处不同,互联网上的某些人不习惯。往往有不少缺乏实践的人坐而论道,对他人指摘文字。我不是旷世高手,也不靠编程吃饭。仅仅是将自己在工作中的一些经验分享给大家,公布源码是为了让大家一起学习。我发现一个现象,大部分编译过后的程序发到网上,拍砖者甚少,顶多不好用就扔一边。反倒是公布源码者容易起争议。

cabinsummer 发表于 2011-10-15 14:10:28

highflybird 发表于 2011-10-15 14:04 static/image/common/back.gif
正是,就是连setup.dwg它都不让你关闭。我没理解错误。
你这个安装方法有很多可取的地方,但是唯一让我觉得 ...

手动关闭也不影响安装。天正不会连手动关闭也不允许吧?

jenlin 发表于 2024-8-1 15:29:44

加标备注留待学习。

LLXXZZ 发表于 2011-10-15 12:47:43

支持一下,东西的通用性很难一致,所以符合自己的需求就可以了,不用在意谁是谁非。
正所谓众口难调。

xiaoyingzi 发表于 2011-10-15 12:58:20

我相信大家也不是故意来拍砖,每种方法都有知己的特点,比如你这个方法,很多傻瓜杀毒软件回会出病毒提示,但懂的人就无所谓,不懂的人有开始叫起来了,还有每个人的习惯也不同,有的可能嫌这样麻烦,用vbs或lisp写个安装程序安装,或者用秋枫的安装程序,有很多选择,总之,适合自己的就是好的。楼主,也不用太在意

highflybird 发表于 2011-10-15 13:10:49

本帖最后由 highflybird 于 2011-10-15 13:14 编辑

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

cabinsummer 发表于 2011-10-15 13:25:10

highflybird 发表于 2011-10-15 13:10 static/image/common/back.gif
其实fsxm有个意见(与病毒无关)我认为是对的。 不建议把安装程序写到acaddoc.lsp中,因为有很多程序也要用 ...

我这个方法只启动acaddoc.lsp一次,仅仅作用于setup.dwg,安装完毕后setup.dwg自动关闭。由于lsp的特点,加载的函数仅仅作用于当前文件,所以不会出现导致其它程序不能运行的情况。即使天正用另一个acaddoc.lsp,由于setup.dwg已经关闭,安装程序acaddoc.lsp对已打开的图形文件不起作用,安装后新图形仍然调用的是以前的acaddoc.lsp。我正是试验过,所以才拿来供大家参考。

cabinsummer 发表于 2011-10-15 13:31:47

看来明经上有不少人的水平已经超过Autodesk公司的研发人员了,在此感到钦佩!

highflybird 发表于 2011-10-15 13:58:49

cabinsummer 发表于 2011-10-15 13:25 static/image/common/back.gif
我这个方法只启动acaddoc.lsp一次,仅仅作用于setup.dwg,安装完毕后setup.dwg自动关闭。由于lsp的特点, ...

不是所有的程序都让你自动关闭的。
譬如你打开了天正,然后你双击setup.dwg,它 就不会自动关闭。

cabinsummer 发表于 2011-10-15 14:02:24

highflybird 发表于 2011-10-15 13:58 static/image/common/back.gif
不是所有的程序都让你自动关闭的。
譬如你打开了天正,然后你双击setup.dwg,它 就不会自动关闭。

关闭的是setup.dwg这个文件,而不是CAD

highflybird 发表于 2011-10-15 14:04:27

本帖最后由 highflybird 于 2011-10-15 14:07 编辑

cabinsummer 发表于 2011-10-15 14:02 http://bbs.mjtd.com/static/image/common/back.gif
关闭的是setup.dwg这个文件,而不是CAD正是,就是连setup.dwg它都不让你关闭。我没理解错误。
你这个安装方法有很多可取的地方,但是唯一让我觉得有问题的就是这个acaddoc.lsp.你需要经过严格的测试。
页: [1] 2 3 4
查看完整版本: [风之影][解析]二次开发安装程序